[mob][photos] Decrypt remote embeddings in computer

This commit is contained in:
laurenspriem 2024-05-23 18:12:41 +05:30
parent 31dee1249d
commit 3e79c8cf28

View file

@ -1,6 +1,7 @@
import "dart:async"; import "dart:async";
import "dart:convert"; import "dart:convert";
import "package:computer/computer.dart";
import "package:logging/logging.dart"; import "package:logging/logging.dart";
import "package:photos/core/network/network.dart"; import "package:photos/core/network/network.dart";
import "package:photos/db/files_db.dart"; import "package:photos/db/files_db.dart";
@ -16,6 +17,8 @@ import "package:shared_preferences/shared_preferences.dart";
class RemoteFileMLService { class RemoteFileMLService {
RemoteFileMLService._privateConstructor(); RemoteFileMLService._privateConstructor();
static final Computer _computer = Computer.shared();
static final RemoteFileMLService instance = static final RemoteFileMLService instance =
RemoteFileMLService._privateConstructor(); RemoteFileMLService._privateConstructor();
@ -107,15 +110,17 @@ class RemoteFileMLService {
final input = EmbeddingsDecoderInput(embedding, fileKey); final input = EmbeddingsDecoderInput(embedding, fileKey);
inputs.add(input); inputs.add(input);
} }
// todo: use compute or isolate return _computer.compute<Map<String, dynamic>, Map<int, FileMl>>(
return decryptFileMLComputer( _decryptFileMLComputer,
{ param: {
"inputs": inputs, "inputs": inputs,
}, },
); );
} }
Future<Map<int, FileMl>> decryptFileMLComputer( }
Future<Map<int, FileMl>> _decryptFileMLComputer(
Map<String, dynamic> args, Map<String, dynamic> args,
) async { ) async {
final result = <int, FileMl>{}; final result = <int, FileMl>{};
@ -134,5 +139,4 @@ class RemoteFileMLService {
result[input.embedding.fileID] = decodedEmbedding; result[input.embedding.fileID] = decodedEmbedding;
} }
return result; return result;
} }
}