[mob][wip] remove from cluster feedback
This commit is contained in:
parent
a3b6a72315
commit
768fa3d1ce
|
@ -695,7 +695,7 @@ class FaceMLDataDB {
|
|||
await db.execute(createNotPersonFeedbackTable);
|
||||
}
|
||||
|
||||
Future<void> removePersonFromFiles(List<EnteFile> files, Person p) async {
|
||||
Future<void> removeFilesFromPerson(List<EnteFile> files, Person p) async {
|
||||
final db = await instance.database;
|
||||
final result = await db.rawQuery(
|
||||
'SELECT $faceIDColumn FROM $facesTable LEFT JOIN $clustersTable '
|
||||
|
@ -715,4 +715,24 @@ class FaceMLDataDB {
|
|||
}
|
||||
await forceUpdateClusterIds(faceIDToClusterID);
|
||||
}
|
||||
|
||||
Future<void> removeFilesFromCluster(
|
||||
List<EnteFile> files,
|
||||
int clusterID,
|
||||
) async {
|
||||
final db = await instance.database;
|
||||
final result = await db.rawQuery(
|
||||
'SELECT $faceIDColumn FROM $facesTable '
|
||||
'WHERE $facesTable.$faceClusterId = ? AND $facesTable.$fileIDColumn IN (${files.map((e) => e.uploadedFileID).join(",")})',
|
||||
[clusterID],
|
||||
);
|
||||
final Map<String, int> faceIDToClusterID = {};
|
||||
int maxClusterID = DateTime.now().millisecondsSinceEpoch;
|
||||
for (final faceRow in result) {
|
||||
maxClusterID += 1;
|
||||
final faceID = faceRow[faceIDColumn] as String;
|
||||
faceIDToClusterID[faceID] = maxClusterID;
|
||||
}
|
||||
await forceUpdateClusterIds(faceIDToClusterID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -305,8 +305,12 @@ class ClusterFeedbackService {
|
|||
}
|
||||
}
|
||||
|
||||
Future<void> removePersonFromFiles(List<EnteFile> files, Person p) {
|
||||
return FaceMLDataDB.instance.removePersonFromFiles(files, p);
|
||||
Future<void> removeFilesFromPerson(List<EnteFile> files, Person p) {
|
||||
return FaceMLDataDB.instance.removeFilesFromPerson(files, p);
|
||||
}
|
||||
|
||||
Future<void> removeFilesFromCluster(List<EnteFile> files, int clusterID) {
|
||||
return FaceMLDataDB.instance.removeFilesFromCluster(files, clusterID);
|
||||
}
|
||||
|
||||
Future<bool> checkAndDoAutomaticMerges(Person p) async {
|
||||
|
|
|
@ -401,12 +401,13 @@ class _FileSelectionActionsWidgetState
|
|||
),
|
||||
);
|
||||
|
||||
// if (widget.type == GalleryType.cluster && widget.clusterID != null) {
|
||||
if (widget.type == GalleryType.cluster) {
|
||||
items.add(
|
||||
SelectionActionButton(
|
||||
labelText: 'Remove',
|
||||
icon: CupertinoIcons.minus,
|
||||
onTap: () => showToast(context, 'yet to implement'),
|
||||
onTap: anyUploadedFiles ? _onRemoveFromClusterClicked : null,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -690,7 +691,7 @@ class _FileSelectionActionsWidgetState
|
|||
);
|
||||
if (actionResult?.action != null) {
|
||||
if (actionResult!.action == ButtonAction.first) {
|
||||
await ClusterFeedbackService.instance.removePersonFromFiles(
|
||||
await ClusterFeedbackService.instance.removeFilesFromPerson(
|
||||
widget.selectedFiles.files.toList(),
|
||||
widget.person!,
|
||||
);
|
||||
|
@ -703,6 +704,49 @@ class _FileSelectionActionsWidgetState
|
|||
}
|
||||
}
|
||||
|
||||
Future<void> _onRemoveFromClusterClicked() async {
|
||||
if (widget.clusterID == null) {
|
||||
showShortToast(context, 'Cluster ID is null. Cannot remove files.');
|
||||
return;
|
||||
}
|
||||
final actionResult = await showActionSheet(
|
||||
context: context,
|
||||
buttons: [
|
||||
ButtonWidget(
|
||||
labelText: S.of(context).yesRemove,
|
||||
buttonType: ButtonType.neutral,
|
||||
buttonSize: ButtonSize.large,
|
||||
shouldStickToDarkTheme: true,
|
||||
buttonAction: ButtonAction.first,
|
||||
isInAlert: true,
|
||||
),
|
||||
ButtonWidget(
|
||||
labelText: S.of(context).cancel,
|
||||
buttonType: ButtonType.secondary,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.second,
|
||||
shouldStickToDarkTheme: true,
|
||||
isInAlert: true,
|
||||
),
|
||||
],
|
||||
title: "Remove these photos?",
|
||||
actionSheetType: ActionSheetType.defaultActionSheet,
|
||||
);
|
||||
if (actionResult?.action != null) {
|
||||
if (actionResult!.action == ButtonAction.first) {
|
||||
await ClusterFeedbackService.instance.removeFilesFromCluster(
|
||||
widget.selectedFiles.files.toList(),
|
||||
widget.clusterID!,
|
||||
);
|
||||
}
|
||||
Bus.instance.fire(PeopleChangedEvent());
|
||||
}
|
||||
widget.selectedFiles.clearAll();
|
||||
if (mounted) {
|
||||
setState(() => {});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _copyLink() async {
|
||||
if (_cachedCollectionForSharedLink != null) {
|
||||
final String collectionKey = Base58Encode(
|
||||
|
|
Loading…
Reference in a new issue