@@ -54,81 +54,95 @@ func (m model) Init() tea.Cmd {
5454}
5555
5656func (m model ) Update (msg tea.Msg ) (tea.Model , tea.Cmd ) {
57- var cmds []tea.Cmd
58-
5957 switch msg := msg .(type ) {
6058 case tea.WindowSizeMsg :
61- m .width = msg .Width
62- m .height = msg .Height
59+ return m .handleWindowSize (msg )
60+ case tea.KeyMsg :
61+ return m .handleKeyPress (msg )
62+ }
6363
64- m .runnersView .Update (msg )
65- m .logsView .Update (msg )
66- m .configView .Update (msg )
67- m .systemView .Update (msg )
68- m .historyView .Update (msg )
64+ return m .updateActiveView (msg )
65+ }
6966
70- return m , nil
67+ func (m model ) handleWindowSize (msg tea.WindowSizeMsg ) (tea.Model , tea.Cmd ) {
68+ m .width = msg .Width
69+ m .height = msg .Height
7170
72- case tea.KeyMsg :
73- switch msg .String () {
74- case "ctrl+c" , "q" :
75- if m .activeTab == 1 {
76- m .activeTab = 0
77- return m , nil
78- }
79- m .quitting = true
80- return m , tea .Quit
71+ m .runnersView .Update (msg )
72+ m .logsView .Update (msg )
73+ m .configView .Update (msg )
74+ m .systemView .Update (msg )
75+ m .historyView .Update (msg )
8176
82- case "tab" :
83- m .activeTab = (m .activeTab + 1 ) % len (m .tabs )
84- return m .switchTab ()
77+ return m , nil
78+ }
79+
80+ func (m model ) handleKeyPress (msg tea.KeyMsg ) (tea.Model , tea.Cmd ) {
81+ switch msg .String () {
82+ case "ctrl+c" , "q" :
83+ if m .activeTab == 1 {
84+ m .activeTab = 0
85+ return m , nil
86+ }
87+ m .quitting = true
88+ return m , tea .Quit
89+
90+ case "tab" :
91+ m .activeTab = (m .activeTab + 1 ) % len (m .tabs )
92+ return m .switchTab ()
93+
94+ case "shift+tab" :
95+ m .activeTab = (m .activeTab - 1 + len (m .tabs )) % len (m .tabs )
96+ return m .switchTab ()
8597
86- case "shift+tab" :
87- m .activeTab = (m .activeTab - 1 + len (m .tabs )) % len (m .tabs )
98+ case "1" , "2" , "3" , "4" , "5" :
99+ if idx := int (msg .String ()[0 ] - '1' ); idx < len (m .tabs ) {
100+ m .activeTab = idx
88101 return m .switchTab ()
102+ }
103+ return m , nil
89104
90- case "1" , "2" , "3" , "4" , "5" :
91- if idx := int (msg .String ()[0 ] - '1' ); idx < len (m .tabs ) {
92- m .activeTab = idx
105+ case "enter" :
106+ if m .activeTab == 0 {
107+ if runner := m .runnersView .GetSelectedRunner (); runner != nil {
108+ m .logsView .SetRunner (runner .Name )
109+ m .activeTab = 1
93110 return m .switchTab ()
94111 }
95- return m , nil
96-
97- case "enter" :
98- if m .activeTab == 0 {
99- if runner := m .runnersView .GetSelectedRunner (); runner != nil {
100- m .logsView .SetRunner (runner .Name )
101- m .activeTab = 1
102- return m .switchTab ()
103- }
104- }
105112 }
106113 }
107114
115+ // If key wasn't handled, pass it to the active view
116+ return m .updateActiveView (msg )
117+ }
118+
119+ func (m model ) updateActiveView (msg tea.Msg ) (tea.Model , tea.Cmd ) {
120+ var cmd tea.Cmd
121+
108122 switch m .activeTab {
109123 case 0 :
110- updatedView , cmd := m .runnersView .Update (msg )
124+ var updatedView tea.Model
125+ updatedView , cmd = m .runnersView .Update (msg )
111126 m .runnersView = updatedView .(* ui.RunnersView )
112- cmds = append (cmds , cmd )
113127 case 1 :
114- updatedView , cmd := m .logsView .Update (msg )
128+ var updatedView tea.Model
129+ updatedView , cmd = m .logsView .Update (msg )
115130 m .logsView = updatedView .(* ui.LogsView )
116- cmds = append (cmds , cmd )
117131 case 2 :
118- updatedView , cmd := m .configView .Update (msg )
132+ var updatedView tea.Model
133+ updatedView , cmd = m .configView .Update (msg )
119134 m .configView = updatedView .(* ui.ConfigView )
120- cmds = append (cmds , cmd )
121135 case 3 :
122- updatedView , cmd := m .systemView .Update (msg )
136+ var updatedView tea.Model
137+ updatedView , cmd = m .systemView .Update (msg )
123138 m .systemView = updatedView .(* ui.SystemView )
124- cmds = append (cmds , cmd )
125139 case 4 :
126- updatedView , cmd := m .historyView .Update (msg )
140+ var updatedView tea.Model
141+ updatedView , cmd = m .historyView .Update (msg )
127142 m .historyView = updatedView .(* ui.HistoryView )
128- cmds = append (cmds , cmd )
129143 }
130144
131- return m , tea . Batch ( cmds ... )
145+ return m , cmd
132146}
133147
134148func (m model ) switchTab () (model , tea.Cmd ) {
@@ -214,7 +228,7 @@ func (m model) View() string {
214228}
215229
216230func (m model ) renderTabBar () string {
217- var tabs []string
231+ tabs := make ( []string , 0 , len ( m . tabs ))
218232
219233 for i , tab := range m .tabs {
220234 style := ui .TabStyle
0 commit comments