diff --git a/mobile/lib/modules/album/ui/album_viewer_appbar.dart b/mobile/lib/modules/album/ui/album_viewer_appbar.dart index eaf5cbc96..25bc082af 100644 --- a/mobile/lib/modules/album/ui/album_viewer_appbar.dart +++ b/mobile/lib/modules/album/ui/album_viewer_appbar.dart @@ -275,7 +275,7 @@ class AlbumViewerAppbar extends HookConsumerWidget ); } else { return IconButton( - onPressed: () async => await context.popRoute(), + onPressed: () async => await context.maybePop(), icon: const Icon(Icons.arrow_back_ios_rounded), splashRadius: 25, ); diff --git a/mobile/lib/modules/album/views/album_options_part.dart b/mobile/lib/modules/album/views/album_options_part.dart index 2f831e430..c8a0a4d1f 100644 --- a/mobile/lib/modules/album/views/album_options_part.dart +++ b/mobile/lib/modules/album/views/album_options_part.dart @@ -184,7 +184,7 @@ class AlbumOptionsPage extends HookConsumerWidget { appBar: AppBar( leading: IconButton( icon: const Icon(Icons.arrow_back_ios_new_rounded), - onPressed: () => context.popRoute(null), + onPressed: () => context.maybePop(null), ), centerTitle: true, title: Text("translated_text_options".tr()), diff --git a/mobile/lib/modules/album/views/create_album_page.dart b/mobile/lib/modules/album/views/create_album_page.dart index e8514873e..fa6c15fc6 100644 --- a/mobile/lib/modules/album/views/create_album_page.dart +++ b/mobile/lib/modules/album/views/create_album_page.dart @@ -216,7 +216,7 @@ class CreateAlbumPage extends HookConsumerWidget { leading: IconButton( onPressed: () { selectedAssets.value = {}; - context.popRoute(); + context.maybePop(); }, icon: const Icon(Icons.close_rounded), ), diff --git a/mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart b/mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart index 0a883791a..dfaa005ea 100644 --- a/mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart +++ b/mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart @@ -23,7 +23,7 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget { final sharedUsersList = useState>({}); addNewUsersHandler() { - context.popRoute(sharedUsersList.value.map((e) => e.id).toList()); + context.maybePop(sharedUsersList.value.map((e) => e.id).toList()); } buildTileIcon(User user) { @@ -124,7 +124,7 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget { leading: IconButton( icon: const Icon(Icons.close_rounded), onPressed: () { - context.popRoute(null); + context.maybePop(null); }, ), actions: [ diff --git a/mobile/lib/modules/album/views/select_user_for_sharing_page.dart b/mobile/lib/modules/album/views/select_user_for_sharing_page.dart index 763f53c65..f1e5d81bb 100644 --- a/mobile/lib/modules/album/views/select_user_for_sharing_page.dart +++ b/mobile/lib/modules/album/views/select_user_for_sharing_page.dart @@ -36,7 +36,7 @@ class SelectUserForSharingPage extends HookConsumerWidget { await ref.watch(sharedAlbumProvider.notifier).getAllSharedAlbums(); // ref.watch(assetSelectionProvider.notifier).removeAll(); ref.watch(albumTitleProvider.notifier).clearAlbumTitle(); - context.popRoute(true); + context.maybePop(true); context .navigateTo(const TabControllerRoute(children: [SharingRoute()])); } @@ -152,7 +152,7 @@ class SelectUserForSharingPage extends HookConsumerWidget { leading: IconButton( icon: const Icon(Icons.close_rounded), onPressed: () async { - context.popRoute(); + context.maybePop(); }, ), actions: [ diff --git a/mobile/lib/modules/archive/views/archive_page.dart b/mobile/lib/modules/archive/views/archive_page.dart index 1f96425f4..503a9fb22 100644 --- a/mobile/lib/modules/archive/views/archive_page.dart +++ b/mobile/lib/modules/archive/views/archive_page.dart @@ -17,7 +17,7 @@ class ArchivePage extends HookConsumerWidget { final count = archivedAssets.value?.totalAssets.toString() ?? "?"; return AppBar( leading: IconButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_rounded), ), centerTitle: true, diff --git a/mobile/lib/modules/asset_viewer/ui/bottom_gallery_bar.dart b/mobile/lib/modules/asset_viewer/ui/bottom_gallery_bar.dart index a7d5e4e71..7c50a9989 100644 --- a/mobile/lib/modules/asset_viewer/ui/bottom_gallery_bar.dart +++ b/mobile/lib/modules/asset_viewer/ui/bottom_gallery_bar.dart @@ -120,7 +120,7 @@ class BottomGalleryBar extends ConsumerWidget { if (isDeleted && isParent) { if (totalAssets == 1) { // Handle only one asset - context.popRoute(); + context.maybePop(); } else { // Go to next page otherwise controller.nextPage( @@ -191,7 +191,7 @@ class BottomGalleryBar extends ConsumerWidget { stackElements.elementAt(stackIndex), ); ctx.pop(); - context.popRoute(); + context.maybePop(); }, title: const Text( "viewer_stack_use_as_main_asset", @@ -218,7 +218,7 @@ class BottomGalleryBar extends ConsumerWidget { childrenToRemove: [asset], ); ctx.pop(); - context.popRoute(); + context.maybePop(); } else { await ref.read(assetStackServiceProvider).updateStack( asset, @@ -246,7 +246,7 @@ class BottomGalleryBar extends ConsumerWidget { childrenToRemove: stack, ); ctx.pop(); - context.popRoute(); + context.maybePop(); }, title: const Text( "viewer_unstack", @@ -277,7 +277,7 @@ class BottomGalleryBar extends ConsumerWidget { handleArchive() { ref.read(assetProvider.notifier).toggleArchive([asset]); if (isParent) { - context.popRoute(); + context.maybePop(); return; } removeAssetFromStack(); diff --git a/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart b/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart index 5d7258fb2..cdd99d2c5 100644 --- a/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart +++ b/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart @@ -147,7 +147,7 @@ class TopControlAppBar extends HookConsumerWidget { Widget buildBackButton() { return IconButton( onPressed: () { - context.popRoute(); + context.maybePop(); }, icon: Icon( Icons.arrow_back_ios_new_rounded, diff --git a/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart b/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart index 059c0c976..63c91a58f 100644 --- a/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart +++ b/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart @@ -173,7 +173,7 @@ class GalleryViewerPage extends HookConsumerWidget { final ratio = d.dy / max(d.dx.abs(), 1); if (d.dy > sensitivity && ratio > ratioThreshold) { - context.popRoute(); + context.maybePop(); } else if (d.dy < -sensitivity && ratio < -ratioThreshold) { showInfo(); } diff --git a/mobile/lib/modules/backup/views/album_preview_page.dart b/mobile/lib/modules/backup/views/album_preview_page.dart index e3c2b34b8..a354cf988 100644 --- a/mobile/lib/modules/backup/views/album_preview_page.dart +++ b/mobile/lib/modules/backup/views/album_preview_page.dart @@ -54,7 +54,7 @@ class AlbumPreviewPage extends HookConsumerWidget { ], ), leading: IconButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_new_rounded), ), ), diff --git a/mobile/lib/modules/backup/views/backup_album_selection_page.dart b/mobile/lib/modules/backup/views/backup_album_selection_page.dart index c2bcbb15c..37dccd656 100644 --- a/mobile/lib/modules/backup/views/backup_album_selection_page.dart +++ b/mobile/lib/modules/backup/views/backup_album_selection_page.dart @@ -191,7 +191,7 @@ class BackupAlbumSelectionPage extends HookConsumerWidget { return Scaffold( appBar: AppBar( leading: IconButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_rounded), ), title: const Text( diff --git a/mobile/lib/modules/backup/views/backup_controller_page.dart b/mobile/lib/modules/backup/views/backup_controller_page.dart index 0e22adeb9..5206d8d6f 100644 --- a/mobile/lib/modules/backup/views/backup_controller_page.dart +++ b/mobile/lib/modules/backup/views/backup_controller_page.dart @@ -260,7 +260,7 @@ class BackupControllerPage extends HookConsumerWidget { leading: IconButton( onPressed: () { ref.watch(websocketProvider.notifier).listenUploadEvent(); - context.popRoute(true); + context.maybePop(true); }, splashRadius: 24, icon: const Icon( diff --git a/mobile/lib/modules/backup/views/backup_options_page.dart b/mobile/lib/modules/backup/views/backup_options_page.dart index e8c9e5014..7d9c8116a 100644 --- a/mobile/lib/modules/backup/views/backup_options_page.dart +++ b/mobile/lib/modules/backup/views/backup_options_page.dart @@ -13,7 +13,7 @@ class BackupOptionsPage extends StatelessWidget { elevation: 0, title: const Text("backup_options_page_title").tr(), leading: IconButton( - onPressed: () => context.popRoute(true), + onPressed: () => context.maybePop(true), splashRadius: 24, icon: const Icon( Icons.arrow_back_ios_rounded, diff --git a/mobile/lib/modules/backup/views/failed_backup_status_page.dart b/mobile/lib/modules/backup/views/failed_backup_status_page.dart index b92c3f4db..f1f6f5a37 100644 --- a/mobile/lib/modules/backup/views/failed_backup_status_page.dart +++ b/mobile/lib/modules/backup/views/failed_backup_status_page.dart @@ -23,7 +23,7 @@ class FailedBackupStatusPage extends HookConsumerWidget { ), leading: IconButton( onPressed: () { - context.popRoute(true); + context.maybePop(true); }, splashRadius: 24, icon: const Icon( diff --git a/mobile/lib/modules/favorite/views/favorites_page.dart b/mobile/lib/modules/favorite/views/favorites_page.dart index 1352a57c3..0b06ceb2e 100644 --- a/mobile/lib/modules/favorite/views/favorites_page.dart +++ b/mobile/lib/modules/favorite/views/favorites_page.dart @@ -15,7 +15,7 @@ class FavoritesPage extends HookConsumerWidget { AppBar buildAppBar() { return AppBar( leading: IconButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_rounded), ), centerTitle: true, diff --git a/mobile/lib/modules/map/views/map_location_picker_page.dart b/mobile/lib/modules/map/views/map_location_picker_page.dart index b41c1184c..3f1ec47ca 100644 --- a/mobile/lib/modules/map/views/map_location_picker_page.dart +++ b/mobile/lib/modules/map/views/map_location_picker_page.dart @@ -41,7 +41,7 @@ class MapLocationPickerPage extends HookConsumerWidget { } void onClose([LatLng? selected]) { - context.popRoute(selected); + context.maybePop(selected); } Future getCurrentLocation() async { diff --git a/mobile/lib/modules/map/widgets/map_app_bar.dart b/mobile/lib/modules/map/widgets/map_app_bar.dart index ea73319c4..c33f16656 100644 --- a/mobile/lib/modules/map/widgets/map_app_bar.dart +++ b/mobile/lib/modules/map/widgets/map_app_bar.dart @@ -50,7 +50,7 @@ class _NonSelectionRow extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ ElevatedButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), style: ElevatedButton.styleFrom( shape: const CircleBorder(), ), diff --git a/mobile/lib/modules/memories/views/memory_page.dart b/mobile/lib/modules/memories/views/memory_page.dart index aa968303b..9afe38258 100644 --- a/mobile/lib/modules/memories/views/memory_page.dart +++ b/mobile/lib/modules/memories/views/memory_page.dart @@ -152,7 +152,7 @@ class MemoryPage extends HookConsumerWidget { final offset = notification.metrics.pixels; if (isEpiloguePage && (offset > notification.metrics.maxScrollExtent + 150)) { - context.popRoute(); + context.maybePop(); return true; } } @@ -255,7 +255,7 @@ class MemoryPage extends HookConsumerWidget { // auto_route doesn't invoke pop scope, so // turn off full screen mode here // https://github.com/Milad-Akarie/auto_route_library/issues/1799 - context.popRoute(); + context.maybePop(); SystemChrome.setEnabledSystemUIMode( SystemUiMode.edgeToEdge, ); diff --git a/mobile/lib/modules/onboarding/views/permission_onboarding_page.dart b/mobile/lib/modules/onboarding/views/permission_onboarding_page.dart index 47ad6f26a..aabfa9760 100644 --- a/mobile/lib/modules/onboarding/views/permission_onboarding_page.dart +++ b/mobile/lib/modules/onboarding/views/permission_onboarding_page.dart @@ -176,7 +176,7 @@ class PermissionOnboardingPage extends HookConsumerWidget { ), TextButton( child: const Text('permission_onboarding_back').tr(), - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), ), ], ), diff --git a/mobile/lib/modules/search/views/all_motion_videos_page.dart b/mobile/lib/modules/search/views/all_motion_videos_page.dart index 2d68b8cfe..013f9a923 100644 --- a/mobile/lib/modules/search/views/all_motion_videos_page.dart +++ b/mobile/lib/modules/search/views/all_motion_videos_page.dart @@ -18,7 +18,7 @@ class AllMotionPhotosPage extends HookConsumerWidget { appBar: AppBar( title: const Text('motion_photos_page_title').tr(), leading: IconButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_rounded), ), ), diff --git a/mobile/lib/modules/search/views/all_videos_page.dart b/mobile/lib/modules/search/views/all_videos_page.dart index 98bfb9728..70a6d1a9f 100644 --- a/mobile/lib/modules/search/views/all_videos_page.dart +++ b/mobile/lib/modules/search/views/all_videos_page.dart @@ -15,7 +15,7 @@ class AllVideosPage extends HookConsumerWidget { appBar: AppBar( title: const Text('all_videos_page_title').tr(), leading: IconButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_rounded), ), ), diff --git a/mobile/lib/modules/search/views/curated_location_page.dart b/mobile/lib/modules/search/views/curated_location_page.dart index b216baf3c..2d027c62b 100644 --- a/mobile/lib/modules/search/views/curated_location_page.dart +++ b/mobile/lib/modules/search/views/curated_location_page.dart @@ -23,7 +23,7 @@ class CuratedLocationPage extends HookConsumerWidget { 'curated_location_page_title', ).tr(), leading: IconButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_rounded), ), ), diff --git a/mobile/lib/modules/search/views/person_result_page.dart b/mobile/lib/modules/search/views/person_result_page.dart index 0b7eeea51..59f4d8829 100644 --- a/mobile/lib/modules/search/views/person_result_page.dart +++ b/mobile/lib/modules/search/views/person_result_page.dart @@ -102,7 +102,7 @@ class PersonResultPage extends HookConsumerWidget { appBar: AppBar( title: Text(name.value), leading: IconButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_rounded), ), actions: [ diff --git a/mobile/lib/modules/search/views/recently_added_page.dart b/mobile/lib/modules/search/views/recently_added_page.dart index bc17ef2af..3c033cf2b 100644 --- a/mobile/lib/modules/search/views/recently_added_page.dart +++ b/mobile/lib/modules/search/views/recently_added_page.dart @@ -18,7 +18,7 @@ class RecentlyAddedPage extends HookConsumerWidget { appBar: AppBar( title: const Text('recently_added_page_title').tr(), leading: IconButton( - onPressed: () => context.popRoute(), + onPressed: () => context.maybePop(), icon: const Icon(Icons.arrow_back_ios_rounded), ), ), diff --git a/mobile/lib/modules/shared_link/views/shared_link_edit_page.dart b/mobile/lib/modules/shared_link/views/shared_link_edit_page.dart index 56d064e29..1002c6c4c 100644 --- a/mobile/lib/modules/shared_link/views/shared_link_edit_page.dart +++ b/mobile/lib/modules/shared_link/views/shared_link_edit_page.dart @@ -319,7 +319,7 @@ class SharedLinkEditPage extends HookConsumerWidget { alignment: Alignment.bottomRight, child: ElevatedButton( onPressed: () { - context.popRoute(); + context.maybePop(); }, child: const Text( "share_done", @@ -422,7 +422,7 @@ class SharedLinkEditPage extends HookConsumerWidget { changeExpiry: changeExpiry, ); ref.invalidate(sharedLinksStateProvider); - context.popRoute(); + context.maybePop(); } return Scaffold( diff --git a/mobile/lib/modules/trash/views/trash_page.dart b/mobile/lib/modules/trash/views/trash_page.dart index 1ec982560..19a0c027f 100644 --- a/mobile/lib/modules/trash/views/trash_page.dart +++ b/mobile/lib/modules/trash/views/trash_page.dart @@ -143,7 +143,7 @@ class TrashPage extends HookConsumerWidget { return AppBar( leading: IconButton( onPressed: !selectionEnabledHook.value - ? () => context.popRoute() + ? () => context.maybePop() : () { selectionEnabledHook.value = false; selection.value = {}; diff --git a/mobile/lib/routing/router.dart b/mobile/lib/routing/router.dart index 6fe574c03..de9d7ef25 100644 --- a/mobile/lib/routing/router.dart +++ b/mobile/lib/routing/router.dart @@ -20,7 +20,6 @@ import 'package:immich_mobile/modules/album/views/select_user_for_sharing_page.d import 'package:immich_mobile/modules/album/views/sharing_page.dart'; import 'package:immich_mobile/modules/archive/views/archive_page.dart'; import 'package:immich_mobile/modules/asset_viewer/views/gallery_viewer.dart'; -import 'package:immich_mobile/modules/asset_viewer/views/video_viewer_page.dart'; import 'package:immich_mobile/modules/backup/views/album_preview_page.dart'; import 'package:immich_mobile/modules/backup/views/backup_album_selection_page.dart'; import 'package:immich_mobile/modules/backup/views/backup_controller_page.dart'; diff --git a/mobile/lib/shared/ui/location_picker.dart b/mobile/lib/shared/ui/location_picker.dart index ed68c05b2..421eced5d 100644 --- a/mobile/lib/shared/ui/location_picker.dart +++ b/mobile/lib/shared/ui/location_picker.dart @@ -79,7 +79,7 @@ class _LocationPicker extends HookWidget { ).tr(), ), TextButton( - onPressed: () => context.popRoute(latlng), + onPressed: () => context.maybePop(latlng), child: Text( "action_common_update", style: context.textTheme.bodyMedium?.copyWith( diff --git a/mobile/lib/shared/views/app_log_page.dart b/mobile/lib/shared/views/app_log_page.dart index 993b25c7c..557c5bbaa 100644 --- a/mobile/lib/shared/views/app_log_page.dart +++ b/mobile/lib/shared/views/app_log_page.dart @@ -105,7 +105,7 @@ class AppLogPage extends HookConsumerWidget { ], leading: IconButton( onPressed: () { - context.popRoute(); + context.maybePop(); }, icon: const Icon( Icons.arrow_back_ios_new_rounded,