瀏覽代碼

Extract code to archive a file to a utility function

vishnukvmd 3 年之前
父節點
當前提交
71adfcfc54
共有 2 個文件被更改,包括 32 次插入16 次删除
  1. 3 16
      lib/ui/gallery_app_bar_widget.dart
  2. 29 0
      lib/utils/archive_util.dart

+ 3 - 16
lib/ui/gallery_app_bar_widget.dart

@@ -16,6 +16,7 @@ import 'package:photos/services/collections_service.dart';
 import 'package:photos/ui/change_collection_name_dialog.dart';
 import 'package:photos/ui/create_collection_page.dart';
 import 'package:photos/ui/share_collection_widget.dart';
+import 'package:photos/utils/archive_util.dart';
 import 'package:photos/utils/delete_file_util.dart';
 import 'package:photos/utils/dialog_util.dart';
 import 'package:photos/services/file_magic_service.dart';
@@ -381,25 +382,11 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
 
   Future<void> _handleVisibilityChangeRequest(
       BuildContext context, int newVisibility) async {
-    final dialog = createProgressDialog(
-        context,
-        newVisibility == kVisibilityArchive
-            ? "archiving..."
-            : "unarchiving...");
-    await dialog.show();
     try {
-      await FileMagicService.instance
-          .changeVisibility(widget.selectedFiles.files.toList(), newVisibility);
-      showToast(
-          newVisibility == kVisibilityArchive
-              ? "successfully archived"
-              : "successfully unarchived",
-          toastLength: Toast.LENGTH_SHORT);
-
-      await dialog.hide();
+      await changeVisibility(
+          context, widget.selectedFiles.files.toList(), newVisibility);
     } catch (e, s) {
       _logger.severe("failed to update file visibility", e, s);
-      await dialog.hide();
       await showGenericErrorDialog(context);
     } finally {
       _clearSelectedFiles();

+ 29 - 0
lib/utils/archive_util.dart

@@ -0,0 +1,29 @@
+import 'package:flutter/widgets.dart';
+import 'package:fluttertoast/fluttertoast.dart';
+import 'package:logging/logging.dart';
+import 'package:photos/models/file.dart';
+import 'package:photos/models/magic_metadata.dart';
+import 'package:photos/services/file_magic_service.dart';
+import 'package:photos/utils/dialog_util.dart';
+import 'package:photos/utils/toast_util.dart';
+
+Future<void> changeVisibility(
+    BuildContext context, List<File> files, int newVisibility) async {
+  final dialog = createProgressDialog(context,
+      newVisibility == kVisibilityArchive ? "archiving..." : "unarchiving...");
+  await dialog.show();
+  try {
+    await FileMagicService.instance.changeVisibility(files, newVisibility);
+    showToast(
+        newVisibility == kVisibilityArchive
+            ? "successfully archived"
+            : "successfully unarchived",
+        toastLength: Toast.LENGTH_SHORT);
+
+    await dialog.hide();
+  } catch (e, s) {
+    Logger("ArchiveUtil").severe("failed to update file visibility", e, s);
+    await dialog.hide();
+    rethrow;
+  }
+}