@@ -24,17 +24,42 @@ import { Permission, Node, View, FileAction } from '@nextcloud/files'
2424import { translate as t } from '@nextcloud/l10n'
2525import axios from '@nextcloud/axios'
2626import TrashCanSvg from '@mdi/svg/svg/trash-can.svg?raw'
27+ import CloseSvg from '@mdi/svg/svg/close.svg?raw'
2728
2829import 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
3042export 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