[mob] Make sure cluster page is updated after file removal

This commit is contained in:
laurenspriem 2024-04-19 11:42:39 +05:30
parent e20f13f02b
commit ab0a99cf76
3 changed files with 20 additions and 3 deletions

View file

@ -27,4 +27,5 @@ enum EventType {
unhide,
coverChanged,
peopleChanged,
peopleClusterChanged,
}

View file

@ -5,6 +5,8 @@ import "package:flutter/foundation.dart";
import "package:logging/logging.dart";
import "package:photos/core/event_bus.dart";
import "package:photos/db/files_db.dart";
import "package:photos/events/files_updated_event.dart";
import "package:photos/events/local_photos_updated_event.dart";
import "package:photos/events/people_changed_event.dart";
import "package:photos/extensions/stop_watch.dart";
import "package:photos/face/db.dart";
@ -13,8 +15,6 @@ import "package:photos/generated/protos/ente/common/vector.pb.dart";
import "package:photos/models/file/file.dart";
import 'package:photos/services/machine_learning/face_ml/face_clustering/cosine_distance.dart';
import "package:photos/services/machine_learning/face_ml/face_clustering/face_clustering_service.dart";
// import "package:photos/services/machine_learning/face_ml/face_clustering/face_info_for_clustering.dart";
// import "package:photos/services/machine_learning/face_ml/face_filtering/face_filtering_constants.dart";
import "package:photos/services/machine_learning/face_ml/face_ml_result.dart";
import "package:photos/services/machine_learning/face_ml/person/person_service.dart";
import "package:photos/services/search_service.dart";
@ -196,6 +196,13 @@ class ClusterFeedbackService {
await FaceMLDataDB.instance.forceUpdateClusterIds(newFaceIdToClusterID);
Bus.instance.fire(PeopleChangedEvent());
Bus.instance.fire(
LocalPhotosUpdatedEvent(
files,
type: EventType.peopleClusterChanged,
source: "$clusterID",
),
);
return;
} catch (e, s) {
_logger.severe("Error in removeFilesFromCluster", e, s);

View file

@ -69,6 +69,13 @@ class _ClusterPageState extends State<ClusterPage> {
}
setState(() {});
}
if (event.type == EventType.peopleClusterChanged &&
(event.source == widget.clusterID.toString())) {
for (var updatedFile in event.updatedFiles) {
files.remove(updatedFile);
}
setState(() {});
}
});
kDebugMode
? ClusterFeedbackService.instance.debugLogClusterBlurValues(
@ -107,6 +114,7 @@ class _ClusterPageState extends State<ClusterPage> {
EventType.deletedFromRemote,
EventType.deletedFromEverywhere,
EventType.hide,
EventType.peopleClusterChanged,
},
tagPrefix: widget.tagPrefix + widget.tagPrefix,
selectedFiles: _selectedFiles,
@ -118,9 +126,10 @@ class _ClusterPageState extends State<ClusterPage> {
preferredSize: const Size.fromHeight(50.0),
child: ClusterAppBar(
SearchResultPage.appBarType,
"${widget.searchResult.length} memories${widget.appendTitle}",
"${files.length} memories${widget.appendTitle}",
_selectedFiles,
widget.clusterID,
key: ValueKey(files.length),
),
),
body: Column(