diff options
| author | adamdottv <[email protected]> | 2025-05-14 07:38:21 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-05-14 07:38:21 -0500 |
| commit | 463002185b18955583af0c8695648c2ae03fe03f (patch) | |
| tree | 4cef5f4dabff347caff4f9681606379b553c71fe | |
| parent | 53a80eac1ed1ec98122a9c2b332f302903078f0a (diff) | |
| download | opencode-463002185b18955583af0c8695648c2ae03fe03f.tar.gz opencode-463002185b18955583af0c8695648c2ae03fe03f.zip | |
fix: log perf
| -rw-r--r-- | internal/tui/components/logs/table.go | 28 |
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...) } |
