Skip to content

Commit c43874b

Browse files
skjnldsvRaudius
authored andcommitted
fix(files): fix unshare action
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com> Signed-off-by: Raul Ferreira <r.ferreira.fuentes@gmail.com>
1 parent f235272 commit c43874b

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

apps/files/src/actions/deleteAction.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,42 @@ import { Permission, Node, View, FileAction } from '@nextcloud/files'
2424
import { translate as t } from '@nextcloud/l10n'
2525
import axios from '@nextcloud/axios'
2626
import TrashCanSvg from '@mdi/svg/svg/trash-can.svg?raw'
27+
import CloseSvg from '@mdi/svg/svg/close.svg?raw'
2728

2829
import logger from '../logger.js'
30+
import { getCurrentUser } from '@nextcloud/auth'
31+
32+
const isAllUnshare = (nodes: Node[]) => {
33+
return !nodes.some(node => node.owner === getCurrentUser()?.uid)
34+
}
35+
36+
const isMixedUnshareAndDelete = (nodes: Node[]) => {
37+
const hasUnshareItems = nodes.some(node => node.owner !== getCurrentUser()?.uid)
38+
const hasDeleteItems = nodes.some(node => node.owner === getCurrentUser()?.uid)
39+
return hasUnshareItems && hasDeleteItems
40+
}
2941

3042
export const action = new FileAction({
3143
id: 'delete',
3244
displayName(nodes: Node[], view: View) {
45+
if (isMixedUnshareAndDelete(nodes)) {
46+
return t('files', 'Delete and unshare')
47+
}
48+
49+
if (isAllUnshare(nodes)) {
50+
return t('files', 'Unshare')
51+
}
52+
3353
return view.id === 'trashbin'
3454
? t('files', 'Delete permanently')
3555
: t('files', 'Delete')
3656
},
37-
iconSvgInline: () => TrashCanSvg,
57+
iconSvgInline: (nodes: Node[]) => {
58+
if (isAllUnshare(nodes)) {
59+
return CloseSvg
60+
}
61+
return TrashCanSvg
62+
},
3863

3964
enabled(nodes: Node[]) {
4065
return nodes.length > 0 && nodes

0 commit comments

Comments
 (0)