algoliasearch-helper-flutter icon indicating copy to clipboard operation
algoliasearch-helper-flutter copied to clipboard

HitSearcher is fetching data from Algolia already when just initially adding a stream listener

Open derFunk opened this issue 1 year ago • 3 comments

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);

⚠️ As soon as I call 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): https://github.com/algolia/algoliasearch-helper-flutter/blob/0b0154a5aed1a198239cc957ab05a68abbbe1d2a/helper/lib/src/searcher/hits_searcher.dart#L272

..which in turn executes this: https://github.com/algolia/algoliasearch-helper-flutter/blob/0b0154a5aed1a198239cc957ab05a68abbbe1d2a/helper/lib/src/service/algolia_hits_search_service.dart#L77

To Reproduce 🔍

  1. Initialize HitsSearcher()
  2. Add a listener function to the response stream
  3. :x: 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 ❤️

derFunk avatar Jan 18 '24 17:01 derFunk

I am encountering the same issue. Did you manage to solve it maybe?

ivangr1 avatar Apr 03 '24 14:04 ivangr1

One Year Later... How did you work around this?

apetroaeiandrei avatar Dec 03 '24 16:12 apetroaeiandrei