[mob][photos] Improve curation of album filter recommendation

This commit is contained in:
ashilkn 2024-09-24 19:19:33 +05:30
parent 468386ede6
commit 1258558be8
2 changed files with 30 additions and 16 deletions

View File

@ -1578,6 +1578,26 @@ class FilesDB {
return collectionIDsOfFile;
}
///Each collectionIDs in list aren't necessarily unique
Future<List<int>> getAllCollectionIDsOfFiles(
List<int> uploadedFileIDs,
) async {
final db = await instance.sqliteAsyncDB;
final inParam = uploadedFileIDs.join(',');
final results = await db.getAll(
'''
SELECT $columnCollectionID FROM $filesTable
WHERE $columnUploadedFileID IN ($inParam) AND $columnCollectionID != -1
''',
);
final collectionIDsOfFiles = <int>[];
for (var result in results) {
collectionIDsOfFiles.add(result['collection_id'] as int);
}
return collectionIDsOfFiles;
}
List<EnteFile> convertToFilesForIsolate(Map args) {
final List<EnteFile> files = [];
for (final result in args["result"]) {

View File

@ -1,3 +1,4 @@
import "package:photos/db/files_db.dart";
import "package:photos/models/file/file.dart";
import "package:photos/models/search/hierarchical/album_filter.dart";
import "package:photos/services/collections_service.dart";
@ -6,29 +7,22 @@ import "package:photos/ui/viewer/gallery/state/search_filter_data_provider.dart"
void curateAlbumFilters(
SearchFilterDataProvider searchFilterDataProvider,
List<EnteFile> files,
) {
) async {
final albumFilters = <AlbumFilter>[];
final idToOccurrence = <int, int>{};
final uploadedIDs = <int>[];
for (EnteFile file in files) {
final collectionID = file.collectionID;
if (collectionID == null) {
continue;
if (file.uploadedFileID != null && file.uploadedFileID != -1) {
uploadedIDs.add(file.uploadedFileID!);
}
}
final collectionIDsOfFiles =
await FilesDB.instance.getAllCollectionIDsOfFiles(uploadedIDs);
for (int collectionID in collectionIDsOfFiles) {
idToOccurrence[collectionID] = (idToOccurrence[collectionID] ?? 0) + 1;
}
// final sortedIds = idToOccurrence.keys.toList()
// ..sort((a, b) => idToOccurrence[b]!.compareTo(idToOccurrence[a]!));
// for (int id in sortedIds) {
// final collection = CollectionsService.instance.getCollectionByID(id);
// if (collection == null) {
// continue;
// }
// albumFilters
// .add(AlbumFilter(collectionID: id, albumName: collection.displayName));
// }
for (int id in idToOccurrence.keys) {
final collection = CollectionsService.instance.getCollectionByID(id);
if (collection == null) {