[mob][photos] Add option to make 'only them' filter work a little different only for testing, for feedback on which option is better

This commit is contained in:
ashilkn
2024-11-05 22:27:38 +05:30
parent f09005ed95
commit ebae813ee3
3 changed files with 45 additions and 4 deletions

View File

@@ -59,6 +59,23 @@ class _MLDebugSectionWidgetState extends State<MLDebugSectionWidget> {
final colorScheme = getEnteColorScheme(context);
return Column(
children: [
MenuItemWidget(
captionedTextWidget: const CaptionedTextWidget(
title:
"Exclude files of face IDs that are not in any cluster on applying 'only them' filter.",
),
trailingWidget: ToggleSwitchWidget(
value: () => localSettings
.excludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter,
onChanged: () async {
await localSettings
.setExcludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter(
!localSettings
.excludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter,
);
},
),
),
sectionOptionSpacing,
MenuItemWidget(
captionedTextWidget: FutureBuilder<IndexStatus>(

View File

@@ -55,7 +55,10 @@ Future<List<EnteFile>> getFilteredFiles(
} catch (e) {
logger.severe("Error in filtering face filter: $e");
}
} else if (filter is OnlyThemFilter) {
}
//TODO: Add result to matchedUploadedIDs to avoid recomputation and check if
// it is already computed.
else if (filter is OnlyThemFilter) {
try {
late Set<int> intersectionOfSelectedFaceFiltersFileIDs;
final selectedClusterIDs = <String>[];
@@ -91,10 +94,13 @@ Future<List<EnteFile>> getFilteredFiles(
exceptClusters: selectedClusterIDs,
);
final filesOfFaceIDsNotInAnyCluster =
await MLDataDB.instance.getAllFileIDsOfFaceIDsNotInAnyCluster();
if (localSettings
.excludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter) {
final filesOfFaceIDsNotInAnyCluster =
await MLDataDB.instance.getAllFileIDsOfFaceIDsNotInAnyCluster();
fileIDsToAvoid.addAll(filesOfFaceIDsNotInAnyCluster);
fileIDsToAvoid.addAll(filesOfFaceIDsNotInAnyCluster);
}
final result =
intersectionOfSelectedFaceFiltersFileIDs.difference(fileIDsToAvoid);

View File

@@ -16,6 +16,8 @@ class LocalSettings {
static const kRateUsPromptThreshold = 2;
static const shouldLoopVideoKey = "video.should_loop";
static const onGuestViewKey = "on_guest_view";
static const kExcludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter =
"excludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter";
final SharedPreferences _prefs;
@@ -66,6 +68,22 @@ class LocalSettings {
bool get userEnabledMultiplePart =>
_prefs.getBool(kEnableMultiplePart) ?? false;
bool get excludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter =>
_prefs.getBool(
kExcludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter,
) ??
true;
Future<bool> setExcludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter(
bool value,
) async {
await _prefs.setBool(
kExcludeFilesOfFaceIDsThatAreNotInAnyClusterOnOnlyThemFilter,
value,
);
return value;
}
Future<bool> setUserEnabledMultiplePart(bool value) async {
await _prefs.setBool(kEnableMultiplePart, value);
return value;