Browse Source

Update delete file interaction

Vishnu Mohandas 4 years ago
parent
commit
56c31318d4

+ 19 - 14
lib/ui/detail_page.dart

@@ -8,6 +8,7 @@ import 'package:photos/models/file.dart';
 import 'package:photos/ui/video_widget.dart';
 import 'package:photos/ui/video_widget.dart';
 import 'package:photos/ui/zoomable_image.dart';
 import 'package:photos/ui/zoomable_image.dart';
 import 'package:photos/utils/date_time_util.dart';
 import 'package:photos/utils/date_time_util.dart';
+import 'package:photos/utils/dialog_util.dart';
 import 'package:photos/utils/file_util.dart';
 import 'package:photos/utils/file_util.dart';
 import 'package:photos/utils/share_util.dart';
 import 'package:photos/utils/share_util.dart';
 import 'package:logging/logging.dart';
 import 'package:logging/logging.dart';
@@ -179,8 +180,19 @@ class _DetailPageState extends State<DetailPage> {
     final file = _files[_selectedIndex];
     final file = _files[_selectedIndex];
     return LikeButton(
     return LikeButton(
       isLiked: FavoritesService.instance.isLiked(file),
       isLiked: FavoritesService.instance.isLiked(file),
-      onTap: (oldValue) {
-        return FavoritesService.instance.setLiked(file, !oldValue);
+      onTap: (oldValue) async {
+        // return FavoritesService.instance.setLiked(file, !oldValue);
+        final dialog = createProgressDialog(context, "Adding to favorites...");
+        await dialog.show();
+        try {
+          await FavoritesService.instance.addToFavorites(file);
+        } catch (e, s) {
+          _logger.severe(e, s);
+          await dialog.hide();
+          showGenericErrorDialog(context);
+        } finally {
+          await dialog.hide();
+        }
       },
       },
       likeBuilder: (isLiked) {
       likeBuilder: (isLiked) {
         return Icon(
         return Icon(
@@ -255,21 +267,15 @@ class _DetailPageState extends State<DetailPage> {
 
 
   void _showDeleteSheet() {
   void _showDeleteSheet() {
     final action = CupertinoActionSheet(
     final action = CupertinoActionSheet(
+      title: Text("Delete file?"),
       actions: <Widget>[
       actions: <Widget>[
         CupertinoActionSheetAction(
         CupertinoActionSheetAction(
-          child: Text("Delete on device"),
+          child: Text("Delete"),
           isDestructiveAction: true,
           isDestructiveAction: true,
           onPressed: () async {
           onPressed: () async {
-            await _delete(false);
+            await _delete();
           },
           },
         ),
         ),
-        CupertinoActionSheetAction(
-          child: Text("Delete everywhere [WiP]"),
-          isDestructiveAction: true,
-          onPressed: () async {
-            await _delete(true);
-          },
-        )
       ],
       ],
       cancelButton: CupertinoActionSheetAction(
       cancelButton: CupertinoActionSheetAction(
         child: Text("Cancel"),
         child: Text("Cancel"),
@@ -281,7 +287,7 @@ class _DetailPageState extends State<DetailPage> {
     showCupertinoModalPopup(context: context, builder: (_) => action);
     showCupertinoModalPopup(context: context, builder: (_) => action);
   }
   }
 
 
-  Future _delete(bool deleteEveryWhere) async {
+  Future _delete() async {
     final file = _files[_selectedIndex];
     final file = _files[_selectedIndex];
     final totalFiles = _files.length;
     final totalFiles = _files.length;
     if (_selectedIndex == totalFiles - 1) {
     if (_selectedIndex == totalFiles - 1) {
@@ -305,7 +311,6 @@ class _DetailPageState extends State<DetailPage> {
       Navigator.of(context, rootNavigator: true).pop(); // Close gallery
       Navigator.of(context, rootNavigator: true).pop(); // Close gallery
     }
     }
 
 
-    await deleteFiles([file], deleteEveryWhere: deleteEveryWhere);
-    FileRepository.instance.reloadFiles();
+    await deleteFiles([file]);
   }
   }
 }
 }

+ 6 - 14
lib/ui/gallery_app_bar_widget.dart

@@ -181,21 +181,15 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
 
 
   void _showDeleteSheet(BuildContext context) {
   void _showDeleteSheet(BuildContext context) {
     final action = CupertinoActionSheet(
     final action = CupertinoActionSheet(
+      title: Text("Delete file?"),
       actions: <Widget>[
       actions: <Widget>[
         CupertinoActionSheetAction(
         CupertinoActionSheetAction(
-          child: Text("Delete on device"),
+          child: Text("Delete"),
           isDestructiveAction: true,
           isDestructiveAction: true,
-          onPressed: () {
-            _deleteSelected(context, false);
+          onPressed: () async {
+            await _deleteSelected();
           },
           },
         ),
         ),
-        CupertinoActionSheetAction(
-          child: Text("Delete everywhere [WiP]"),
-          isDestructiveAction: true,
-          onPressed: () {
-            _deleteSelected(context, true);
-          },
-        )
       ],
       ],
       cancelButton: CupertinoActionSheetAction(
       cancelButton: CupertinoActionSheetAction(
         child: Text("Cancel"),
         child: Text("Cancel"),
@@ -207,13 +201,11 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
     showCupertinoModalPopup(context: context, builder: (_) => action);
     showCupertinoModalPopup(context: context, builder: (_) => action);
   }
   }
 
 
-  _deleteSelected(BuildContext context, bool deleteEveryWhere) async {
+  _deleteSelected() async {
     Navigator.of(context, rootNavigator: true).pop();
     Navigator.of(context, rootNavigator: true).pop();
     final dialog = createProgressDialog(context, "Deleting...");
     final dialog = createProgressDialog(context, "Deleting...");
     await dialog.show();
     await dialog.show();
-    await deleteFiles(widget.selectedFiles.files.toList(),
-        deleteEveryWhere: deleteEveryWhere);
-    await FileRepository.instance.reloadFiles();
+    await deleteFiles(widget.selectedFiles.files.toList());
     _clearSelectedFiles();
     _clearSelectedFiles();
     await dialog.hide();
     await dialog.hide();
   }
   }

+ 0 - 1
lib/ui/thumbnail_widget.dart

@@ -88,7 +88,6 @@ class _ThumbnailWidgetState extends State<ThumbnailWidget> {
         widget.file.getAsset().then((asset) async {
         widget.file.getAsset().then((asset) async {
           if (asset == null) {
           if (asset == null) {
             await deleteFiles([widget.file]);
             await deleteFiles([widget.file]);
-            await FileRepository.instance.reloadFiles();
             return;
             return;
           }
           }
           asset
           asset

+ 6 - 5
lib/utils/file_util.dart

@@ -17,21 +17,22 @@ import 'package:photos/core/constants.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/models/file.dart';
 import 'package:photos/models/file.dart';
 import 'package:photos/models/file_type.dart';
 import 'package:photos/models/file_type.dart';
+import 'package:photos/repositories/file_repository.dart';
 import 'package:photos/services/collections_service.dart';
 import 'package:photos/services/collections_service.dart';
+import 'package:photos/services/sync_service.dart';
 
 
 import 'crypto_util.dart';
 import 'crypto_util.dart';
 
 
 final logger = Logger("FileUtil");
 final logger = Logger("FileUtil");
 
 
-Future<void> deleteFiles(List<File> files,
-    {bool deleteEveryWhere = false}) async {
+Future<void> deleteFiles(List<File> files) async {
   await PhotoManager.editor
   await PhotoManager.editor
       .deleteWithIds(files.map((file) => file.localID).toList());
       .deleteWithIds(files.map((file) => file.localID).toList());
   for (File file in files) {
   for (File file in files) {
-    deleteEveryWhere
-        ? await FilesDB.instance.markForDeletion(file)
-        : await FilesDB.instance.delete(file);
+    await FilesDB.instance.markForDeletion(file);
   }
   }
+  await FileRepository.instance.reloadFiles();
+  SyncService.instance.sync();
 }
 }
 
 
 void preloadFile(File file) {
 void preloadFile(File file) {