瀏覽代碼

Extract function to delete a file from the DB

Vishnu Mohandas 5 年之前
父節點
當前提交
ce9cf2c026
共有 3 個文件被更改,包括 21 次插入20 次删除
  1. 3 8
      lib/ui/detail_page.dart
  2. 4 12
      lib/ui/gallery_app_bar_widget.dart
  3. 14 0
      lib/utils/file_util.dart

+ 3 - 8
lib/ui/detail_page.dart

@@ -1,9 +1,7 @@
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:like_button/like_button.dart';
-import 'package:photo_manager/photo_manager.dart';
 import 'package:photos/core/cache/image_cache.dart';
-import 'package:photos/db/files_db.dart';
 import 'package:photos/favorite_files_repository.dart';
 import 'package:photos/file_repository.dart';
 import 'package:photos/models/file_type.dart';
@@ -11,6 +9,7 @@ import 'package:photos/models/file.dart';
 import 'package:photos/ui/video_widget.dart';
 import 'package:photos/ui/zoomable_image.dart';
 import 'package:photos/utils/date_time_util.dart';
+import 'package:photos/utils/file_util.dart';
 import 'package:photos/utils/share_util.dart';
 import 'package:logging/logging.dart';
 
@@ -300,7 +299,7 @@ class _DetailPageState extends State<DetailPage> {
     showCupertinoModalPopup(context: context, builder: (_) => action);
   }
 
-  Future _delete(bool deleteEverywhere) async {
+  Future _delete(bool deleteEveryWhere) async {
     final file = _files[_selectedIndex];
     final totalFiles = _files.length;
     if (_selectedIndex == totalFiles - 1) {
@@ -324,11 +323,7 @@ class _DetailPageState extends State<DetailPage> {
       Navigator.of(context, rootNavigator: true).pop(); // Close gallery
     }
 
-    await PhotoManager.editor.deleteWithIds([file.localId]);
-    deleteEverywhere
-        ? await FilesDB.instance.markForDeletion(file)
-        : await FilesDB.instance.delete(file);
-
+    await deleteWithIds([file], deleteEveryWhere: deleteEveryWhere);
     FileRepository.instance.reloadFiles();
   }
 }

+ 4 - 12
lib/ui/gallery_app_bar_widget.dart

@@ -3,15 +3,13 @@ import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:photos/core/configuration.dart';
 import 'package:photos/core/event_bus.dart';
-import 'package:photos/db/files_db.dart';
 import 'package:photos/events/remote_sync_event.dart';
-import 'package:photos/models/file.dart';
 import 'package:photos/file_repository.dart';
 import 'package:photos/models/selected_files.dart';
 import 'package:photos/ui/setup_page.dart';
-import 'package:photo_manager/photo_manager.dart';
 import 'package:photos/ui/share_folder_widget.dart';
 import 'package:photos/utils/dialog_util.dart';
+import 'package:photos/utils/file_util.dart';
 import 'package:photos/utils/share_util.dart';
 
 enum GalleryAppBarType {
@@ -166,18 +164,12 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
     showCupertinoModalPopup(context: context, builder: (_) => action);
   }
 
-  _deleteSelected(BuildContext context, bool deleteEverywhere) async {
+  _deleteSelected(BuildContext context, bool deleteEveryWhere) async {
     Navigator.of(context, rootNavigator: true).pop();
     final dialog = createProgressDialog(context, "Deleting...");
     await dialog.show();
-    await PhotoManager.editor.deleteWithIds(
-        widget.selectedFiles.files.map((p) => p.localId).toList());
-
-    for (File file in widget.selectedFiles.files) {
-      deleteEverywhere
-          ? await FilesDB.instance.markForDeletion(file)
-          : await FilesDB.instance.delete(file);
-    }
+    await deleteWithIds(widget.selectedFiles.files.toList(),
+        deleteEveryWhere: deleteEveryWhere);
     await FileRepository.instance.reloadFiles();
     _clearSelectedFiles();
     await dialog.hide();

+ 14 - 0
lib/utils/file_util.dart

@@ -0,0 +1,14 @@
+import 'package:photo_manager/photo_manager.dart';
+import 'package:photos/db/files_db.dart';
+import 'package:photos/models/file.dart';
+
+Future<void> deleteWithIds(List<File> files,
+    {bool deleteEveryWhere = false}) async {
+  await PhotoManager.editor
+      .deleteWithIds(files.map((file) => file.localId).toList());
+  for (File file in files) {
+    deleteEveryWhere
+        ? await FilesDB.instance.markForDeletion(file)
+        : await FilesDB.instance.delete(file);
+  }
+}