From cf43bd66988e644290707819ba5ee16da9ee56b0 Mon Sep 17 00:00:00 2001 From: Ashil <77285023+ashilkn@users.noreply.github.com> Date: Wed, 12 Feb 2025 19:46:57 +0530 Subject: [PATCH 1/3] [mobile][photos] Fix: show account owner's email in 'Link email' screen if it's not assigned to any person yet (#5045) --- mobile/lib/ui/viewer/people/link_email_screen.dart | 7 +++++-- mobile/lib/ui/viewer/people/save_or_edit_person.dart | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/mobile/lib/ui/viewer/people/link_email_screen.dart b/mobile/lib/ui/viewer/people/link_email_screen.dart index bec48b4399..bf610d0542 100644 --- a/mobile/lib/ui/viewer/people/link_email_screen.dart +++ b/mobile/lib/ui/viewer/people/link_email_screen.dart @@ -3,6 +3,7 @@ import "dart:async"; import "package:email_validator/email_validator.dart"; import 'package:flutter/material.dart'; import "package:logging/logging.dart"; +import "package:photos/core/configuration.dart"; import "package:photos/core/event_bus.dart"; import "package:photos/events/people_changed_event.dart"; import "package:photos/generated/l10n.dart"; @@ -245,11 +246,13 @@ class _LinkEmailScreen extends State { } List _getContacts() { - final usersEmailsToAviod = + final userEmailsToAviod = PersonService.instance.emailToPartialPersonDataMapCache.keys.toSet(); + final ownerEmail = Configuration.instance.getEmail(); final relevantUsers = UserService.instance.getRelevantContacts() + ..add(User(email: ownerEmail!)) ..removeWhere( - (user) => usersEmailsToAviod.contains(user.email), + (user) => userEmailsToAviod.contains(user.email), ); relevantUsers.sort( 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 40e346af38..9216801a20 100644 --- a/mobile/lib/ui/viewer/people/save_or_edit_person.dart +++ b/mobile/lib/ui/viewer/people/save_or_edit_person.dart @@ -986,11 +986,13 @@ class _EmailSectionState extends State<_EmailSection> { } List _getContacts() { - final usersEmailsToAviod = + final userEmailsToAviod = PersonService.instance.emailToPartialPersonDataMapCache.keys; + final ownerEmail = Configuration.instance.getEmail(); final relevantUsers = UserService.instance.getRelevantContacts() + ..add(User(email: ownerEmail!)) ..removeWhere( - (user) => usersEmailsToAviod.contains(user.email), + (user) => userEmailsToAviod.contains(user.email), ); relevantUsers.sort( From dc9292b280b5583219124c584618c503e238a0e5 Mon Sep 17 00:00:00 2001 From: Ashil <77285023+ashilkn@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:23:16 +0530 Subject: [PATCH 2/3] [mob][photos] Join link confirmation dialog (#5046) --- mobile/lib/generated/intl/messages_en.dart | 2 + mobile/lib/generated/l10n.dart | 10 +++++ mobile/lib/l10n/intl_en.arb | 3 +- .../shared_public_collection_page.dart | 42 +++++++++++-------- mobile/pubspec.yaml | 2 +- 5 files changed, 40 insertions(+), 19 deletions(-) diff --git a/mobile/lib/generated/intl/messages_en.dart b/mobile/lib/generated/intl/messages_en.dart index 16f84068f9..41537dd1ec 100644 --- a/mobile/lib/generated/intl/messages_en.dart +++ b/mobile/lib/generated/intl/messages_en.dart @@ -1063,6 +1063,8 @@ class MessageLookup extends MessageLookupByLibrary { "Selected items will be removed from this album"), "join": MessageLookupByLibrary.simpleMessage("Join"), "joinAlbum": MessageLookupByLibrary.simpleMessage("Join album"), + "joinAlbumConfirmationDialogBody": MessageLookupByLibrary.simpleMessage( + "Joining an album will make your email visible to its participants."), "joinAlbumSubtext": MessageLookupByLibrary.simpleMessage("to view and add your photos"), "joinAlbumSubtextViewer": MessageLookupByLibrary.simpleMessage( diff --git a/mobile/lib/generated/l10n.dart b/mobile/lib/generated/l10n.dart index 7096abda62..c7f32203dd 100644 --- a/mobile/lib/generated/l10n.dart +++ b/mobile/lib/generated/l10n.dart @@ -11220,6 +11220,16 @@ class S { args: [], ); } + + /// `Joining an album will make your email visible to its participants.` + String get joinAlbumConfirmationDialogBody { + return Intl.message( + 'Joining an album will make your email visible to its participants.', + name: 'joinAlbumConfirmationDialogBody', + desc: '', + args: [], + ); + } } class AppLocalizationDelegate extends LocalizationsDelegate { diff --git a/mobile/lib/l10n/intl_en.arb b/mobile/lib/l10n/intl_en.arb index 46b814c91e..9c29390b16 100644 --- a/mobile/lib/l10n/intl_en.arb +++ b/mobile/lib/l10n/intl_en.arb @@ -1673,5 +1673,6 @@ "ineligible": "Ineligible", "failed": "Failed", "playStream": "Play stream", - "playOriginal": "Play original" + "playOriginal": "Play original", + "joinAlbumConfirmationDialogBody" : "Joining an album will make your email visible to its participants." } \ No newline at end of file diff --git a/mobile/lib/ui/viewer/gallery/shared_public_collection_page.dart b/mobile/lib/ui/viewer/gallery/shared_public_collection_page.dart index 05ad027206..f4905eb4c7 100644 --- a/mobile/lib/ui/viewer/gallery/shared_public_collection_page.dart +++ b/mobile/lib/ui/viewer/gallery/shared_public_collection_page.dart @@ -151,27 +151,35 @@ class _SharedPublicCollectionPageState } Future _joinAlbum() async { - final dialog = createProgressDialog( + final result = await showChoiceDialog( context, - S.of(context).pleaseWait, - isDismissible: true, + title: context.l10n.joinAlbum, + body: context.l10n.joinAlbumConfirmationDialogBody, + firstButtonLabel: context.l10n.join, ); - await dialog.show(); - try { - await RemoteSyncService.instance - .joinAndSyncCollection(context, widget.c.collection.id); - final c = - CollectionsService.instance.getCollectionByID(widget.c.collection.id); - await dialog.hide(); - Navigator.of(context).pop(); - await routeToPage( + if (result != null && result.action == ButtonAction.first) { + final dialog = createProgressDialog( context, - CollectionPage(CollectionWithThumbnail(c!, null)), + S.of(context).pleaseWait, + isDismissible: true, ); - } catch (e, s) { - logger.severe("Failed to join collection", e, s); - await dialog.hide(); - showToast(context, S.of(context).somethingWentWrong); + await dialog.show(); + try { + await RemoteSyncService.instance + .joinAndSyncCollection(context, widget.c.collection.id); + final c = CollectionsService.instance + .getCollectionByID(widget.c.collection.id); + await dialog.hide(); + Navigator.of(context).pop(); + await routeToPage( + context, + CollectionPage(CollectionWithThumbnail(c!, null)), + ); + } catch (e, s) { + logger.severe("Failed to join collection", e, s); + await dialog.hide(); + showToast(context, S.of(context).somethingWentWrong); + } } } } diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index fa56fc2310..3947ba6334 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.95+995 +version: 0.9.96+996 publish_to: none environment: From fae820092028338b078b18361716b199f78e4f5e Mon Sep 17 00:00:00 2001 From: ashilkn Date: Wed, 12 Feb 2025 21:22:43 +0530 Subject: [PATCH 3/3] [mob][photos] Bump up to v0.9.97 --- mobile/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 3947ba6334..b1c0383504 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.96+996 +version: 0.9.97+997 publish_to: none environment: