From e9064f69042b73fa79141827a45db88007f88d30 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Fri, 24 May 2024 16:29:00 +0530 Subject: [PATCH] [mob][photos] Correct cluster progress counter --- mobile/lib/face/db.dart | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/mobile/lib/face/db.dart b/mobile/lib/face/db.dart index 9b5f42f540..3ad90915d4 100644 --- a/mobile/lib/face/db.dart +++ b/mobile/lib/face/db.dart @@ -668,22 +668,39 @@ class FaceMLDataDB { return maps.first['count'] as int; } - Future getClusteredFileCount() async { + Future getClusteredOrFacelessFileCount() async { final db = await instance.asyncDB; - final List> maps = await db.getAll( + final List> clustered = await db.getAll( 'SELECT $fcFaceId FROM $faceClustersTable', ); - final Set fileIDs = {}; - for (final map in maps) { + final Set clusteredFileIDs = {}; + for (final map in clustered) { final int fileID = getFileIdFromFaceId(map[fcFaceId] as String); - fileIDs.add(fileID); + clusteredFileIDs.add(fileID); } - return fileIDs.length; + + final List> badFacesFiles = await db.getAll( + 'SELECT DISTINCT $fileIDColumn FROM $facesTable WHERE $faceScore <= $kMinimumQualityFaceScore OR $faceBlur <= $kLaplacianHardThreshold', + ); + final Set badFileIDs = {}; + for (final map in badFacesFiles) { + badFileIDs.add(map[fileIDColumn] as int); + } + + final List> goodFacesFiles = await db.getAll( + 'SELECT DISTINCT $fileIDColumn FROM $facesTable WHERE $faceScore > $kMinimumQualityFaceScore AND $faceBlur > $kLaplacianHardThreshold', + ); + final Set goodFileIDs = {}; + for (final map in goodFacesFiles) { + goodFileIDs.add(map[fileIDColumn] as int); + } + final trulyFacelessFiles = badFileIDs.difference(goodFileIDs); + return clusteredFileIDs.length + trulyFacelessFiles.length; } Future getClusteredToIndexableFilesRatio() async { final int indexableFiles = (await getIndexableFileIDs()).length; - final int clusteredFiles = await getClusteredFileCount(); + final int clusteredFiles = await getClusteredOrFacelessFileCount(); return clusteredFiles / indexableFiles; }