-
Notifications
You must be signed in to change notification settings - Fork 23
Description
Describe the bug 🐛
TL;DR:
Algolia backend gets called with a search immediately after adding a listener function to the response stream, even before actively starting a search by executing the hitsSearcher.query(String query) method.
Long version:
I'm following Getting started with Flutter Helper, but want to use algolia_helper_flutter without infinite_scroll_pagination and following clean architecture using the BLoC pattern.
I'm initializing the HitsSearcher in my BLoC constructor the common way like this:
_productsSearcher = HitsSearcher(applicationID: 'latency',
apiKey: '927c3fe76d4b52c5a2912973f35a3077',
indexName: 'STAGING_native_ecom_demo_products');I also want to add a listener to the responses stream as soon as responses are coming in after queries.
I can do that with
_productsSearcher.responses.listen(_searchPageListener);listen() to add the listener function, HitsSearcher executes a call to the Algolia backend. This I don't want, because I'm still in the setup phase in my BLoC constructor.
This call is happening because when accessing the responses stream, this code is executed: searchService.search(req.state):
| .switchMap((req) => Stream.fromFuture(searchService.search(req.state))) |
..which in turn executes this:
algoliasearch-helper-flutter/helper/lib/src/service/algolia_hits_search_service.dart
Line 77 in 0b0154a
| final responses = await _client.search( |
To Reproduce 🔍
- Initialize HitsSearcher()
- Add a listener function to the response stream
- ❌ See listener function being called immediately, even without a call to hitsSearcher.query() before.
Expected behavior 💭
Algolia search does not get called immediately when adding the response listener, but only after calling searcher.query()
Environment:
- OS: Android API 33
- Library Versions
- algolia_helper_flutter: 0.5.0 and algolia_helper_flutter: ^1.0.0-pre as well
Additional context
Thanks for supporting Flutter ❤️