Extract function to delete a file from the DB

This commit is contained in:
Vishnu Mohandas 2020-07-29 13:23:13 +05:30
parent bf40fc481c
commit ce9cf2c026
3 changed files with 21 additions and 20 deletions

View file

@ -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();
}
}

View file

@ -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
lib/utils/file_util.dart Normal file
View file

@ -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);
}
}