Skip to content

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

@derFunk

Description

@derFunk

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

.switchMap((req) => Stream.fromFuture(searchService.search(req.state)))

..which in turn executes this:

To Reproduce 🔍

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions