@@ -439,6 +439,7 @@ extension CloudDriveViewController {
439439 guard let searchNodesArray else {
440440 return nodes
441441 }
442+ // this is done with for loop, as lightweight ObjC generics do not port to Swift when used on NSMutableArray
442443 for node in searchNodesArray {
443444 if let megaNode = node as? MEGANode {
444445 nodes. append ( megaNode)
@@ -447,24 +448,34 @@ extension CloudDriveViewController {
447448 return nodes
448449 }
449450
451+ private func nodeIsVisualMedia( _ node: MEGANode ) -> Bool {
452+ node. name? . fileExtensionGroup. isVisualMedia == true
453+ }
454+
450455 // provide all currently displayed nodes
451- // - used when showing image browser, to be able to scroll through visual media
452- private var nodesToFilter : [ MEGANode ] {
456+ // - used when showing image browser, to be able to scroll through visual media (this should pass in only search results when search active)
457+ // - used when showing audio player
458+ // no node filtering (based on type) should be done at this stage
459+ private func allNodesForOpening( node: MEGANode ) -> [ MEGANode ] {
460+ if nodeIsVisualMedia ( node) {
461+ return searchResultsAwareAllNodesForOpeningVisualMedia ( )
462+ }
463+
464+ return self . nodes? . mnz_nodesArrayFromNodeList ( ) ?? [ ]
465+ }
466+
467+ // when opening visual media (image browser), we are passing in
468+ // only nodes available in the list, respecting searching results
469+ func searchResultsAwareAllNodesForOpeningVisualMedia( ) -> [ MEGANode ] {
453470 if let searchController,
454471 searchController. isActive,
455472 searchController. searchBar. text? . mnz_isEmpty ( ) == false {
456- Self . searchResultsNodes ( from: self . searchNodesArray)
473+ return Self . searchResultsNodes ( from: self . searchNodesArray)
457474 } else {
458- self . nodes? . mnz_nodesArrayFromNodeList ( ) ?? [ ]
475+ return self . nodes? . mnz_nodesArrayFromNodeList ( ) ?? [ ]
459476 }
460477 }
461-
462- private var allVisualMediaNodes : [ MEGANode ] {
463- nodesToFilter. filter {
464- $0. name? . fileExtensionGroup. isVisualMedia == true
465- }
466- }
467-
478+
468479 @objc public func didSelectNode( _ node: MEGANode ) {
469480 if node. isTakenDown ( ) {
470481 showTakenDownAlert ( isFolder: node. isFolder ( ) )
@@ -475,7 +486,7 @@ extension CloudDriveViewController {
475486 )
476487 router. didTapNode (
477488 nodeHandle: node. handle,
478- allNodeHandles: allVisualMediaNodes . map { $0. handle } ,
489+ allNodeHandles: allNodesForOpening ( node : node ) . map { $0. handle } ,
479490 displayMode: displayMode. carriedOverDisplayMode
480491 )
481492 }
0 commit comments