@@ -646,7 +646,7 @@ impl Dashboard {
646646 }
647647 sidebar:: Event :: New ( buffer) => (
648648 self . open_buffer (
649- data :: Buffer :: Upstream ( buffer) ,
649+ buffer,
650650 BufferAction :: NewPane ,
651651 clients,
652652 config,
@@ -655,7 +655,7 @@ impl Dashboard {
655655 ) ,
656656 sidebar:: Event :: Popout ( buffer) => (
657657 self . open_buffer (
658- data :: Buffer :: Upstream ( buffer) ,
658+ buffer,
659659 BufferAction :: NewWindow ,
660660 clients,
661661 config,
@@ -667,7 +667,7 @@ impl Dashboard {
667667 }
668668 sidebar:: Event :: Replace ( buffer) => (
669669 self . open_buffer (
670- data :: Buffer :: Upstream ( buffer) ,
670+ buffer,
671671 BufferAction :: ReplacePane ,
672672 clients,
673673 config,
@@ -701,10 +701,6 @@ impl Dashboard {
701701 sidebar:: Event :: Leave ( buffer) => {
702702 self . leave_buffer ( clients, config, buffer)
703703 }
704- sidebar:: Event :: ToggleInternalBuffer ( buffer) => (
705- self . toggle_internal_buffer ( clients, config, buffer) ,
706- None ,
707- ) ,
708704 sidebar:: Event :: ToggleCommandBar => (
709705 self . toggle_command_bar (
710706 servers,
@@ -749,9 +745,7 @@ impl Dashboard {
749745 ( Task :: none ( ) , None )
750746 }
751747 sidebar:: Event :: MarkAsRead ( buffer) => {
752- if let Some ( kind) = history:: Kind :: from_buffer (
753- data:: Buffer :: Upstream ( buffer) ,
754- ) {
748+ if let Some ( kind) = history:: Kind :: from_buffer ( buffer) {
755749 mark_as_read (
756750 kind,
757751 & mut self . history ,
@@ -1327,20 +1321,23 @@ impl Dashboard {
13271321 return ( task, None ) ;
13281322 }
13291323 CycleNextUnreadBuffer => {
1330- let all_buffers =
1331- all_buffers_with_has_unread ( clients, & self . history ) ;
1332- let open_upstream_buffers = open_upstream_buffers ( self ) ;
1324+ let all_buffers = all_buffers_with_has_unread (
1325+ config,
1326+ clients,
1327+ & self . history ,
1328+ ) ;
1329+ let open_buffers = open_buffers ( self ) ;
13331330
13341331 if let Some ( ( _, _, state) ) = self . get_focused_mut ( )
13351332 && let Some ( buffer) = cycle_next_unread_buffer (
1336- state. buffer . upstream ( ) ,
1333+ state. buffer . data ( ) . as_ref ( ) ,
13371334 all_buffers,
1338- & open_upstream_buffers ,
1335+ & open_buffers ,
13391336 )
13401337 {
13411338 return (
13421339 self . open_buffer (
1343- data :: Buffer :: Upstream ( buffer. clone ( ) ) ,
1340+ buffer. clone ( ) ,
13441341 BufferAction :: ReplacePane ,
13451342 clients,
13461343 config,
@@ -1350,20 +1347,23 @@ impl Dashboard {
13501347 }
13511348 }
13521349 CyclePreviousUnreadBuffer => {
1353- let all_buffers =
1354- all_buffers_with_has_unread ( clients, & self . history ) ;
1355- let open_upstream_buffers = open_upstream_buffers ( self ) ;
1350+ let all_buffers = all_buffers_with_has_unread (
1351+ config,
1352+ clients,
1353+ & self . history ,
1354+ ) ;
1355+ let open_buffers = open_buffers ( self ) ;
13561356
13571357 if let Some ( ( _, _, state) ) = self . get_focused_mut ( )
13581358 && let Some ( buffer) = cycle_previous_unread_buffer (
1359- state. buffer . upstream ( ) ,
1359+ state. buffer . data ( ) . as_ref ( ) ,
13601360 all_buffers,
1361- & open_upstream_buffers ,
1361+ & open_buffers ,
13621362 )
13631363 {
13641364 return (
13651365 self . open_buffer (
1366- data :: Buffer :: Upstream ( buffer. clone ( ) ) ,
1366+ buffer. clone ( ) ,
13671367 BufferAction :: ReplacePane ,
13681368 clients,
13691369 config,
@@ -2769,7 +2769,7 @@ impl Dashboard {
27692769 }
27702770 command_bar:: Buffer :: Replace ( buffer) => (
27712771 self . open_buffer (
2772- data :: Buffer :: Upstream ( buffer) ,
2772+ buffer,
27732773 BufferAction :: ReplacePane ,
27742774 clients,
27752775 config,
@@ -2782,9 +2782,6 @@ impl Dashboard {
27822782 command_bar:: Buffer :: Merge => {
27832783 ( self . merge_pane ( clients, config) , None )
27842784 }
2785- command_bar:: Buffer :: ToggleInternal ( buffer) => {
2786- ( self . toggle_internal_buffer ( clients, config, buffer) , None )
2787- }
27882785 } ,
27892786 command_bar:: Command :: Configuration ( command) => match command {
27902787 command_bar:: Configuration :: OpenConfigDirectory => {
@@ -2901,7 +2898,7 @@ impl Dashboard {
29012898 self . close_pane ( clients, config, window, pane)
29022899 } else {
29032900 self . open_buffer (
2904- data :: Buffer :: Internal ( buffer) ,
2901+ buffer. into ( ) ,
29052902 config. actions . buffer . local ,
29062903 clients,
29072904 config,
@@ -5174,38 +5171,55 @@ fn all_upstream_buffers(
51745171}
51755172
51765173fn all_buffers_with_has_unread (
5174+ config : & Config ,
51775175 clients : & client:: Map ,
51785176 history : & history:: Manager ,
5179- ) -> Vec < ( buffer:: Upstream , bool ) > {
5180- clients
5181- . connected_servers ( )
5182- . flat_map ( |server| {
5183- std:: iter:: once ( (
5184- buffer:: Upstream :: Server ( server. clone ( ) ) ,
5185- history. has_unread ( & history:: Kind :: Server ( server. clone ( ) ) ) ,
5186- ) )
5187- . chain ( clients. get_channels ( server) . map ( |channel| {
5188- (
5189- buffer:: Upstream :: Channel ( server. clone ( ) , channel. clone ( ) ) ,
5190- history. has_unread ( & history:: Kind :: Channel (
5191- server. clone ( ) ,
5192- channel. clone ( ) ,
5193- ) ) ,
5194- )
5195- } ) )
5196- . chain (
5197- history. get_unique_queries ( server) . into_iter ( ) . map ( |nick| {
5198- (
5199- buffer:: Upstream :: Query ( server. clone ( ) , nick. clone ( ) ) ,
5200- history. has_unread ( & history:: Kind :: Query (
5201- server. clone ( ) ,
5202- nick. clone ( ) ,
5203- ) ) ,
5204- )
5205- } ) ,
5177+ ) -> Vec < ( data:: Buffer , bool ) > {
5178+ let upstream_buffers = clients. connected_servers ( ) . flat_map ( |server| {
5179+ std:: iter:: once ( (
5180+ buffer:: Upstream :: Server ( server. clone ( ) ) . into ( ) ,
5181+ history. has_unread ( & history:: Kind :: Server ( server. clone ( ) ) ) ,
5182+ ) )
5183+ . chain ( clients. get_channels ( server) . map ( |channel| {
5184+ (
5185+ buffer:: Upstream :: Channel ( server. clone ( ) , channel. clone ( ) )
5186+ . into ( ) ,
5187+ history. has_unread ( & history:: Kind :: Channel (
5188+ server. clone ( ) ,
5189+ channel. clone ( ) ,
5190+ ) ) ,
52065191 )
5207- } )
5208- . collect ( )
5192+ } ) )
5193+ . chain ( history. get_unique_queries ( server) . into_iter ( ) . map ( |nick| {
5194+ (
5195+ buffer:: Upstream :: Query ( server. clone ( ) , nick. clone ( ) ) . into ( ) ,
5196+ history. has_unread ( & history:: Kind :: Query (
5197+ server. clone ( ) ,
5198+ nick. clone ( ) ,
5199+ ) ) ,
5200+ )
5201+ } ) )
5202+ } ) ;
5203+
5204+ let internal_buffers = config
5205+ . sidebar
5206+ . internal_buffers
5207+ . buffers
5208+ . iter ( )
5209+ . map ( |& kind| data:: Buffer :: Internal ( kind. into ( ) ) )
5210+ . map ( |buffer| {
5211+ if let Some ( kind) = history:: Kind :: from_buffer ( buffer. clone ( ) ) {
5212+ ( buffer, history. has_unread ( & kind) )
5213+ } else {
5214+ ( buffer, false )
5215+ }
5216+ } ) ;
5217+
5218+ if config. sidebar . internal_buffers . is_before_servers ( ) {
5219+ internal_buffers. chain ( upstream_buffers) . collect ( )
5220+ } else {
5221+ upstream_buffers. chain ( internal_buffers) . collect ( )
5222+ }
52095223}
52105224
52115225fn open_buffers ( dashboard : & Dashboard ) -> Vec < data:: Buffer > {
@@ -5271,10 +5285,10 @@ fn cycle_previous_buffer(
52715285}
52725286
52735287fn cycle_next_unread_buffer (
5274- current : Option < & buffer :: Upstream > ,
5275- mut all : Vec < ( buffer :: Upstream , bool ) > ,
5276- opened : & [ buffer :: Upstream ] ,
5277- ) -> Option < buffer :: Upstream > {
5288+ current : Option < & data :: Buffer > ,
5289+ mut all : Vec < ( data :: Buffer , bool ) > ,
5290+ opened : & [ data :: Buffer ] ,
5291+ ) -> Option < data :: Buffer > {
52785292 all. retain ( |( buffer, _) | {
52795293 Some ( buffer) == current || !opened. contains ( buffer)
52805294 } ) ;
@@ -5299,10 +5313,10 @@ fn cycle_next_unread_buffer(
52995313}
53005314
53015315fn cycle_previous_unread_buffer (
5302- current : Option < & buffer :: Upstream > ,
5303- mut all : Vec < ( buffer :: Upstream , bool ) > ,
5304- opened : & [ buffer :: Upstream ] ,
5305- ) -> Option < buffer :: Upstream > {
5316+ current : Option < & data :: Buffer > ,
5317+ mut all : Vec < ( data :: Buffer , bool ) > ,
5318+ opened : & [ data :: Buffer ] ,
5319+ ) -> Option < data :: Buffer > {
53065320 all. retain ( |( buffer, _) | {
53075321 Some ( buffer) == current || !opened. contains ( buffer)
53085322 } ) ;
0 commit comments