From 2459eabb0576d26f4d6f47c6537ba6193213b1a4 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 22 Dec 2022 14:10:21 -0600 Subject: [PATCH] feat(mobile) delete button in detail viewer (#1165) --- .../asset_viewer/ui/top_control_app_bar.dart | 15 ++++++++++++++- .../asset_viewer/views/gallery_viewer.dart | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart b/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart index b326fbbd49..0d45719dfe 100644 --- a/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart +++ b/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart @@ -10,6 +10,7 @@ class TopControlAppBar extends HookConsumerWidget with PreferredSizeWidget { required this.onMoreInfoPressed, required this.onDownloadPressed, required this.onSharePressed, + required this.onDeletePressed, required this.onToggleMotionVideo, required this.isPlayingMotionVideo, }) : super(key: key); @@ -18,6 +19,7 @@ class TopControlAppBar extends HookConsumerWidget with PreferredSizeWidget { final Function onMoreInfoPressed; final VoidCallback? onDownloadPressed; final VoidCallback onToggleMotionVideo; + final VoidCallback onDeletePressed; final Function onSharePressed; final bool isPlayingMotionVideo; @@ -74,7 +76,18 @@ class TopControlAppBar extends HookConsumerWidget with PreferredSizeWidget { onSharePressed(); }, icon: Icon( - Icons.share, + Icons.ios_share_rounded, + color: Colors.grey[200], + ), + ), + IconButton( + iconSize: iconSize, + splashRadius: iconSize, + onPressed: () { + onDeletePressed(); + }, + icon: Icon( + Icons.delete_outline_rounded, color: Colors.grey[200], ), ), diff --git a/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart b/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart index 74f53a2acc..0991846cb7 100644 --- a/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart +++ b/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart @@ -11,9 +11,11 @@ import 'package:immich_mobile/modules/asset_viewer/ui/top_control_app_bar.dart'; import 'package:immich_mobile/modules/asset_viewer/views/image_viewer_page.dart'; import 'package:immich_mobile/modules/asset_viewer/views/video_viewer_page.dart'; import 'package:immich_mobile/modules/home/services/asset.service.dart'; +import 'package:immich_mobile/modules/home/ui/delete_diaglog.dart'; import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart'; import 'package:immich_mobile/modules/settings/services/app_settings.service.dart'; import 'package:immich_mobile/shared/models/asset.dart'; +import 'package:immich_mobile/shared/providers/asset.provider.dart'; // ignore: must_be_immutable class GalleryViewerPage extends HookConsumerWidget { @@ -86,6 +88,20 @@ class GalleryViewerPage extends HookConsumerWidget { } } + void handleDelete(Asset deleteAsset) { + showDialog( + context: context, + builder: (BuildContext _) { + return DeleteDialog( + onDelete: () { + ref.watch(assetProvider.notifier).deleteAssets({deleteAsset}); + AutoRouter.of(context).pop(null); + }, + ); + }, + ); + } + return Scaffold( backgroundColor: Colors.black, appBar: TopControlAppBar( @@ -110,6 +126,7 @@ class GalleryViewerPage extends HookConsumerWidget { onToggleMotionVideo: (() { isPlayingMotionVideo.value = !isPlayingMotionVideo.value; }), + onDeletePressed: () => handleDelete((assetList[indexOfAsset.value])), ), body: SafeArea( child: PageView.builder(