summaryrefslogtreecommitdiffhomepage
path: root/internal/tui/components
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-05-29 14:04:44 -0500
committeradamdottv <[email protected]>2025-05-29 14:04:49 -0500
commitce5b3126d31758cb29a1cb32f23b66ef167e52aa (patch)
tree2c73389a28deb523e3c9f079d65dd0a8a43827c8 /internal/tui/components
parent26606ccbf7be90a6cd7c4d80aa9a3333cc9db6a8 (diff)
downloadopencode-ce5b3126d31758cb29a1cb32f23b66ef167e52aa.tar.gz
opencode-ce5b3126d31758cb29a1cb32f23b66ef167e52aa.zip
wip: refactoring tui
Diffstat (limited to 'internal/tui/components')
-rw-r--r--internal/tui/components/chat/messages.go111
-rw-r--r--internal/tui/components/chat/sidebar.go2
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
}