Forráskód Böngészése

fix(mobile): Delete goes to next page instead of popping back to the main timeline (#1781)

* delete goes to next page instead of popping

* moves pagecontroller to constructor so we dont rebuilt each time
martyfuhry 2 éve
szülő
commit
8c315dfeb1

+ 15 - 6
mobile/lib/modules/asset_viewer/views/gallery_viewer.dart

@@ -35,13 +35,16 @@ class GalleryViewerPage extends HookConsumerWidget {
   final Asset asset;
 
   GalleryViewerPage({
-    Key? key,
+    super.key,
     required this.assetList,
     required this.asset,
-  }) : super(key: key);
+  }) : controller =
+      PageController(initialPage: assetList.indexOf(asset));
 
   Asset? assetDetail;
 
+  late PageController controller;
+
   @override
   Widget build(BuildContext context, WidgetRef ref) {
     final Box<dynamic> box = Hive.box(userInfoBox);
@@ -56,9 +59,6 @@ class GalleryViewerPage extends HookConsumerWidget {
     late Offset localPosition;
     final authToken = 'Bearer ${box.get(accessTokenKey)}';
 
-    PageController controller =
-        PageController(initialPage: assetList.indexOf(asset));
-
     useEffect(
       () {
         isLoadPreview.value =
@@ -187,8 +187,17 @@ class GalleryViewerPage extends HookConsumerWidget {
         builder: (BuildContext _) {
           return DeleteDialog(
             onDelete: () {
+              if (assetList.length == 1) {
+                // Handle only one asset
+                AutoRouter.of(context).pop();
+              } else {
+                // Go to next page otherwise
+                controller.nextPage(
+                  duration: const Duration(milliseconds: 100),
+                  curve: Curves.fastLinearToSlowEaseIn,
+                );
+              }
               ref.watch(assetProvider.notifier).deleteAssets({deleteAsset});
-              AutoRouter.of(context).pop(null);
             },
           );
         },