From 9232cd150bf3c64de7e42f0d32902f7409b822e3 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Fri, 5 Jul 2024 13:26:26 +0530 Subject: [PATCH] [mob][photos] SemanticSearchService minor changes --- .../semantic_search/semantic_search_service.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mobile/lib/services/machine_learning/semantic_search/semantic_search_service.dart b/mobile/lib/services/machine_learning/semantic_search/semantic_search_service.dart index 1cc99073c2..dd5f52f894 100644 --- a/mobile/lib/services/machine_learning/semantic_search/semantic_search_service.dart +++ b/mobile/lib/services/machine_learning/semantic_search/semantic_search_service.dart @@ -61,6 +61,7 @@ class SemanticSearchService { await EmbeddingsDB.instance.init(); await _loadImageEmbeddings(); Bus.instance.on().listen((event) { + if (!_hasInitialized) return; _embeddingLoaderDebouncer.run(() async { await _loadImageEmbeddings(); }); @@ -74,6 +75,13 @@ class SemanticSearchService { }); } + Future dispose() async { + if (!_hasInitialized) return; + _hasInitialized = false; + await ClipTextEncoder.instance.release(); + _cachedImageEmbeddings.clear(); + } + Future sync() async { if (_isSyncing) { return; @@ -90,6 +98,11 @@ class SemanticSearchService { _cachedImageEmbeddings.isNotEmpty; } + bool bothClipModelsLoaded() { + return ClipImageEncoder.instance.isInitialized && + ClipTextEncoder.instance.isInitialized; + } + // searchScreenQuery should only be used for the user initiate query on the search screen. // If there are multiple call tho this method, then for all the calls, the result will be the same as the last query. Future<(String, List)> searchScreenQuery(String query) async {