@@ -768,9 +768,16 @@ var vm = new Vue({
768768 // navigation helper, navigate relative to selected feed
769769 navigateToFeed : function ( relativePosition ) {
770770 let vm = this
771- var navigationList = Array . from ( document . querySelectorAll ( '#col-feed-list input[name=feed]' ) )
772- . filter ( function ( r ) { return r . offsetParent !== null && r . value !== 'folder:null' } )
773- . map ( function ( r ) { return r . value } )
771+ const navigationList = this . foldersWithFeeds
772+ . filter ( folder => ! folder . id || ! vm . mustHideFolder ( folder ) )
773+ . map ( ( folder ) => {
774+ if ( this . mustHideFolder ( folder ) ) return [ ]
775+ const folds = folder . id ? [ `folder:${ folder . id } ` ] : [ ]
776+ const feeds = ( folder . is_expanded || ! folder . id ) ? folder . feeds . filter ( f => ! vm . mustHideFeed ( f ) ) . map ( f => `feed:${ f . id } ` ) : [ ]
777+ return folds . concat ( feeds )
778+ } )
779+ . flat ( )
780+ navigationList . unshift ( '' )
774781
775782 var currentFeedPosition = navigationList . indexOf ( vm . feedSelected )
776783
@@ -799,6 +806,18 @@ var vm = new Vue({
799806 if ( curIdx >= ( this . refreshRateOptions . length - 1 ) && offset > 0 ) return
800807 this . refreshRate = this . refreshRateOptions [ curIdx + offset ] . value
801808 } ,
809+ mustHideFolder : function ( folder ) {
810+ return this . filterSelected
811+ && ! ( this . current . folder . id == folder . id || this . current . feed . folder_id == folder . id )
812+ && ! this . filteredFolderStats [ folder . id ]
813+ && ( ! this . itemSelectedDetails || ( this . feedsById [ itemSelectedDetails . feed_id ] || { } ) . folder_id != folder . id )
814+ } ,
815+ mustHideFeed : function ( feed ) {
816+ return this . filterSelected
817+ && ! ( this . current . feed . id == feed . id )
818+ && ! this . filteredFeedStats [ feed . id ]
819+ && ( ! this . itemSelectedDetails || this . itemSelectedDetails . feed_id != feed . id )
820+ } ,
802821 }
803822} )
804823
0 commit comments