Pull embeddings once diff sync is done
This commit is contained in:
parent
eb4daf331a
commit
32a5adb6d8
|
@ -34,7 +34,7 @@ import 'package:photos/services/memories_service.dart';
|
|||
import 'package:photos/services/push_service.dart';
|
||||
import 'package:photos/services/remote_sync_service.dart';
|
||||
import 'package:photos/services/search_service.dart';
|
||||
import "package:photos/services/semantic_search_service.dart";
|
||||
import 'package:photos/services/semantic_search/semantic_search_service.dart';
|
||||
import "package:photos/services/storage_bonus_service.dart";
|
||||
import 'package:photos/services/sync_service.dart';
|
||||
import 'package:photos/services/trash_sync_service.dart';
|
||||
|
@ -190,7 +190,7 @@ Future<void> _init(bool isBackground, {String via = ''}) async {
|
|||
});
|
||||
}
|
||||
FeatureFlagService.instance.init();
|
||||
SemanticSearchService.instance.init();
|
||||
SemanticSearchService.instance.init(preferences);
|
||||
|
||||
// Can not including existing tf/ml binaries as they are not being built
|
||||
// from source.
|
||||
|
|
|
@ -17,7 +17,7 @@ import 'package:photos/models/search/generic_search_result.dart';
|
|||
import 'package:photos/models/search/search_result.dart';
|
||||
import 'package:photos/services/collections_service.dart';
|
||||
import "package:photos/services/location_service.dart";
|
||||
import "package:photos/services/semantic_search_service.dart";
|
||||
import 'package:photos/services/semantic_search/semantic_search_service.dart';
|
||||
import "package:photos/states/location_screen_state.dart";
|
||||
import "package:photos/ui/viewer/location/location_screen.dart";
|
||||
import 'package:photos/utils/date_time_util.dart';
|
||||
|
|
18
lib/services/semantic_search/embedding_store.dart
Normal file
18
lib/services/semantic_search/embedding_store.dart
Normal file
|
@ -0,0 +1,18 @@
|
|||
import "package:photos/services/semantic_search/remote_embedding.dart";
|
||||
import "package:shared_preferences/shared_preferences.dart";
|
||||
|
||||
class EmbeddingStore {
|
||||
EmbeddingStore._privateConstructor();
|
||||
|
||||
static final EmbeddingStore instance = EmbeddingStore._privateConstructor();
|
||||
|
||||
late SharedPreferences _preferences;
|
||||
|
||||
Future<void> init(SharedPreferences preferences) async {
|
||||
_preferences = preferences;
|
||||
}
|
||||
|
||||
Future<List<RemoteEmbedding>> fetchEmbeddings() async {
|
||||
return [];
|
||||
}
|
||||
}
|
30
lib/services/semantic_search/remote_embedding.dart
Normal file
30
lib/services/semantic_search/remote_embedding.dart
Normal file
|
@ -0,0 +1,30 @@
|
|||
import "dart:convert";
|
||||
|
||||
class RemoteEmbedding {
|
||||
final int fileID;
|
||||
final String model;
|
||||
final String encryptedEmbedding;
|
||||
final String decryptionHeader;
|
||||
final int updationTime;
|
||||
|
||||
RemoteEmbedding({
|
||||
required this.fileID,
|
||||
required this.model,
|
||||
required this.encryptedEmbedding,
|
||||
required this.decryptionHeader,
|
||||
required this.updationTime,
|
||||
});
|
||||
|
||||
factory RemoteEmbedding.fromMap(Map<String, dynamic> map) {
|
||||
return RemoteEmbedding(
|
||||
fileID: map['fileID']?.toInt() ?? 0,
|
||||
model: map['model'] ?? '',
|
||||
encryptedEmbedding: map['encryptedEmbedding'] ?? '',
|
||||
decryptionHeader: map['decryptionHeader'] ?? '',
|
||||
updationTime: map['updationTime']?.toInt() ?? 0,
|
||||
);
|
||||
}
|
||||
|
||||
factory RemoteEmbedding.fromJson(String source) =>
|
||||
RemoteEmbedding.fromMap(json.decode(source));
|
||||
}
|
|
@ -6,10 +6,14 @@ import "package:computer/computer.dart";
|
|||
import "package:flutter/services.dart";
|
||||
import "package:logging/logging.dart";
|
||||
import "package:path_provider/path_provider.dart";
|
||||
import "package:photos/core/event_bus.dart";
|
||||
import "package:photos/db/files_db.dart";
|
||||
import "package:photos/events/sync_status_update_event.dart";
|
||||
import "package:photos/models/embedding.dart";
|
||||
import "package:photos/models/file/file.dart";
|
||||
import "package:photos/services/semantic_search/embedding_store.dart";
|
||||
import "package:photos/utils/thumbnail_util.dart";
|
||||
import "package:shared_preferences/shared_preferences.dart";
|
||||
|
||||
class SemanticSearchService {
|
||||
SemanticSearchService._privateConstructor();
|
||||
|
@ -25,8 +29,15 @@ class SemanticSearchService {
|
|||
Future<List<EnteFile>>? _ongoingRequest;
|
||||
PendingQuery? _nextQuery;
|
||||
|
||||
Future<void> init() async {
|
||||
Future<void> init(SharedPreferences preferences) async {
|
||||
await _loadModel();
|
||||
await EmbeddingStore.instance.init(preferences);
|
||||
Bus.instance.on<SyncStatusUpdate>().listen((event) async {
|
||||
if (event.status == SyncStatus.diffSynced) {
|
||||
EmbeddingStore.instance.fetchEmbeddings();
|
||||
}
|
||||
});
|
||||
|
||||
_computeMissingEmbeddings();
|
||||
}
|
||||
|
Loading…
Reference in a new issue