Browse Source

remove toggle inside alert and show different content

shalong-tanwen 1 year ago
parent
commit
1270086b43

+ 1 - 1
mobile/assets/i18n/en-US.json

@@ -148,7 +148,7 @@
   "date_format": "E, LLL d, y • h:mm a",
   "date_format": "E, LLL d, y • h:mm a",
   "delete_dialog_alert": "These items will be permanently deleted from Immich and from your device",
   "delete_dialog_alert": "These items will be permanently deleted from Immich and from your device",
   "delete_dialog_alert_local": "These items will be permanently removed from your device",
   "delete_dialog_alert_local": "These items will be permanently removed from your device",
-  "delete_dialog_alert_merged_only": "Delete only backed up assets",
+  "delete_dialog_alert_local_non_backed_up": "Some of the items aren't backed up to Immich and will be permanently removed from your device",
   "delete_dialog_cancel": "Cancel",
   "delete_dialog_cancel": "Cancel",
   "delete_dialog_ok": "Delete",
   "delete_dialog_ok": "Delete",
   "delete_dialog_title": "Delete Permanently",
   "delete_dialog_title": "Delete Permanently",

+ 5 - 2
mobile/lib/modules/home/ui/control_bottom_app_bar.dart

@@ -14,7 +14,7 @@ class ControlBottomAppBar extends ConsumerWidget {
   final void Function() onFavorite;
   final void Function() onFavorite;
   final void Function() onArchive;
   final void Function() onArchive;
   final void Function() onDelete;
   final void Function() onDelete;
-  final void Function(bool onlyMerged) onDeleteLocal;
+  final void Function() onDeleteLocal;
   final Function(Album album) onAddToAlbum;
   final Function(Album album) onAddToAlbum;
   final void Function() onCreateNewAlbum;
   final void Function() onCreateNewAlbum;
   final void Function() onUpload;
   final void Function() onUpload;
@@ -109,7 +109,10 @@ class ControlBottomAppBar extends ConsumerWidget {
                       showDialog(
                       showDialog(
                         context: context,
                         context: context,
                         builder: (BuildContext context) {
                         builder: (BuildContext context) {
-                          return DeleteLocalDialog(
+                          return DeleteDialog(
+                            content: selectionAssetState.hasLocal
+                                ? "delete_dialog_alert_local_non_backed_up"
+                                : "delete_dialog_alert_local",
                             onDelete: onDeleteLocal,
                             onDelete: onDeleteLocal,
                           );
                           );
                         },
                         },

+ 2 - 72
mobile/lib/modules/home/ui/delete_dialog.dart

@@ -1,86 +1,16 @@
-import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_hooks/flutter_hooks.dart';
-import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/shared/ui/confirm_dialog.dart';
 import 'package:immich_mobile/shared/ui/confirm_dialog.dart';
 
 
 class DeleteDialog extends ConfirmDialog {
 class DeleteDialog extends ConfirmDialog {
   final Function onDelete;
   final Function onDelete;
 
 
-  const DeleteDialog({Key? key, required this.onDelete})
+  const DeleteDialog({Key? key, required this.onDelete, content})
       : super(
       : super(
           key: key,
           key: key,
           title: "delete_dialog_title",
           title: "delete_dialog_title",
-          content: "delete_dialog_alert",
+          content: content ?? "delete_dialog_alert",
           cancel: "delete_dialog_cancel",
           cancel: "delete_dialog_cancel",
           ok: "delete_dialog_ok",
           ok: "delete_dialog_ok",
           onOk: onDelete,
           onOk: onDelete,
         );
         );
 }
 }
-
-class DeleteLocalDialog extends HookConsumerWidget {
-  final Function(bool onlyMerged) onDelete;
-
-  const DeleteLocalDialog({
-    Key? key,
-    required this.onDelete,
-  }) : super(key: key);
-
-  @override
-  Widget build(BuildContext context, WidgetRef ref) {
-    final themeData = Theme.of(context);
-    final onlyMerged = useState(true);
-
-    return AlertDialog(
-      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
-      title: const Text("delete_dialog_title").tr(),
-      content: Column(
-        mainAxisSize: MainAxisSize.min,
-        children: [
-          const Text("delete_dialog_alert_local").tr(),
-          Padding(
-            padding: const EdgeInsets.only(top: 20),
-            child: SwitchListTile.adaptive(
-              value: onlyMerged.value,
-              onChanged: (value) {
-                onlyMerged.value = value;
-              },
-              activeColor: themeData.primaryColor,
-              dense: true,
-              title: Text(
-                "delete_dialog_alert_merged_only",
-                style: themeData.textTheme.labelLarge
-                    ?.copyWith(fontWeight: FontWeight.bold),
-              ).tr(),
-            ),
-          ),
-        ],
-      ),
-      actions: [
-        TextButton(
-          onPressed: () => Navigator.of(context).pop(false),
-          child: Text(
-            "delete_dialog_cancel",
-            style: TextStyle(
-              color: Theme.of(context).primaryColor,
-              fontWeight: FontWeight.bold,
-            ),
-          ).tr(),
-        ),
-        TextButton(
-          onPressed: () {
-            onDelete(onlyMerged.value);
-            Navigator.of(context).pop(true);
-          },
-          child: Text(
-            "delete_dialog_ok",
-            style: TextStyle(
-              color: Colors.red[400],
-              fontWeight: FontWeight.bold,
-            ),
-          ).tr(),
-        ),
-      ],
-    );
-  }
-}

+ 2 - 2
mobile/lib/modules/home/views/home_page.dart

@@ -164,14 +164,14 @@ class HomePage extends HookConsumerWidget {
         }
         }
       }
       }
 
 
-      void onDeleteLocal(bool onlyMerged) async {
+      void onDeleteLocal() async {
         processing.value = true;
         processing.value = true;
         try {
         try {
           final localIds = selection.value.where((a) => a.isLocal).toList();
           final localIds = selection.value.where((a) => a.isLocal).toList();
 
 
           final isDeleted = await ref
           final isDeleted = await ref
               .read(assetProvider.notifier)
               .read(assetProvider.notifier)
-              .deleteLocalAssets(localIds, onlyMerged: onlyMerged);
+              .deleteLocalAssets(localIds);
           if (isDeleted) {
           if (isDeleted) {
             final assetOrAssets = localIds.length > 1 ? 'assets' : 'asset';
             final assetOrAssets = localIds.length > 1 ? 'assets' : 'asset';
             ImmichToast.show(
             ImmichToast.show(

+ 2 - 8
mobile/lib/shared/providers/asset.provider.dart

@@ -92,17 +92,11 @@ class AssetNotifier extends StateNotifier<bool> {
     await _syncService.syncNewAssetToDb(newAsset);
     await _syncService.syncNewAssetToDb(newAsset);
   }
   }
 
 
-  Future<bool> deleteLocalAssets(
-    Iterable<Asset> deleteAssets, {
-    bool onlyMerged = true,
-  }) async {
+  Future<bool> deleteLocalAssets(Iterable<Asset> deleteAssets) async {
     _deleteInProgress = true;
     _deleteInProgress = true;
     state = true;
     state = true;
     try {
     try {
-      final assets = onlyMerged
-          ? deleteAssets.where((e) => e.storage == AssetState.merged)
-          : deleteAssets;
-      final localDeleted = await _deleteLocalAssets(assets);
+      final localDeleted = await _deleteLocalAssets(deleteAssets);
       if (localDeleted.isNotEmpty) {
       if (localDeleted.isNotEmpty) {
         final localOnlyIds = deleteAssets
         final localOnlyIds = deleteAssets
             .where((e) => e.storage == AssetState.local)
             .where((e) => e.storage == AssetState.local)

+ 2 - 3
mobile/lib/shared/ui/confirm_dialog.dart

@@ -1,8 +1,7 @@
 import 'package:easy_localization/easy_localization.dart';
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
-import 'package:hooks_riverpod/hooks_riverpod.dart';
 
 
-class ConfirmDialog extends ConsumerWidget {
+class ConfirmDialog extends StatelessWidget {
   final Function onOk;
   final Function onOk;
   final String title;
   final String title;
   final String content;
   final String content;
@@ -19,7 +18,7 @@ class ConfirmDialog extends ConsumerWidget {
   }) : super(key: key);
   }) : super(key: key);
 
 
   @override
   @override
-  Widget build(BuildContext context, WidgetRef ref) {
+  Widget build(BuildContext context) {
     return AlertDialog(
     return AlertDialog(
       shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
       shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
       title: Text(title).tr(),
       title: Text(title).tr(),