Update delete file interaction
This commit is contained in:
parent
c44e89641b
commit
56c31318d4
4 changed files with 31 additions and 34 deletions
|
@ -8,6 +8,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/dialog_util.dart';
|
||||
import 'package:photos/utils/file_util.dart';
|
||||
import 'package:photos/utils/share_util.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
@ -179,8 +180,19 @@ class _DetailPageState extends State<DetailPage> {
|
|||
final file = _files[_selectedIndex];
|
||||
return LikeButton(
|
||||
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) {
|
||||
return Icon(
|
||||
|
@ -255,21 +267,15 @@ class _DetailPageState extends State<DetailPage> {
|
|||
|
||||
void _showDeleteSheet() {
|
||||
final action = CupertinoActionSheet(
|
||||
title: Text("Delete file?"),
|
||||
actions: <Widget>[
|
||||
CupertinoActionSheetAction(
|
||||
child: Text("Delete on device"),
|
||||
child: Text("Delete"),
|
||||
isDestructiveAction: true,
|
||||
onPressed: () async {
|
||||
await _delete(false);
|
||||
await _delete();
|
||||
},
|
||||
),
|
||||
CupertinoActionSheetAction(
|
||||
child: Text("Delete everywhere [WiP]"),
|
||||
isDestructiveAction: true,
|
||||
onPressed: () async {
|
||||
await _delete(true);
|
||||
},
|
||||
)
|
||||
],
|
||||
cancelButton: CupertinoActionSheetAction(
|
||||
child: Text("Cancel"),
|
||||
|
@ -281,7 +287,7 @@ class _DetailPageState extends State<DetailPage> {
|
|||
showCupertinoModalPopup(context: context, builder: (_) => action);
|
||||
}
|
||||
|
||||
Future _delete(bool deleteEveryWhere) async {
|
||||
Future _delete() async {
|
||||
final file = _files[_selectedIndex];
|
||||
final totalFiles = _files.length;
|
||||
if (_selectedIndex == totalFiles - 1) {
|
||||
|
@ -305,7 +311,6 @@ class _DetailPageState extends State<DetailPage> {
|
|||
Navigator.of(context, rootNavigator: true).pop(); // Close gallery
|
||||
}
|
||||
|
||||
await deleteFiles([file], deleteEveryWhere: deleteEveryWhere);
|
||||
FileRepository.instance.reloadFiles();
|
||||
await deleteFiles([file]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -181,21 +181,15 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
|
|||
|
||||
void _showDeleteSheet(BuildContext context) {
|
||||
final action = CupertinoActionSheet(
|
||||
title: Text("Delete file?"),
|
||||
actions: <Widget>[
|
||||
CupertinoActionSheetAction(
|
||||
child: Text("Delete on device"),
|
||||
child: Text("Delete"),
|
||||
isDestructiveAction: true,
|
||||
onPressed: () {
|
||||
_deleteSelected(context, false);
|
||||
onPressed: () async {
|
||||
await _deleteSelected();
|
||||
},
|
||||
),
|
||||
CupertinoActionSheetAction(
|
||||
child: Text("Delete everywhere [WiP]"),
|
||||
isDestructiveAction: true,
|
||||
onPressed: () {
|
||||
_deleteSelected(context, true);
|
||||
},
|
||||
)
|
||||
],
|
||||
cancelButton: CupertinoActionSheetAction(
|
||||
child: Text("Cancel"),
|
||||
|
@ -207,13 +201,11 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
|
|||
showCupertinoModalPopup(context: context, builder: (_) => action);
|
||||
}
|
||||
|
||||
_deleteSelected(BuildContext context, bool deleteEveryWhere) async {
|
||||
_deleteSelected() async {
|
||||
Navigator.of(context, rootNavigator: true).pop();
|
||||
final dialog = createProgressDialog(context, "Deleting...");
|
||||
await dialog.show();
|
||||
await deleteFiles(widget.selectedFiles.files.toList(),
|
||||
deleteEveryWhere: deleteEveryWhere);
|
||||
await FileRepository.instance.reloadFiles();
|
||||
await deleteFiles(widget.selectedFiles.files.toList());
|
||||
_clearSelectedFiles();
|
||||
await dialog.hide();
|
||||
}
|
||||
|
|
|
@ -88,7 +88,6 @@ class _ThumbnailWidgetState extends State<ThumbnailWidget> {
|
|||
widget.file.getAsset().then((asset) async {
|
||||
if (asset == null) {
|
||||
await deleteFiles([widget.file]);
|
||||
await FileRepository.instance.reloadFiles();
|
||||
return;
|
||||
}
|
||||
asset
|
||||
|
|
|
@ -17,21 +17,22 @@ import 'package:photos/core/constants.dart';
|
|||
import 'package:photos/db/files_db.dart';
|
||||
import 'package:photos/models/file.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/sync_service.dart';
|
||||
|
||||
import 'crypto_util.dart';
|
||||
|
||||
final logger = Logger("FileUtil");
|
||||
|
||||
Future<void> deleteFiles(List<File> files,
|
||||
{bool deleteEveryWhere = false}) async {
|
||||
Future<void> deleteFiles(List<File> files) 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);
|
||||
await FilesDB.instance.markForDeletion(file);
|
||||
}
|
||||
await FileRepository.instance.reloadFiles();
|
||||
SyncService.instance.sync();
|
||||
}
|
||||
|
||||
void preloadFile(File file) {
|
||||
|
|
Loading…
Add table
Reference in a new issue