[mob][photos] Functionality to remove selected images from suggestion

This commit is contained in:
laurenspriem 2024-04-25 14:13:58 +05:30
parent d429efaf14
commit f0ebdb211c

View file

@ -1,4 +1,4 @@
import "dart:async" show unawaited;
import "dart:async" show StreamSubscription, unawaited;
import "dart:math";
import "package:flutter/foundation.dart" show kDebugMode;
@ -30,16 +30,25 @@ class PersonReviewClusterSuggestion extends StatefulWidget {
class _PersonClustersState extends State<PersonReviewClusterSuggestion> {
int currentSuggestionIndex = 0;
bool fetch = true;
Key futureBuilderKey = UniqueKey();
// Declare a variable for the future
late Future<List<ClusterSuggestion>> futureClusterSuggestions;
late StreamSubscription<PeopleChangedEvent> _peopleChangedEvent;
@override
void initState() {
super.initState();
// Initialize the future in initState
_fetchClusterSuggestions();
if (fetch) _fetchClusterSuggestions();
fetch = true;
}
@override
void dispose() {
_peopleChangedEvent.cancel();
super.dispose();
}
@override
@ -62,6 +71,7 @@ class _PersonClustersState extends State<PersonReviewClusterSuggestion> {
),
);
}
final allSuggestions = snapshot.data!;
final numberOfDifferentSuggestions = allSuggestions.length;
final currentSuggestion = allSuggestions[currentSuggestionIndex];
@ -69,6 +79,19 @@ class _PersonClustersState extends State<PersonReviewClusterSuggestion> {
final double distance = currentSuggestion.distancePersonToCluster;
final bool usingMean = currentSuggestion.usedOnlyMeanForSuggestion;
final List<EnteFile> files = currentSuggestion.filesInCluster;
_peopleChangedEvent =
Bus.instance.on<PeopleChangedEvent>().listen((event) {
if (event.type == PeopleEventType.removedFilesFromCluster &&
(event.source == clusterID.toString())) {
for (var updatedFile in event.relevantFiles!) {
files.remove(updatedFile);
}
fetch = false;
setState(() {});
}
});
return InkWell(
onTap: () {
Navigator.of(context).push(
@ -161,7 +184,7 @@ class _PersonClustersState extends State<PersonReviewClusterSuggestion> {
List<ClusterSuggestion> allSuggestions,
) {
final widgetToReturn = Column(
key: ValueKey("cluster_id-$clusterID"),
key: ValueKey("cluster_id-$clusterID-files-${files.length}"),
children: <Widget>[
if (kDebugMode)
Text(