diff options
| author | adamdottv <[email protected]> | 2025-05-29 14:04:44 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-05-29 14:04:49 -0500 |
| commit | ce5b3126d31758cb29a1cb32f23b66ef167e52aa (patch) | |
| tree | 2c73389a28deb523e3c9f079d65dd0a8a43827c8 /internal/tui/components | |
| parent | 26606ccbf7be90a6cd7c4d80aa9a3333cc9db6a8 (diff) | |
| download | opencode-ce5b3126d31758cb29a1cb32f23b66ef167e52aa.tar.gz opencode-ce5b3126d31758cb29a1cb32f23b66ef167e52aa.zip | |
wip: refactoring tui
Diffstat (limited to 'internal/tui/components')
| -rw-r--r-- | internal/tui/components/chat/messages.go | 111 | ||||
| -rw-r--r-- | internal/tui/components/chat/sidebar.go | 2 |
2 files changed, 30 insertions, 83 deletions
diff --git a/internal/tui/components/chat/messages.go b/internal/tui/components/chat/messages.go index 267356f90..ec2cf2cbf 100644 --- a/internal/tui/components/chat/messages.go +++ b/internal/tui/components/chat/messages.go @@ -1,6 +1,7 @@ package chat import ( + "fmt" "time" "github.com/charmbracelet/bubbles/key" @@ -93,63 +94,9 @@ func (m *messagesCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case renderFinishedMsg: m.rendering = false m.viewport.GotoBottom() - case state.StateUpdatedMsg: m.renderView() m.viewport.GotoBottom() - - // case pubsub.Event[message.Message]: - // needsRerender := false - // if msg.Type == message.EventMessageCreated { - // if msg.Payload.SessionID == m.app.CurrentSessionOLD.ID { - // messageExists := false - // for _, v := range m.messages { - // if v.ID == msg.Payload.ID { - // messageExists = true - // break - // } - // } - // - // if !messageExists { - // if len(m.messages) > 0 { - // lastMsgID := m.messages[len(m.messages)-1].ID - // delete(m.cachedContent, lastMsgID) - // } - // - // m.messages = append(m.messages, msg.Payload) - // delete(m.cachedContent, m.currentMsgID) - // m.currentMsgID = msg.Payload.ID - // needsRerender = true - // } - // } - // // There are tool calls from the child task - // for _, v := range m.messages { - // for _, c := range v.ToolCalls() { - // if c.ID == msg.Payload.SessionID { - // delete(m.cachedContent, v.ID) - // needsRerender = true - // } - // } - // } - // } else if msg.Type == message.EventMessageUpdated && msg.Payload.SessionID == m.app.CurrentSessionOLD.ID { - // for i, v := range m.messages { - // if v.ID == msg.Payload.ID { - // m.messages[i] = msg.Payload - // delete(m.cachedContent, msg.Payload.ID) - // needsRerender = true - // break - // } - // } - // } - // if needsRerender { - // m.renderView() - // if len(m.messages) > 0 { - // if (msg.Type == message.EventMessageCreated) || - // (msg.Type == message.EventMessageUpdated && msg.Payload.ID == m.messages[len(m.messages)-1].ID) { - // m.viewport.GotoBottom() - // } - // } - // } } spinner, cmd := m.spinner.Update(msg) @@ -190,7 +137,6 @@ func (m *messagesCmp) renderView() { m.viewport.SetContent( styles.ForceReplaceBackgroundWithLipgloss( styles.BaseStyle(). - Width(m.width). Render( lipgloss.JoinVertical( lipgloss.Top, @@ -212,11 +158,12 @@ func (m *messagesCmp) View() string { lipgloss.JoinVertical( lipgloss.Top, "Loading...", - // m.working(), + m.working(), m.help(), ), ) } + if len(m.app.Messages) == 0 { content := baseStyle. Width(m.width). @@ -243,7 +190,7 @@ func (m *messagesCmp) View() string { lipgloss.JoinVertical( lipgloss.Top, m.viewport.View(), - // m.working(), + m.working(), m.help(), ), ) @@ -285,31 +232,31 @@ func hasUnfinishedToolCalls(messages []message.Message) bool { return false } -// func (m *messagesCmp) working() string { -// text := "" -// if m.IsAgentWorking() && len(m.app.Messages) > 0 { -// t := theme.CurrentTheme() -// baseStyle := styles.BaseStyle() -// -// task := "Thinking..." -// lastMessage := m.app.Messages[len(m.app.Messages)-1] -// if hasToolsWithoutResponse(m.app.Messages) { -// task = "Waiting for tool response..." -// } else if hasUnfinishedToolCalls(m.app.Messages) { -// task = "Building tool call..." -// } else if !lastMessage.IsFinished() { -// task = "Generating..." -// } -// if task != "" { -// text += baseStyle. -// Width(m.width). -// Foreground(t.Primary()). -// Bold(true). -// Render(fmt.Sprintf("%s %s ", m.spinner.View(), task)) -// } -// } -// return text -// } +func (m *messagesCmp) working() string { + text := "" + if len(m.app.Messages) > 0 { + t := theme.CurrentTheme() + baseStyle := styles.BaseStyle() + + task := "Working..." + // lastMessage := m.app.Messages[len(m.app.Messages)-1] + // if hasToolsWithoutResponse(m.app.Messages) { + // task = "Waiting for tool response..." + // } else if hasUnfinishedToolCalls(m.app.Messages) { + // task = "Building tool call..." + // } else if !lastMessage.IsFinished() { + // task = "Generating..." + // } + if task != "" { + text += baseStyle. + Width(m.width). + Foreground(t.Primary()). + Bold(true). + Render(fmt.Sprintf("%s %s ", m.spinner.View(), task)) + } + } + return text +} func (m *messagesCmp) help() string { t := theme.CurrentTheme() diff --git a/internal/tui/components/chat/sidebar.go b/internal/tui/components/chat/sidebar.go index 5645d44f2..cbce35753 100644 --- a/internal/tui/components/chat/sidebar.go +++ b/internal/tui/components/chat/sidebar.go @@ -86,7 +86,7 @@ func (m *sidebarCmp) sessionSection() string { sessionValue := baseStyle. Foreground(t.Text()). - Render(fmt.Sprintf(": %s", m.app.CurrentSessionOLD.Title)) + Render(fmt.Sprintf(": %s", m.app.Session.Title)) return sessionKey + sessionValue } |
