adamdottv 9 месяцев назад
Родитель
Сommit
463002185b
1 измененных файлов с 17 добавлено и 11 удалено
  1. 17 11
      internal/tui/components/logs/table.go

+ 17 - 11
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...)
 }