summaryrefslogtreecommitdiffhomepage
path: root/internal/tui/components/logs/table.go
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-05-06 14:22:37 -0500
committeradamdottv <[email protected]>2025-05-06 14:22:37 -0500
commitb638dafe5fb2b6fcdd6d9b64502a7808f3e81eb5 (patch)
tree6f6729fcc08a042812b642ef6acb8fc4d9db9b9b /internal/tui/components/logs/table.go
parente387b1f16c2a7630c7f2ea29b39d4f50b1760ad7 (diff)
downloadopencode-b638dafe5fb2b6fcdd6d9b64502a7808f3e81eb5.tar.gz
opencode-b638dafe5fb2b6fcdd6d9b64502a7808f3e81eb5.zip
feat: better logs page
Diffstat (limited to 'internal/tui/components/logs/table.go')
-rw-r--r--internal/tui/components/logs/table.go44
1 files changed, 32 insertions, 12 deletions
diff --git a/internal/tui/components/logs/table.go b/internal/tui/components/logs/table.go
index a6a39c198..fe30c6aa0 100644
--- a/internal/tui/components/logs/table.go
+++ b/internal/tui/components/logs/table.go
@@ -21,7 +21,8 @@ type TableComponent interface {
}
type tableCmp struct {
- table table.Model
+ table table.Model
+ focused bool
}
type selectedLogMsg logging.LogMessage
@@ -38,24 +39,30 @@ func (i *tableCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
i.setRows()
return i, nil
}
- prevSelectedRow := i.table.SelectedRow()
+
+ // Only process keyboard input when focused
+ if _, ok := msg.(tea.KeyMsg); ok && !i.focused {
+ return i, nil
+ }
+
t, cmd := i.table.Update(msg)
cmds = append(cmds, cmd)
i.table = t
selectedRow := i.table.SelectedRow()
if selectedRow != nil {
- if prevSelectedRow == nil || selectedRow[0] == prevSelectedRow[0] {
- var log logging.LogMessage
- for _, row := range logging.List() {
- if row.ID == selectedRow[0] {
- log = row
- break
- }
- }
- if log.ID != "" {
- cmds = append(cmds, util.CmdHandler(selectedLogMsg(log)))
+ // Always send the selected log message when a row is selected
+ // This fixes the issue where navigation doesn't update the detail pane
+ // when returning to the logs page
+ var log logging.LogMessage
+ for _, row := range logging.List() {
+ if row.ID == selectedRow[0] {
+ log = row
+ break
}
}
+ if log.ID != "" {
+ cmds = append(cmds, util.CmdHandler(selectedLogMsg(log)))
+ }
}
return i, tea.Batch(cmds...)
}
@@ -141,3 +148,16 @@ func NewLogsTable() TableComponent {
table: tableModel,
}
}
+
+// Focus implements the focusable interface
+func (i *tableCmp) Focus() {
+ i.focused = true
+ i.table.Focus()
+}
+
+// Blur implements the blurable interface
+func (i *tableCmp) Blur() {
+ i.focused = false
+ // Table doesn't have a Blur method, but we can implement it here
+ // to satisfy the interface
+}