diff --git a/mobile/lib/models/search/search_constants.dart b/mobile/lib/models/search/search_constants.dart index 6a0bcb8866..2bdb03673f 100644 --- a/mobile/lib/models/search/search_constants.dart +++ b/mobile/lib/models/search/search_constants.dart @@ -1,3 +1,4 @@ const kPersonParamID = 'person_id'; +const kPersonWidgetKey = 'person_widget_key'; const kClusterParamId = 'cluster_id'; const kFileID = 'file_id'; diff --git a/mobile/lib/services/search_service.dart b/mobile/lib/services/search_service.dart index 0bb3fb95bc..79351f6637 100644 --- a/mobile/lib/services/search_service.dart +++ b/mobile/lib/services/search_service.dart @@ -1004,6 +1004,7 @@ class SearchService { p.data.name, files, params: { + kPersonWidgetKey: p.data.avatarFaceID ?? p.hashCode.toString(), kPersonParamID: personID, kFileID: files.first.uploadedFileID, }, @@ -1018,6 +1019,8 @@ class SearchService { p.data.name, files, params: { + kPersonWidgetKey: + p.data.avatarFaceID ?? p.hashCode.toString(), kPersonParamID: personID, kFileID: files.first.uploadedFileID, }, diff --git a/mobile/lib/services/user_service.dart b/mobile/lib/services/user_service.dart index 027cd66736..2b50748e96 100644 --- a/mobile/lib/services/user_service.dart +++ b/mobile/lib/services/user_service.dart @@ -400,7 +400,8 @@ class UserService { Widget page; final String passkeySessionID = response.data["passkeySessionID"]; String twoFASessionID = response.data["twoFactorSessionID"]; - if (twoFASessionID.isEmpty) { + if (twoFASessionID.isEmpty && + response.data["twoFactorSessionIDV2"] != null) { twoFASessionID = response.data["twoFactorSessionIDV2"]; } if (passkeySessionID.isNotEmpty) { @@ -719,7 +720,8 @@ class UserService { if (response.statusCode == 200) { Widget page; String twoFASessionID = response.data["twoFactorSessionID"]; - if (twoFASessionID.isEmpty) { + if (twoFASessionID.isEmpty && + response.data["twoFactorSessionIDV2"] != null) { twoFASessionID = response.data["twoFactorSessionIDV2"]; } final String passkeySessionID = response.data["passkeySessionID"]; diff --git a/mobile/lib/ui/viewer/people/save_or_edit_person.dart b/mobile/lib/ui/viewer/people/save_or_edit_person.dart index d1f114c0eb..138da0cae2 100644 --- a/mobile/lib/ui/viewer/people/save_or_edit_person.dart +++ b/mobile/lib/ui/viewer/people/save_or_edit_person.dart @@ -121,6 +121,9 @@ class _SaveOrEditPersonState extends State { ), child: snapshot.hasData ? PersonFaceWidget( + key: ValueKey( + person?.data.avatarFaceID ?? + "",), personFile, clusterID: personClusterID, personId: person!.remoteID, @@ -158,9 +161,18 @@ class _SaveOrEditPersonState extends State { person!, ); if (result != null) { + _logger + .info('Person avatar updated'); setState(() { person = result; }); + showToast( + context, + "Person avatar updated ${person!.data.avatarFaceID ?? 'empty'}", + ); + Bus.instance.fire( + PeopleChangedEvent(), + ); } }, ), diff --git a/mobile/lib/ui/viewer/search_tab/people_section.dart b/mobile/lib/ui/viewer/search_tab/people_section.dart index 9df2945628..7c21a34db0 100644 --- a/mobile/lib/ui/viewer/search_tab/people_section.dart +++ b/mobile/lib/ui/viewer/search_tab/people_section.dart @@ -334,10 +334,14 @@ class FaceSearchResult extends StatelessWidget { @override Widget build(BuildContext context) { + final params = (searchResult as GenericSearchResult).params; return PersonFaceWidget( searchResult.previewThumbnail()!, - personId: (searchResult as GenericSearchResult).params[kPersonParamID], - clusterID: (searchResult as GenericSearchResult).params[kClusterParamId], + personId: params[kPersonParamID], + clusterID: params[kClusterParamId], + key: params.containsKey(kPersonWidgetKey) + ? ValueKey(params[kPersonWidgetKey]) + : null, ); } } diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 8d5a350ada..6eab8a1a32 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -12,7 +12,7 @@ description: ente photos application # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 0.9.63+963 +version: 0.9.64+964 publish_to: none environment: