Skip to content

Commit bc4da56

Browse files
tomekkuzma-megaami-mega
authored andcommitted
Cherry pick FM-1761
1 parent 3293995 commit bc4da56

File tree

3 files changed

+19
-13
lines changed

3 files changed

+19
-13
lines changed

iMEGA/Cloud drive/CloudDriveViewControllerFactory.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ struct CloudDriveViewControllerFactory {
318318
selection: {
319319
router.didTapNode(
320320
nodeHandle: $0.id,
321-
allNodeHandles: [], // photo browser does not work until we pass in this array here
321+
allNodeHandles: nil,
322322
displayMode: config.displayMode?.carriedOverDisplayMode
323323
)
324324
},

iMEGA/Home/Scenes/Home/Router/NodeOpener.swift

+9-3
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ final class NodeOpener {
1313
/// when file is a media, media browser with scroll through nodes in the allNodes array
1414
func openNode(
1515
nodeHandle: HandleEntity,
16-
allNodes: [HandleEntity] = [],
16+
allNodes: [HandleEntity]? = nil,
1717
config: NodeBrowserConfig = .default
1818
) {
1919
guard
2020
let megaNode = sdk.node(forHandle: nodeHandle)
2121
else { return }
2222

23-
let allMegaNodes = allNodes.compactMap { sdk.node(forHandle: $0) }
23+
let allMegaNodes = allNodes?.compactMap { sdk.node(forHandle: $0) }
2424

2525
switch megaNode.isFolder() {
2626
case true: openFolderNode(megaNode, config: config)
@@ -81,7 +81,13 @@ final class NodeOpener {
8181
let allVisualMediaNodes: [MEGANode] = allNodes?.filter { node in
8282
node.name?.fileExtensionGroup.isVisualMedia == true
8383
} ?? []
84-
let nodes = allNodes != nil ? allVisualMediaNodes : [node]
84+
// `nodes` array cannot be empty (but can, and is often nil)
85+
// as photo browser assumes node is inside this array.
86+
// best to enforce it in here just before we initiate MEGAPhotoBrowserViewController
87+
// there's no easy way to enforce it in the method interface,
88+
// and we would need to check
89+
// type of node and allNode at each call site
90+
let nodes = allVisualMediaNodes.isNotEmpty ? allVisualMediaNodes : [node]
8591
let index = nodes.firstIndex(where: { $0.handle == node.handle }) ?? 0
8692
let mediaNodes = NSMutableArray(array: nodes)
8793
let isOwner = sdk.accessLevel(for: node) == .accessOwner

iMEGA/Home/Scenes/HomeSearch/Router/HomeSearchResultRouter.swift

+9-9
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ protocol NodeRouting {
1616
button: UIButton,
1717
displayMode: DisplayMode?
1818
)
19-
20-
func didTapNode(nodeHandle: HandleEntity, allNodeHandles: [HandleEntity], displayMode: DisplayMode?)
21-
22-
func didTapNode(nodeHandle: HandleEntity, allNodeHandles: [HandleEntity])
23-
19+
20+
func didTapNode(nodeHandle: HandleEntity, allNodeHandles: [HandleEntity]?, displayMode: DisplayMode?)
21+
22+
func didTapNode(nodeHandle: HandleEntity, allNodeHandles: [HandleEntity]?)
23+
2424
func didTapNode(nodeHandle: HandleEntity)
2525
}
2626

@@ -71,8 +71,8 @@ final class HomeSearchResultRouter: NodeRouting {
7171
) else { return }
7272
navigationController?.present(nodeActionViewController, animated: true, completion: nil)
7373
}
74-
75-
func didTapNode(nodeHandle: HandleEntity, allNodeHandles: [HandleEntity], displayMode: DisplayMode?) {
74+
75+
func didTapNode(nodeHandle: HandleEntity, allNodeHandles: [HandleEntity]?, displayMode: DisplayMode?) {
7676
guard let node = nodeUseCase.nodeForHandle(nodeHandle) else { return }
7777
if node.isTakenDown {
7878
showTakenDownAlert(isFolder: node.isFolder)
@@ -85,12 +85,12 @@ final class HomeSearchResultRouter: NodeRouting {
8585
}
8686
}
8787

88-
func didTapNode(nodeHandle: HandleEntity, allNodeHandles: [HandleEntity]) {
88+
func didTapNode(nodeHandle: HandleEntity, allNodeHandles: [HandleEntity]?) {
8989
didTapNode(nodeHandle: nodeHandle, allNodeHandles: allNodeHandles, displayMode: nil)
9090
}
9191

9292
func didTapNode(nodeHandle: HandleEntity) {
93-
didTapNode(nodeHandle: nodeHandle, allNodeHandles: [])
93+
didTapNode(nodeHandle: nodeHandle, allNodeHandles: nil, displayMode: nil)
9494
}
9595

9696
func showTakenDownAlert(isFolder: Bool) {

0 commit comments

Comments
 (0)