diff --git a/mobile/lib/presentation/pages/drift_remote_album.page.dart b/mobile/lib/presentation/pages/drift_remote_album.page.dart index 0c0a423d2b..023968b8cf 100644 --- a/mobile/lib/presentation/pages/drift_remote_album.page.dart +++ b/mobile/lib/presentation/pages/drift_remote_album.page.dart @@ -1,4 +1,5 @@ import 'package:auto_route/auto_route.dart'; +import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -226,10 +227,19 @@ class _RemoteAlbumPageState extends ConsumerState { if (didPop || !mounted) { return; } - final hasAncestor = context.findAncestorWidgetOfExactType() != null; + + final ancestors = context.router.stack.take(context.router.stack.length - 1); + final ancestorPage = ancestors.lastWhereOrNull((route) { + return route.name == RemoteAlbumRoute.page.name; + }); + Navigator.of(context).pop(); - if (!hasAncestor) { + + if (ancestorPage == null) { ref.read(currentRemoteAlbumProvider.notifier).dispose(); + } else { + final album = (ancestorPage.routeData.args as RemoteAlbumRouteArgs).album; + ref.read(currentRemoteAlbumProvider.notifier).setAlbum(album); } }, child: ProviderScope( diff --git a/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet.widget.dart index 2d948790da..5eab792b08 100644 --- a/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet.widget.dart +++ b/mobile/lib/presentation/widgets/asset_viewer/bottom_sheet.widget.dart @@ -175,13 +175,9 @@ class _AssetDetailBottomSheet extends ConsumerWidget { album: album, isOwner: isOwner, onAlbumSelected: (album) async { - final prevAlbum = ref.read(currentRemoteAlbumProvider); ref.read(currentRemoteAlbumProvider.notifier).setAlbum(album); ref.invalidate(assetViewerProvider); context.router.popAndPush(RemoteAlbumRoute(album: album)); - if (prevAlbum != null) { - ref.read(currentRemoteAlbumProvider.notifier).setAlbum(prevAlbum); - } }, ); }), diff --git a/mobile/lib/routing/router.dart b/mobile/lib/routing/router.dart index 7554c7b1cf..5c0299c414 100644 --- a/mobile/lib/routing/router.dart +++ b/mobile/lib/routing/router.dart @@ -303,7 +303,7 @@ class AppRouter extends RootStackRouter { AutoRoute(page: DriftBackupAlbumSelectionRoute.page, guards: [_authGuard, _duplicateGuard]), AutoRoute(page: LocalTimelineRoute.page, guards: [_authGuard, _duplicateGuard]), AutoRoute(page: MainTimelineRoute.page, guards: [_authGuard, _duplicateGuard]), - AutoRoute(page: RemoteAlbumRoute.page, guards: [_authGuard, _duplicateGuard]), + AutoRoute(page: RemoteAlbumRoute.page, guards: [_authGuard]), AutoRoute( page: AssetViewerRoute.page, guards: [_authGuard, _duplicateGuard],