Skip to content

Commit 6fce2a5

Browse files
NMC-6106 - Sub encrypted folder do not have "Delete" option from its 3-dot menu's -> here sub encrypted folder should have 'Delete" option from long press/grid/tile view
NMC-6106 - Sub encrypted file folder - After "Select" from top - footer option shows "Move or copy" icon button and while doing this it fails and gives error -> "Copy or move" action option should not display for any encrypted files/folder
1 parent 2946fa3 commit 6fce2a5

2 files changed

Lines changed: 47 additions & 17 deletions

File tree

iOSClient/Main/Collection Common/NCCollectionViewCommonSelectTabBar.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class NCCollectionViewCommonSelectTabBar: ObservableObject {
2626
@Published var isAnyDirectory = false
2727
@Published var isAllDirectory = false
2828
@Published var isAnyLocked = false
29+
@Published var isAnyEncrypted = false
2930
@Published var canUnlock = true
3031
@Published var enableLock = false
3132
@Published var isSelectedEmpty = true
@@ -96,6 +97,7 @@ class NCCollectionViewCommonSelectTabBar: ObservableObject {
9697
isAnyDirectory = false
9798
isAllDirectory = true
9899
isAnyLocked = false
100+
isAnyEncrypted = false
99101
canUnlock = true
100102
self.metadatas = metadatas
101103

@@ -117,6 +119,11 @@ class NCCollectionViewCommonSelectTabBar: ObservableObject {
117119
}
118120
}
119121

122+
// If any selected item is end-to-end encrypted, mark it so we can hide copy/move
123+
if (metadata.responds(to: Selector(("e2eEncrypted"))) ? (metadata.value(forKey: "e2eEncrypted") as? Bool ?? false) : (metadata.value(forKey: "isEncrypted") as? Bool ?? false)) {
124+
isAnyEncrypted = true
125+
}
126+
120127
guard !isAnyOffline else { continue }
121128

122129
if metadata.directory,
@@ -164,7 +171,8 @@ struct NCCollectionViewCommonSelectTabBarView: View {
164171
}
165172
.tint(Color(NCBrandColor.shared.iconImageColor))
166173
.frame(maxWidth: .infinity)
167-
.disabled(tabBarSelect.isSelectedEmpty)
174+
.disabled(tabBarSelect.isSelectedEmpty || tabBarSelect.isAnyEncrypted)
175+
// .opacity(tabBarSelect.isAnyEncrypted ? 0 : 1)
168176

169177
Button {
170178
tabBarSelect.delegate?.delete()

iOSClient/Menu/NCContextMenu.swift

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -477,24 +477,23 @@ class NCContextMenu: NSObject {
477477

478478
private func buildDeleteMenu(metadata: tableMetadata) -> [UIMenuElement] {
479479
var deleteMenu: [UIMenuElement] = []
480+
481+
/*
480482
let deleteConfirmLocal = makeDeleteLocalAction(metadata: metadata)
481483
let deleteConfirmFile = makeDeleteFileAction(metadata: metadata)
482484

483485
let deleteSubMenu = UIMenu(
484486
title: NSLocalizedString("_delete_", comment: ""),
485-
image: utility.loadImage(named: "trashIcon", colors: [NCBrandColor.shared.iconImageColor]).withTintColor(NCBrandColor.shared.iconImageColor),
487+
image: utility.loadImage(named: "trash"),
486488
options: .destructive,
487489
children: [deleteConfirmLocal, deleteConfirmFile]
488490
)
491+
*/
489492

490-
if metadata.directory {
491-
if !metadata.isDirectoryE2EE && !metadata.e2eEncrypted {
492-
deleteMenu.append(deleteSubMenu)
493-
}
494-
} else {
495-
if !metadata.lock {
496-
deleteMenu.append(deleteSubMenu)
497-
}
493+
deleteMenu.append(makeDeleteLocalAction(metadata: metadata))
494+
495+
if metadata.isDeletable {
496+
deleteMenu.append(makeDeleteFileAction(metadata: metadata))
498497
}
499498

500499
return deleteMenu
@@ -511,11 +510,35 @@ class NCContextMenu: NSObject {
511510
) { _ in
512511
if let viewController = self.viewController as? NCCollectionViewCommon {
513512
Task {
514-
await NCNetworking.shared.setStatusWaitDelete(
515-
metadatas: [metadata],
516-
sceneIdentifier: self.sceneIdentifier
517-
)
518-
await viewController.reloadDataSource()
513+
if metadata.isDirectoryE2EE {
514+
if NCNetworking.shared.isOffline {
515+
await showErrorBanner(windowScene: self.windowScene,
516+
text: "_offline_not_allowed_",
517+
errorCode: NCGlobal.shared.errorOfflineNotAllowed)
518+
} else {
519+
let results = await showHudBanner(windowScene: self.windowScene,
520+
title: "_delete_in_progress_")
521+
522+
let error = await NCNetworkingE2EEDelete().delete(metadata: metadata)
523+
524+
if error == .success {
525+
await completeHudBannerSuccess(token: results.token, banner: results.banner)
526+
} else {
527+
await completeHudBannerError(description: error.errorDescription, token: results.token, banner: results.banner)
528+
}
529+
530+
await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in
531+
delegate.transferReloadDataSource(serverUrl: metadata.serverUrl, requestData: false, status: nil)
532+
}
533+
}
534+
}
535+
else {
536+
await NCNetworking.shared.setStatusWaitDelete(
537+
metadatas: [metadata],
538+
sceneIdentifier: self.sceneIdentifier
539+
)
540+
await viewController.reloadDataSource()
541+
}
519542
}
520543
} else if let viewController = self.viewController as? NCMedia {
521544
Task {
@@ -528,8 +551,7 @@ class NCContextMenu: NSObject {
528551
private func makeDeleteLocalAction(metadata: tableMetadata) -> UIAction {
529552
return UIAction(
530553
title: NSLocalizedString("_remove_local_file_", comment: ""),
531-
image: utility.loadImage(named: "trashIcon", colors: [NCBrandColor.shared.iconImageColor]).withTintColor(NCBrandColor.shared.iconImageColor),
532-
attributes: .destructive
554+
image: utility.loadImage(named: "document.on.trash")
533555
) { _ in
534556
Task {
535557
let error = await NCNetworking.shared.deleteCache(

0 commit comments

Comments
 (0)