[mob][photos] Ignored person issues (#6677)

## Description

- Fixes ignored person showing up in suggestions
- Don't ask for contact linking for ignored persons
This commit is contained in:
Laurens Priem
2025-07-30 14:17:55 +02:00
committed by GitHub
11 changed files with 167 additions and 27 deletions

View File

@@ -435,6 +435,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Please allow access to your photos from Settings so Ente can display and backup your library."),
"allowPermTitle":
MessageLookupByLibrary.simpleMessage("Allow access to photos"),
"analysis": MessageLookupByLibrary.simpleMessage("Analysis"),
"androidBiometricHint":
MessageLookupByLibrary.simpleMessage("Verify identity"),
"androidBiometricNotRecognized":
@@ -551,6 +552,9 @@ class MessageLookup extends MessageLookupByLibrary {
"autoPair": MessageLookupByLibrary.simpleMessage("Auto pair"),
"autoPairDesc": MessageLookupByLibrary.simpleMessage(
"Auto pair works only with devices that support Chromecast."),
"automaticallyAnalyzeAndSplitGrouping":
MessageLookupByLibrary.simpleMessage(
"We will automatically analyze the grouping to determine if there are multiple people present, and separate them out again. This may take a few seconds."),
"available": MessageLookupByLibrary.simpleMessage("Available"),
"availableStorageSpace": m10,
"backedUpFolders":
@@ -889,6 +893,8 @@ class MessageLookup extends MessageLookupByLibrary {
"doYouWantToDiscardTheEditsYouHaveMade":
MessageLookupByLibrary.simpleMessage(
"Do you want to discard the edits you have made?"),
"doesGroupContainMultiplePeople": MessageLookupByLibrary.simpleMessage(
"Does this grouping contain multiple people?"),
"done": MessageLookupByLibrary.simpleMessage("Done"),
"dontSave": MessageLookupByLibrary.simpleMessage("Don\'t save"),
"doubleYourStorage":
@@ -1136,6 +1142,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Biometric authentication is disabled. Please lock and unlock your screen to enable it."),
"iOSOkButton": MessageLookupByLibrary.simpleMessage("OK"),
"ignore": MessageLookupByLibrary.simpleMessage("Ignore"),
"ignorePerson": MessageLookupByLibrary.simpleMessage("Ignore person"),
"ignoreUpdate": MessageLookupByLibrary.simpleMessage("Ignore"),
"ignored": MessageLookupByLibrary.simpleMessage("ignored"),
"ignoredFolderUploadReason": MessageLookupByLibrary.simpleMessage(
@@ -1336,6 +1343,8 @@ class MessageLookup extends MessageLookupByLibrary {
"mergeWithExisting":
MessageLookupByLibrary.simpleMessage("Merge with existing"),
"mergedPhotos": MessageLookupByLibrary.simpleMessage("Merged photos"),
"mixedGrouping":
MessageLookupByLibrary.simpleMessage("Mixed grouping?"),
"mlConsent":
MessageLookupByLibrary.simpleMessage("Enable machine learning"),
"mlConsentConfirmation": MessageLookupByLibrary.simpleMessage(

View File

@@ -421,6 +421,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Išsaugoti visi prisiminimai"),
"allPersonGroupingWillReset": MessageLookupByLibrary.simpleMessage(
"Visi šio asmens grupavimai bus iš naujo nustatyti, o jūs neteksite visų šiam asmeniui pateiktų pasiūlymų"),
"allUnnamedGroupsWillBeMergedIntoTheSelectedPerson":
MessageLookupByLibrary.simpleMessage(
"Visos nepavadintos grupės bus sujungtos su pasirinktu asmeniu. Tai vis dar galima atšaukti iš asmens pasiūlymų istorijos apžvalgos."),
"allWillShiftRangeBasedOnFirst": MessageLookupByLibrary.simpleMessage(
"Tai pirmoji šioje grupėje. Kitos pasirinktos nuotraukos bus automatiškai perkeltos pagal šią naują datą."),
"allow": MessageLookupByLibrary.simpleMessage("Leisti"),
@@ -473,6 +476,10 @@ class MessageLookup extends MessageLookupByLibrary {
"archiveAlbum":
MessageLookupByLibrary.simpleMessage("Archyvuoti albumą"),
"archiving": MessageLookupByLibrary.simpleMessage("Archyvuojama..."),
"areThey": MessageLookupByLibrary.simpleMessage("Ar jie "),
"areYouSureRemoveThisFaceFromPerson":
MessageLookupByLibrary.simpleMessage(
"Ar tikrai norite pašalinti šį veidą iš šio asmens?"),
"areYouSureThatYouWantToLeaveTheFamily":
MessageLookupByLibrary.simpleMessage(
"Ar tikrai norite palikti šeimos planą?"),
@@ -483,8 +490,16 @@ class MessageLookup extends MessageLookupByLibrary {
"Ar tikrai norite keisti planą?"),
"areYouSureYouWantToExit":
MessageLookupByLibrary.simpleMessage("Ar tikrai norite išeiti?"),
"areYouSureYouWantToIgnoreThesePersons":
MessageLookupByLibrary.simpleMessage(
"Ar tikrai norite ignoruoti šiuos asmenis?"),
"areYouSureYouWantToIgnoreThisPerson":
MessageLookupByLibrary.simpleMessage(
"Ar tikrai norite ignoruoti šį asmenį?"),
"areYouSureYouWantToLogout": MessageLookupByLibrary.simpleMessage(
"Ar tikrai norite atsijungti?"),
"areYouSureYouWantToMergeThem": MessageLookupByLibrary.simpleMessage(
"Ar tikrai norite juos sujungti?"),
"areYouSureYouWantToRenew":
MessageLookupByLibrary.simpleMessage("Ar tikrai norite pratęsti?"),
"areYouSureYouWantToResetThisPerson":
@@ -576,6 +591,29 @@ class MessageLookup extends MessageLookupByLibrary {
"blackFridaySale": MessageLookupByLibrary.simpleMessage(
"Juodojo penktadienio išpardavimas"),
"blog": MessageLookupByLibrary.simpleMessage("Tinklaraštis"),
"cLDesc1": MessageLookupByLibrary.simpleMessage(
"Po vaizdo įrašų srauto perdavimo beta versijos ir darbo prie tęsiamų įkėlimų ir atsisiuntimų, dabar padidinome failų įkėlimo ribą iki 10 GB. Tai dabar pasiekiama tiek kompiuterinėse, tiek mobiliosiose programėlėse."),
"cLDesc2": MessageLookupByLibrary.simpleMessage(
"Fono įkėlimai dabar palaikomi ir sistemoje „iOS“ bei „Android“ įrenginiuose. Nebereikia atverti programėlės, kad būtų galima sukurti naujausių nuotraukų ir vaizdo įrašų atsarginę kopiją."),
"cLDesc3": MessageLookupByLibrary.simpleMessage(
"Mes žymiai patobulinome prisiminimų patirtį, įskaitant automatinį peržiūrėjimą, braukimą į kitą prisiminimą ir daug daugiau."),
"cLDesc4": MessageLookupByLibrary.simpleMessage(
"Kartu su daugybe vidinių patobulinimų, dabar daug lengviau matyti visus aptiktus veidus, pateikti atsiliepimus apie panašius veidus ir pridėti / pašalinti veidus iš vienos nuotraukos."),
"cLDesc5": MessageLookupByLibrary.simpleMessage(
"Dabar gausite pranešimą apie galimybę atsisakyti visų gimtadienių, kuriuos išsaugojote platformoje „Ente“, kartu su geriausių jų nuotraukų rinkiniu."),
"cLDesc6": MessageLookupByLibrary.simpleMessage(
"Nebereikia laukti įkėlimų / atsisiuntimų užbaigti, kad užvertumėte programėlę. Dabar visus įkėlimus ir atsisiuntimus galima pristabdyti ir tęsti nuo tos vietos, kurioje sustojote."),
"cLTitle1": MessageLookupByLibrary.simpleMessage(
"Įkeliami dideli vaizdo įrašų failai"),
"cLTitle2": MessageLookupByLibrary.simpleMessage("Fono įkėlimas"),
"cLTitle3": MessageLookupByLibrary.simpleMessage(
"Automatiniai peržiūros prisiminimai"),
"cLTitle4": MessageLookupByLibrary.simpleMessage(
"Patobulintas veido atpažinimas"),
"cLTitle5":
MessageLookupByLibrary.simpleMessage("Gimtadienio pranešimai"),
"cLTitle6": MessageLookupByLibrary.simpleMessage(
"Tęsiami įkėlimai ir atsisiuntimai"),
"cachedData":
MessageLookupByLibrary.simpleMessage("Podėliuoti duomenis"),
"calculating": MessageLookupByLibrary.simpleMessage("Skaičiuojama..."),
@@ -828,10 +866,11 @@ class MessageLookup extends MessageLookupByLibrary {
"deviceLock":
MessageLookupByLibrary.simpleMessage("Įrenginio užraktas"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Išjunkite įrenginio ekrano užraktą, kai „Ente“ yra priekiniame fone ir kuriama atsarginės kopijos. Paprastai to nereikia, bet tai gali padėti greičiau užbaigti didelius įkėlimus ir pradinį didelių bibliotekų importą."),
"Išjunkite įrenginio ekrano užraktą, kai „Ente“ yra priekiniame fone ir kuriama atsarginės kopijos. Paprastai to nereikia, bet tai gali padėti sparčiau užbaigti didelius įkėlimus ir pradinį didelių bibliotekų importą."),
"deviceNotFound":
MessageLookupByLibrary.simpleMessage("Įrenginys nerastas"),
"didYouKnow": MessageLookupByLibrary.simpleMessage("Ar žinojote?"),
"different": MessageLookupByLibrary.simpleMessage("Skirtingas"),
"disableAutoLock":
MessageLookupByLibrary.simpleMessage("Išjungti automatinį užraktą"),
"disableDownloadWarningBody": MessageLookupByLibrary.simpleMessage(
@@ -998,6 +1037,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Veidas dar nesugrupuotas. Grįžkite vėliau."),
"faceRecognition":
MessageLookupByLibrary.simpleMessage("Veido atpažinimas"),
"faceThumbnailGenerationFailed": MessageLookupByLibrary.simpleMessage(
"Nepavyksta sugeneruoti veido miniatiūrų."),
"faces": MessageLookupByLibrary.simpleMessage("Veidai"),
"failed": MessageLookupByLibrary.simpleMessage("Nepavyko"),
"failedToApplyCode":
@@ -1033,6 +1074,8 @@ class MessageLookup extends MessageLookupByLibrary {
"feastingWithThem": m34,
"feedback": MessageLookupByLibrary.simpleMessage("Atsiliepimai"),
"file": MessageLookupByLibrary.simpleMessage("Failas"),
"fileAnalysisFailed": MessageLookupByLibrary.simpleMessage(
"Nepavyksta išanalizuoti failo."),
"fileFailedToSaveToGallery": MessageLookupByLibrary.simpleMessage(
"Nepavyko išsaugoti failo į galeriją"),
"fileInfoAddDescHint":
@@ -1050,9 +1093,9 @@ class MessageLookup extends MessageLookupByLibrary {
"filesSavedToGallery":
MessageLookupByLibrary.simpleMessage("Failai išsaugoti į galeriją"),
"findPeopleByName": MessageLookupByLibrary.simpleMessage(
"Greitai suraskite žmones pagal vardą"),
"Sparčiai suraskite asmenis pagal vardą"),
"findThemQuickly":
MessageLookupByLibrary.simpleMessage("Raskite juos greitai"),
MessageLookupByLibrary.simpleMessage("Raskite juos sparčiai"),
"flip": MessageLookupByLibrary.simpleMessage("Apversti"),
"food": MessageLookupByLibrary.simpleMessage("Kulinarinis malonumas"),
"forYourMemories":
@@ -1126,6 +1169,7 @@ class MessageLookup extends MessageLookupByLibrary {
"iOSLockOut": MessageLookupByLibrary.simpleMessage(
"Biometrinis tapatybės nustatymas išjungtas. Kad jį įjungtumėte, užrakinkite ir atrakinkite ekraną."),
"iOSOkButton": MessageLookupByLibrary.simpleMessage("Gerai"),
"ignore": MessageLookupByLibrary.simpleMessage("Ignoruoti"),
"ignoreUpdate": MessageLookupByLibrary.simpleMessage("Ignoruoti"),
"ignored": MessageLookupByLibrary.simpleMessage("ignoruota"),
"ignoredFolderUploadReason": MessageLookupByLibrary.simpleMessage(
@@ -1146,6 +1190,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Neteisingas atkūrimo raktas"),
"indexedItems":
MessageLookupByLibrary.simpleMessage("Indeksuoti elementai"),
"indexingPausedStatusDescription": MessageLookupByLibrary.simpleMessage(
"Indeksavimas pristabdytas. Jis bus automatiškai tęsiamas, kai įrenginys bus parengtas. Įrenginys laikomas parengtu, kai jo akumuliatoriaus įkrovos lygis, akumuliatoriaus būklė ir terminė būklė yra normos ribose."),
"ineligible": MessageLookupByLibrary.simpleMessage("Netinkami"),
"info": MessageLookupByLibrary.simpleMessage("Informacija"),
"insecureDevice":
@@ -1334,6 +1380,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Pasirinkite, kokius prisiminimus norite matyti savo pradžios ekrane."),
"memoryCount": m50,
"merchandise": MessageLookupByLibrary.simpleMessage("Atributika"),
"merge": MessageLookupByLibrary.simpleMessage("Sujungti"),
"mergeWithExisting":
MessageLookupByLibrary.simpleMessage("Sujungti su esamais"),
"mergedPhotos":
@@ -1474,6 +1521,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Arba pasirinkite esamą"),
"orPickFromYourContacts": MessageLookupByLibrary.simpleMessage(
"arba pasirinkite iš savo kontaktų"),
"otherDetectedFaces":
MessageLookupByLibrary.simpleMessage("Kiti aptikti veidai"),
"pair": MessageLookupByLibrary.simpleMessage("Susieti"),
"pairWithPin": MessageLookupByLibrary.simpleMessage("Susieti su PIN"),
"pairingComplete":
@@ -1606,6 +1655,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Vieša nuoroda sukurta"),
"publicLinkEnabled":
MessageLookupByLibrary.simpleMessage("Įjungta viešoji nuoroda"),
"questionmark": MessageLookupByLibrary.simpleMessage("?"),
"queued": MessageLookupByLibrary.simpleMessage("Įtraukta eilėje"),
"quickLinks": MessageLookupByLibrary.simpleMessage("Sparčios nuorodos"),
"radius": MessageLookupByLibrary.simpleMessage("Spindulys"),
@@ -1722,6 +1772,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Pranešti apie riktą"),
"resendEmail":
MessageLookupByLibrary.simpleMessage("Iš naujo siųsti el. laišką"),
"reset": MessageLookupByLibrary.simpleMessage("Atkurti"),
"resetIgnoredFiles":
MessageLookupByLibrary.simpleMessage("Atkurti ignoruojamus failus"),
"resetPasswordTitle": MessageLookupByLibrary.simpleMessage(
@@ -1748,7 +1799,11 @@ class MessageLookup extends MessageLookupByLibrary {
"rotateLeft": MessageLookupByLibrary.simpleMessage("Sukti į kairę"),
"rotateRight": MessageLookupByLibrary.simpleMessage("Sukti į dešinę"),
"safelyStored": MessageLookupByLibrary.simpleMessage("Saugiai saugoma"),
"same": MessageLookupByLibrary.simpleMessage("Tas pats"),
"sameperson": MessageLookupByLibrary.simpleMessage("Tas pats asmuo?"),
"save": MessageLookupByLibrary.simpleMessage("Išsaugoti"),
"saveAsAnotherPerson":
MessageLookupByLibrary.simpleMessage("Išsaugoti kaip kitą asmenį"),
"saveChangesBeforeLeavingQuestion":
MessageLookupByLibrary.simpleMessage(
"Išsaugoti pakeitimus prieš išeinant?"),
@@ -1775,7 +1830,7 @@ class MessageLookup extends MessageLookupByLibrary {
"searchByExamples": MessageLookupByLibrary.simpleMessage(
"• Albumų pavadinimai (pvz., „Fotoaparatas“)\n• Failų tipai (pvz., „Vaizdo įrašai“, „.gif“)\n• Metai ir mėnesiai (pvz., „2022“, „sausis“)\n• Šventės (pvz., „Kalėdos“)\n• Nuotraukų aprašymai (pvz., „#džiaugsmas“)"),
"searchCaptionEmptySection": MessageLookupByLibrary.simpleMessage(
"Pridėkite aprašymus, pavyzdžiui, „#kelionė“, į nuotraukos informaciją, kad greičiau jas čia rastumėte."),
"Pridėkite aprašus, pavyzdžiui, „#kelionė“, į nuotraukos informaciją, kad sparčiau jas čia rastumėte."),
"searchDatesEmptySection": MessageLookupByLibrary.simpleMessage(
"Ieškokite pagal datą, mėnesį arba metus"),
"searchDiscoverEmptySection": MessageLookupByLibrary.simpleMessage(
@@ -1915,8 +1970,12 @@ class MessageLookup extends MessageLookupByLibrary {
"sharing": MessageLookupByLibrary.simpleMessage("Bendrinima..."),
"shiftDatesAndTime":
MessageLookupByLibrary.simpleMessage("Pastumti datas ir laiką"),
"showLessFaces":
MessageLookupByLibrary.simpleMessage("Rodyti mažiau veidų"),
"showMemories":
MessageLookupByLibrary.simpleMessage("Rodyti prisiminimus"),
"showMoreFaces":
MessageLookupByLibrary.simpleMessage("Rodyti daugiau veidų"),
"showPerson": MessageLookupByLibrary.simpleMessage("Rodyti asmenį"),
"signOutFromOtherDevices": MessageLookupByLibrary.simpleMessage(
"Atsijungti iš kitų įrenginių"),
@@ -2042,6 +2101,10 @@ class MessageLookup extends MessageLookupByLibrary {
"theLinkYouAreTryingToAccessHasExpired":
MessageLookupByLibrary.simpleMessage(
"Nuoroda, kurią bandote pasiekti, nebegalioja."),
"thePersonGroupsWillNotBeDisplayed": MessageLookupByLibrary.simpleMessage(
"Asmenų grupės nebebus rodomos asmenų sekcijoje. Nuotraukos liks nepakitusios."),
"thePersonWillNotBeDisplayed": MessageLookupByLibrary.simpleMessage(
"Asmuo nebebus rodomas asmenų sekcijoje. Nuotraukos liks nepakitusios."),
"theRecoveryKeyYouEnteredIsIncorrect":
MessageLookupByLibrary.simpleMessage(
"Įvestas atkūrimo raktas yra neteisingas."),
@@ -2240,6 +2303,7 @@ class MessageLookup extends MessageLookupByLibrary {
"yesDelete": MessageLookupByLibrary.simpleMessage("Taip, ištrinti"),
"yesDiscardChanges":
MessageLookupByLibrary.simpleMessage("Taip, atmesti pakeitimus"),
"yesIgnore": MessageLookupByLibrary.simpleMessage("Taip, ignoruoti"),
"yesLogout": MessageLookupByLibrary.simpleMessage("Taip, atsijungti"),
"yesRemove": MessageLookupByLibrary.simpleMessage("Taip, šalinti"),
"yesRenew": MessageLookupByLibrary.simpleMessage("Taip, pratęsti"),

View File

@@ -226,7 +226,7 @@ class MessageLookup extends MessageLookupByLibrary {
static String m76(name) => "Đi bộ với ${name}";
static String m77(count) =>
"${Intl.plural(count, other: '${count} kết quả được tìm thấy')}";
"${Intl.plural(count, other: '${count} kết quả đã tìm thấy')}";
static String m78(snapshotLength, searchLength) =>
"Độ dài các phần không khớp: ${snapshotLength} != ${searchLength}";
@@ -1272,7 +1272,7 @@ class MessageLookup extends MessageLookupByLibrary {
"loadMessage9": MessageLookupByLibrary.simpleMessage(
"Chúng tôi sử dụng Xchacha20Poly1305 để mã hóa dữ liệu của bạn"),
"loadingExifData":
MessageLookupByLibrary.simpleMessage("Đang tải thông số Exif..."),
MessageLookupByLibrary.simpleMessage("Đang lấy thông số Exif..."),
"loadingGallery":
MessageLookupByLibrary.simpleMessage("Đang tải thư viện..."),
"loadingMessage":
@@ -1412,8 +1412,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("✨ Không có trùng lặp"),
"noEnteAccountExclamation":
MessageLookupByLibrary.simpleMessage("Chưa có tài khoản Ente!"),
"noExifData":
MessageLookupByLibrary.simpleMessage("Không có thông số Exif"),
"noExifData": MessageLookupByLibrary.simpleMessage("Không có Exif"),
"noFacesFound":
MessageLookupByLibrary.simpleMessage("Không tìm thấy khuôn mặt"),
"noHiddenPhotosOrVideos":

View File

@@ -12366,6 +12366,56 @@ class S {
);
}
/// `Ignore person`
String get ignorePerson {
return Intl.message(
'Ignore person',
name: 'ignorePerson',
desc: '',
args: [],
);
}
/// `Mixed grouping?`
String get mixedGrouping {
return Intl.message(
'Mixed grouping?',
name: 'mixedGrouping',
desc: '',
args: [],
);
}
/// `Analysis`
String get analysis {
return Intl.message(
'Analysis',
name: 'analysis',
desc: '',
args: [],
);
}
/// `Does this grouping contain multiple people?`
String get doesGroupContainMultiplePeople {
return Intl.message(
'Does this grouping contain multiple people?',
name: 'doesGroupContainMultiplePeople',
desc: '',
args: [],
);
}
/// `We will automatically analyze the grouping to determine if there are multiple people present, and separate them out again. This may take a few seconds.`
String get automaticallyAnalyzeAndSplitGrouping {
return Intl.message(
'We will automatically analyze the grouping to determine if there are multiple people present, and separate them out again. This may take a few seconds.',
name: 'automaticallyAnalyzeAndSplitGrouping',
desc: '',
args: [],
);
}
/// `Layout`
String get layout {
return Intl.message(

View File

@@ -1796,6 +1796,11 @@
"groupBy": "Group by",
"faceThumbnailGenerationFailed": "Unable to generate face thumbnails",
"fileAnalysisFailed": "Unable to analyze file",
"layout" : "Layout",
"ignorePerson": "Ignore person",
"mixedGrouping": "Mixed grouping?",
"analysis": "Analysis",
"doesGroupContainMultiplePeople": "Does this grouping contain multiple people?",
"automaticallyAnalyzeAndSplitGrouping": "We will automatically analyze the grouping to determine if there are multiple people present, and separate them out again. This may take a few seconds.",
"layout": "Layout",
"day": "Day"
}

View File

@@ -48,7 +48,11 @@ class ClusterInfo {
class PersonData {
final String name;
/// Used to mark a person to not show in the people section.
/// WARNING: When checking whether to show a person, use [isIgnored] instead, as it also checks legacy hidden names.
final bool isHidden;
String? avatarFaceID;
List<ClusterInfo> assigned = List<ClusterInfo>.empty();
List<String> rejectedFaceIDs = List<String>.empty();
@@ -63,8 +67,10 @@ class PersonData {
bool hasAvatar() => avatarFaceID != null;
/// Returns true if the person should be ignored in the UI.
/// This included the regular [isHidden] check, but also a check for legacy names
bool get isIgnored =>
(name.isEmpty || name == '(hidden)' || name == '(ignored)');
(isHidden || name.isEmpty || name == '(hidden)' || name == '(ignored)');
PersonData({
required this.name,

View File

@@ -330,6 +330,10 @@ class ClusterFeedbackService<T> {
for (final person in personsMap.values) {
final personID = person.remoteID;
final personClusters = personToClusterIDs[personID] ?? {};
if (person.data.isIgnored) {
personIdToOtherPersonClusterIDs[personID] = personClusters;
continue;
}
int biggestClusterSize = 0;
String biggestClusterID = '';
final Set<String> otherPersonClusterIDs = {};

View File

@@ -418,7 +418,7 @@ class SmartMemoriesService {
}
}
final List<String> orderedImportantPersonsID = persons
.where((person) => !person.data.isHidden && !person.data.isIgnored)
.where((person) => !person.data.isIgnored)
.map((p) => p.remoteID)
.toList();
orderedImportantPersonsID.shuffle(Random());

View File

@@ -10,6 +10,7 @@ import 'package:photos/db/ml/base.dart';
import "package:photos/db/ml/db.dart";
import "package:photos/events/people_changed_event.dart";
import 'package:photos/events/subscription_purchased_event.dart';
import "package:photos/generated/l10n.dart";
import "package:photos/models/file/file.dart";
import 'package:photos/models/gallery_type.dart';
import "package:photos/models/ml/face/person.dart";
@@ -116,12 +117,12 @@ class _AppBarWidgetState extends State<ClusterAppBar> {
items.addAll(
[
EntePopupMenuItem(
"Ignore person",
S.of(context).ignorePerson,
value: ClusterPopupAction.ignore,
icon: Icons.hide_image_outlined,
),
EntePopupMenuItem(
"Mixed grouping?",
S.of(context).mixedGrouping,
value: ClusterPopupAction.breakupCluster,
icon: Icons.analytics_outlined,
),
@@ -165,10 +166,9 @@ class _AppBarWidgetState extends State<ClusterAppBar> {
Future<void> _onIgnoredClusterClicked(BuildContext context) async {
await showChoiceDialog(
context,
title: "Are you sure you want to ignore this person?",
body:
"The person grouping will not be displayed in the discovery tap anymore. Photos will remain untouched.",
firstButtonLabel: "Yes, confirm",
title: S.of(context).areYouSureYouWantToIgnoreThisPerson,
body: S.of(context).thePersonGroupsWillNotBeDisplayed,
firstButtonLabel: S.of(context).confirm,
firstButtonOnTap: () async {
try {
await ClusterFeedbackService.instance.ignoreCluster(widget.clusterID);
@@ -187,10 +187,9 @@ class _AppBarWidgetState extends State<ClusterAppBar> {
String biggestClusterID = '';
await showChoiceDialog(
context,
title: "Does this grouping contain multiple people?",
body:
"We will automatically analyze the grouping to determine if there are multiple people present, and separate them out again. This may take a few seconds.",
firstButtonLabel: "Yes, confirm",
title: S.of(context).doesGroupContainMultiplePeople,
body: S.of(context).automaticallyAnalyzeAndSplitGrouping,
firstButtonLabel: S.of(context).confirm,
firstButtonOnTap: () async {
try {
final breakupResult = await ClusterFeedbackService.instance
@@ -282,7 +281,7 @@ class _AppBarWidgetState extends State<ClusterAppBar> {
MaterialPageRoute(
builder: (context) => ClusterBreakupPage(
newClusterIDToFiles,
"(Analysis)",
S.of(context).analysis,
),
),
);

View File

@@ -6,6 +6,7 @@ import 'package:photos/core/event_bus.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/generated/l10n.dart";
import "package:photos/l10n/l10n.dart";
import 'package:photos/models/file/file.dart';
import 'package:photos/models/file_load_result.dart';
@@ -137,7 +138,9 @@ class _PeoplePageState extends State<PeoplePage> {
Size.fromHeight(widget.searchResult != null ? 90.0 : 50.0),
child: PeopleAppBar(
GalleryType.peopleTag,
_person.data.name,
_person.data.isIgnored
? S.of(context).ignored
: _person.data.name,
_selectedFiles,
_person,
),
@@ -264,8 +267,9 @@ class _GalleryState extends State<_Gallery> {
widget.personFiles.isNotEmpty ? [widget.personFiles.first] : [],
header: Column(
children: [
widget.personEntity.data.email != null &&
widget.personEntity.data.email!.isNotEmpty
(widget.personEntity.data.email != null &&
widget.personEntity.data.email!.isNotEmpty) ||
widget.personEntity.data.isIgnored
? const SizedBox.shrink()
: Padding(
padding: const EdgeInsets.only(top: 12, bottom: 8),

View File

@@ -45,7 +45,7 @@ class _LinkContactToPersonSelectionPageState
final List<PersonEntity> result = [];
for (final person in persons) {
if ((person.data.email != null && person.data.email!.isNotEmpty) ||
(person.data.isHidden || person.data.isIgnored)) {
(person.data.isIgnored)) {
continue;
}
result.add(person);
@@ -217,7 +217,7 @@ class _ReassignMeSelectionPageState extends State<ReassignMeSelectionPage> {
final List<PersonEntity> result = [];
for (final person in persons) {
if ((person.data.email != null && person.data.email!.isNotEmpty) ||
(person.data.isHidden || person.data.isIgnored)) {
(person.data.isIgnored)) {
continue;
}
result.add(person);