mirror of
https://github.com/immich-app/immich.git
synced 2025-01-28 06:32:44 +01:00
fix(mobile): incorrect remove action from the album assets detail view (#11671)
* fix(mobile): incorrect remove action from the album assets detail view * better data structure
This commit is contained in:
parent
ed7f857975
commit
501485d0b1
1 changed files with 67 additions and 65 deletions
|
@ -61,58 +61,6 @@ class BottomGalleryBar extends ConsumerWidget {
|
||||||
navStack.length > 2 &&
|
navStack.length > 2 &&
|
||||||
navStack.elementAt(navStack.length - 2).name == TrashRoute.name;
|
navStack.elementAt(navStack.length - 2).name == TrashRoute.name;
|
||||||
final isInAlbum = ref.watch(currentAlbumProvider)?.isRemote ?? false;
|
final isInAlbum = ref.watch(currentAlbumProvider)?.isRemote ?? false;
|
||||||
// !!!! itemsList and actionlist should always be in sync
|
|
||||||
final itemsList = [
|
|
||||||
BottomNavigationBarItem(
|
|
||||||
icon: Icon(
|
|
||||||
Platform.isAndroid ? Icons.share_rounded : Icons.ios_share_rounded,
|
|
||||||
),
|
|
||||||
label: 'control_bottom_app_bar_share'.tr(),
|
|
||||||
tooltip: 'control_bottom_app_bar_share'.tr(),
|
|
||||||
),
|
|
||||||
if (asset.isImage)
|
|
||||||
BottomNavigationBarItem(
|
|
||||||
icon: const Icon(Icons.tune_outlined),
|
|
||||||
label: 'control_bottom_app_bar_edit'.tr(),
|
|
||||||
tooltip: 'control_bottom_app_bar_edit'.tr(),
|
|
||||||
),
|
|
||||||
if (isOwner)
|
|
||||||
asset.isArchived
|
|
||||||
? BottomNavigationBarItem(
|
|
||||||
icon: const Icon(Icons.unarchive_rounded),
|
|
||||||
label: 'control_bottom_app_bar_unarchive'.tr(),
|
|
||||||
tooltip: 'control_bottom_app_bar_unarchive'.tr(),
|
|
||||||
)
|
|
||||||
: BottomNavigationBarItem(
|
|
||||||
icon: const Icon(Icons.archive_outlined),
|
|
||||||
label: 'control_bottom_app_bar_archive'.tr(),
|
|
||||||
tooltip: 'control_bottom_app_bar_archive'.tr(),
|
|
||||||
),
|
|
||||||
if (isOwner && stack.isNotEmpty)
|
|
||||||
BottomNavigationBarItem(
|
|
||||||
icon: const Icon(Icons.burst_mode_outlined),
|
|
||||||
label: 'control_bottom_app_bar_stack'.tr(),
|
|
||||||
tooltip: 'control_bottom_app_bar_stack'.tr(),
|
|
||||||
),
|
|
||||||
if (isOwner && !isInAlbum)
|
|
||||||
BottomNavigationBarItem(
|
|
||||||
icon: const Icon(Icons.delete_outline),
|
|
||||||
label: 'control_bottom_app_bar_delete'.tr(),
|
|
||||||
tooltip: 'control_bottom_app_bar_delete'.tr(),
|
|
||||||
),
|
|
||||||
if (!isOwner)
|
|
||||||
BottomNavigationBarItem(
|
|
||||||
icon: const Icon(Icons.download_outlined),
|
|
||||||
label: 'download'.tr(),
|
|
||||||
tooltip: 'download'.tr(),
|
|
||||||
),
|
|
||||||
if (isInAlbum)
|
|
||||||
BottomNavigationBarItem(
|
|
||||||
icon: const Icon(Icons.remove_circle_outline),
|
|
||||||
label: 'album_viewer_appbar_share_remove'.tr(),
|
|
||||||
tooltip: 'album_viewer_appbar_share_remove'.tr(),
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|
||||||
void removeAssetFromStack() {
|
void removeAssetFromStack() {
|
||||||
if (stackIndex > 0 && showStack) {
|
if (stackIndex > 0 && showStack) {
|
||||||
|
@ -366,16 +314,71 @@ class BottomGalleryBar extends ConsumerWidget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Function(int)> actionslist = [
|
final List<Map<BottomNavigationBarItem, Function(int)>> albumActions = [
|
||||||
(_) => shareAsset(),
|
{
|
||||||
if (asset.isImage) (_) => handleEdit(),
|
BottomNavigationBarItem(
|
||||||
if (isOwner) (_) => handleArchive(),
|
icon: Icon(
|
||||||
if (isOwner && stack.isNotEmpty) (_) => showStackActionItems(),
|
Platform.isAndroid ? Icons.share_rounded : Icons.ios_share_rounded,
|
||||||
if (isOwner) (_) => handleDelete(),
|
),
|
||||||
if (!isOwner) (_) => handleDownload(),
|
label: 'control_bottom_app_bar_share'.tr(),
|
||||||
if (isInAlbum) (_) => handleRemoveFromAlbum(),
|
tooltip: 'control_bottom_app_bar_share'.tr(),
|
||||||
|
): (_) => shareAsset(),
|
||||||
|
},
|
||||||
|
if (asset.isImage)
|
||||||
|
{
|
||||||
|
BottomNavigationBarItem(
|
||||||
|
icon: const Icon(Icons.tune_outlined),
|
||||||
|
label: 'control_bottom_app_bar_edit'.tr(),
|
||||||
|
tooltip: 'control_bottom_app_bar_edit'.tr(),
|
||||||
|
): (_) => handleEdit(),
|
||||||
|
},
|
||||||
|
if (isOwner)
|
||||||
|
{
|
||||||
|
asset.isArchived
|
||||||
|
? BottomNavigationBarItem(
|
||||||
|
icon: const Icon(Icons.unarchive_rounded),
|
||||||
|
label: 'control_bottom_app_bar_unarchive'.tr(),
|
||||||
|
tooltip: 'control_bottom_app_bar_unarchive'.tr(),
|
||||||
|
)
|
||||||
|
: BottomNavigationBarItem(
|
||||||
|
icon: const Icon(Icons.archive_outlined),
|
||||||
|
label: 'control_bottom_app_bar_archive'.tr(),
|
||||||
|
tooltip: 'control_bottom_app_bar_archive'.tr(),
|
||||||
|
): (_) => handleArchive(),
|
||||||
|
},
|
||||||
|
if (isOwner && stack.isNotEmpty)
|
||||||
|
{
|
||||||
|
BottomNavigationBarItem(
|
||||||
|
icon: const Icon(Icons.burst_mode_outlined),
|
||||||
|
label: 'control_bottom_app_bar_stack'.tr(),
|
||||||
|
tooltip: 'control_bottom_app_bar_stack'.tr(),
|
||||||
|
): (_) => showStackActionItems(),
|
||||||
|
},
|
||||||
|
if (isOwner && !isInAlbum)
|
||||||
|
{
|
||||||
|
BottomNavigationBarItem(
|
||||||
|
icon: const Icon(Icons.delete_outline),
|
||||||
|
label: 'control_bottom_app_bar_delete'.tr(),
|
||||||
|
tooltip: 'control_bottom_app_bar_delete'.tr(),
|
||||||
|
): (_) => handleDelete(),
|
||||||
|
},
|
||||||
|
if (!isOwner)
|
||||||
|
{
|
||||||
|
BottomNavigationBarItem(
|
||||||
|
icon: const Icon(Icons.download_outlined),
|
||||||
|
label: 'download'.tr(),
|
||||||
|
tooltip: 'download'.tr(),
|
||||||
|
): (_) => handleDownload(),
|
||||||
|
},
|
||||||
|
if (isInAlbum)
|
||||||
|
{
|
||||||
|
BottomNavigationBarItem(
|
||||||
|
icon: const Icon(Icons.remove_circle_outline),
|
||||||
|
label: 'album_viewer_appbar_share_remove'.tr(),
|
||||||
|
tooltip: 'album_viewer_appbar_share_remove'.tr(),
|
||||||
|
): (_) => handleRemoveFromAlbum(),
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
return IgnorePointer(
|
return IgnorePointer(
|
||||||
ignoring: !ref.watch(showControlsProvider),
|
ignoring: !ref.watch(showControlsProvider),
|
||||||
child: AnimatedOpacity(
|
child: AnimatedOpacity(
|
||||||
|
@ -407,11 +410,10 @@ class BottomGalleryBar extends ConsumerWidget {
|
||||||
unselectedItemColor: Colors.white,
|
unselectedItemColor: Colors.white,
|
||||||
showSelectedLabels: true,
|
showSelectedLabels: true,
|
||||||
showUnselectedLabels: true,
|
showUnselectedLabels: true,
|
||||||
items: itemsList,
|
items:
|
||||||
|
albumActions.map((e) => e.keys.first).toList(growable: false),
|
||||||
onTap: (index) {
|
onTap: (index) {
|
||||||
if (index < actionslist.length) {
|
albumActions[index].values.first.call(index);
|
||||||
actionslist[index].call(index);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in a new issue