diff --git a/lib/main.dart b/lib/main.dart index 8e553280b..13522cc09 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -193,7 +193,9 @@ Future _init(bool isBackground, {String via = ''}) async { }); } unawaited(FeatureFlagService.instance.init()); - unawaited(SemanticSearchService.instance.init()); + unawaited( + SemanticSearchService.instance.init(isAppInForeground: !isBackground), + ); // Can not including existing tf/ml binaries as they are not being built // from source. // See https://gitlab.com/fdroid/fdroiddata/-/merge_requests/12671#note_1294346819 diff --git a/lib/services/semantic_search/semantic_search_service.dart b/lib/services/semantic_search/semantic_search_service.dart index 5f21292fb..cdbfd9e83 100644 --- a/lib/services/semantic_search/semantic_search_service.dart +++ b/lib/services/semantic_search/semantic_search_service.dart @@ -48,7 +48,7 @@ class SemanticSearchService { get hasInitialized => _hasInitialized; - Future init() async { + Future init({bool isAppInForeground = true}) async { if (!LocalSettings.instance.hasEnabledMagicSearch()) { return; } @@ -59,7 +59,7 @@ class SemanticSearchService { _hasInitialized = true; await EmbeddingsDB.instance.init(); await EmbeddingStore.instance.init(); - await _setupCachedEmbeddings(); + await _setupCachedEmbeddings(isAppInForeground); Bus.instance.on().listen((event) { // Diff sync is complete, we can now pull embeddings from remote unawaited(sync()); @@ -137,7 +137,7 @@ class SemanticSearchService { _logger.info("Indexes cleared for $kCurrentModel"); } - Future _setupCachedEmbeddings() async { + Future _setupCachedEmbeddings(bool shouldListenForUpdates) async { _logger.info("Setting up cached embeddings"); final startTime = DateTime.now(); final cachedEmbeddings = await EmbeddingsDB.instance.getAll(kCurrentModel); @@ -147,12 +147,14 @@ class SemanticSearchService { ); _cachedEmbeddings.addAll(cachedEmbeddings); _logger.info("Cached embeddings: " + _cachedEmbeddings.length.toString()); - EmbeddingsDB.instance.getStream(kCurrentModel).listen((embeddings) { - _logger.info("Updated embeddings: " + embeddings.length.toString()); - _cachedEmbeddings.clear(); - _cachedEmbeddings.addAll(embeddings); - Bus.instance.fire(EmbeddingUpdatedEvent()); - }); + if (shouldListenForUpdates) { + EmbeddingsDB.instance.getStream(kCurrentModel).listen((embeddings) { + _logger.info("Updated embeddings: " + embeddings.length.toString()); + _cachedEmbeddings.clear(); + _cachedEmbeddings.addAll(embeddings); + Bus.instance.fire(EmbeddingUpdatedEvent()); + }); + } } Future _backFill() async {