diff options
author | John Molakvoæ <skjnldsv@protonmail.com> | 2024-01-04 13:38:46 +0100 |
---|---|---|
committer | John Molakvoæ <skjnldsv@protonmail.com> | 2024-01-11 15:42:55 +0100 |
commit | b77afb4ed1ea444dbc03e67a8d359b4c0e7281be (patch) | |
tree | 20940d8168667b1d80c4815399ab46c0a1293f4a | |
parent | 783255917722966eb4605442e41c7f328f02dbd9 (diff) | |
download | nextcloud-server-b77afb4ed1ea444dbc03e67a8d359b4c0e7281be.tar.gz nextcloud-server-b77afb4ed1ea444dbc03e67a8d359b4c0e7281be.zip |
fix(files): fix unshare action
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
-rw-r--r-- | apps/files/src/actions/deleteAction.ts | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/apps/files/src/actions/deleteAction.ts b/apps/files/src/actions/deleteAction.ts index f79872f1685..29f1cf86c9b 100644 --- a/apps/files/src/actions/deleteAction.ts +++ b/apps/files/src/actions/deleteAction.ts @@ -24,17 +24,42 @@ import { Permission, Node, View, FileAction } from '@nextcloud/files' import { translate as t } from '@nextcloud/l10n' import axios from '@nextcloud/axios' import TrashCanSvg from '@mdi/svg/svg/trash-can.svg?raw' +import CloseSvg from '@mdi/svg/svg/close.svg?raw' import logger from '../logger.js' +import { getCurrentUser } from '@nextcloud/auth' + +const isAllUnshare = (nodes: Node[]) => { + return !nodes.some(node => node.owner === getCurrentUser()?.uid) +} + +const isMixedUnshareAndDelete = (nodes: Node[]) => { + const hasUnshareItems = nodes.some(node => node.owner !== getCurrentUser()?.uid) + const hasDeleteItems = nodes.some(node => node.owner === getCurrentUser()?.uid) + return hasUnshareItems && hasDeleteItems +} export const action = new FileAction({ id: 'delete', displayName(nodes: Node[], view: View) { + if (isMixedUnshareAndDelete(nodes)) { + return t('files', 'Delete and unshare') + } + + if (isAllUnshare(nodes)) { + return t('files', 'Unshare') + } + return view.id === 'trashbin' ? t('files', 'Delete permanently') : t('files', 'Delete') }, - iconSvgInline: () => TrashCanSvg, + iconSvgInline: (nodes: Node[]) => { + if (isAllUnshare(nodes)) { + return CloseSvg + } + return TrashCanSvg + }, enabled(nodes: Node[]) { return nodes.length > 0 && nodes |