summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--internal/tui/components/logs/table.go28
1 files changed, 17 insertions, 11 deletions
diff --git a/internal/tui/components/logs/table.go b/internal/tui/components/logs/table.go
index f78e4c490..5632d163c 100644
--- a/internal/tui/components/logs/table.go
+++ b/internal/tui/components/logs/table.go
@@ -11,7 +11,6 @@ import (
"github.com/sst/opencode/internal/tui/components/chat"
"github.com/sst/opencode/internal/tui/layout"
"github.com/sst/opencode/internal/tui/theme"
- "github.com/sst/opencode/internal/tui/util"
)
type TableComponent interface {
@@ -21,9 +20,10 @@ type TableComponent interface {
}
type tableCmp struct {
- table table.Model
- focused bool
- logs []logging.Log
+ table table.Model
+ focused bool
+ logs []logging.Log
+ selectedLogID string
}
type selectedLogMsg logging.Log
@@ -103,17 +103,23 @@ func (i *tableCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
cmds = append(cmds, cmd)
i.table = t
- // Only send selected log message when selection changes
selectedRow := i.table.SelectedRow()
if selectedRow != nil {
- // Use a map for faster lookups by ID
- for _, log := range i.logs {
- if log.ID == selectedRow[0] {
- cmds = append(cmds, util.CmdHandler(selectedLogMsg(log)))
- break
- }
+ // Only send message if it's a new selection
+ if i.selectedLogID != selectedRow[0] {
+ cmds = append(cmds, func() tea.Msg {
+ for _, log := range i.logs {
+ if log.ID == selectedRow[0] {
+ return selectedLogMsg(log)
+ }
+ }
+ return nil
+ })
}
+
}
+
+ i.selectedLogID = selectedRow[0]
return i, tea.Batch(cmds...)
}