diff --git a/pkg/tui/tui.go b/pkg/tui/tui.go index 6517521..fc3d803 100644 --- a/pkg/tui/tui.go +++ b/pkg/tui/tui.go @@ -91,21 +91,13 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.state = shared.View(msg) switch m.state { case shared.StateChat: - m.chat.HandleResize(m.State.Width, m.State.Height) + m.chat.HandleResize(m.Width, m.Height) case shared.StateConversations: - m.conversations.HandleResize(m.State.Width, m.State.Height) + m.conversations.HandleResize(m.Width, m.Height) } return m, func() tea.Msg { return shared.MsgViewEnter(struct{}{}) } - case conversations.MsgConversationSelected: - // passed up through conversation list model - m.State.Values.ConvShortname = msg.ShortName.String - cmds = append(cmds, func() tea.Msg { - return shared.MsgViewChange(shared.StateChat) - }) case tea.WindowSizeMsg: - m.State.Width, m.State.Height = msg.Width, msg.Height - case shared.MsgError: - m.State.Err = msg + m.Width, m.Height = msg.Width, msg.Height } var cmd tea.Cmd @@ -123,18 +115,13 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } func (m Model) View() string { - if m.State.Width == 0 { - return "" - } - switch m.state { case shared.StateConversations: return m.conversations.View() case shared.StateChat: return m.chat.View() - default: - return "" } + return "" } func Launch(ctx *lmcli.Context, convShortname string) error { diff --git a/pkg/tui/views/chat/chat.go b/pkg/tui/views/chat/chat.go index 2323d7b..4295476 100644 --- a/pkg/tui/views/chat/chat.go +++ b/pkg/tui/views/chat/chat.go @@ -90,9 +90,9 @@ type Model struct { replyCursor cursor.Model // cursor to indicate incoming response } -func Chat(tui shared.State) Model { +func Chat(state shared.State) Model { m := Model{ - State: tui, + State: state, conversation: &models.Conversation{}, persistence: true, @@ -125,7 +125,7 @@ func Chat(tui shared.State) Model { m.replyCursor.SetChar(" ") m.replyCursor.Focus() - system := tui.Ctx.GetSystemPrompt() + system := state.Ctx.GetSystemPrompt() if system != "" { m.messages = []models.Message{{ Role: models.MessageRoleSystem, diff --git a/pkg/tui/views/conversations/conversations.go b/pkg/tui/views/conversations/conversations.go index 52885e5..4f70562 100644 --- a/pkg/tui/views/conversations/conversations.go +++ b/pkg/tui/views/conversations/conversations.go @@ -24,7 +24,7 @@ type ( // sent when conversation list is loaded msgConversationsLoaded ([]loadedConversation) // sent when a conversation is selected - MsgConversationSelected models.Conversation + msgConversationSelected models.Conversation ) type Model struct { @@ -51,7 +51,7 @@ func (m *Model) HandleInput(msg tea.KeyMsg) (bool, tea.Cmd) { case "enter": if len(m.conversations) > 0 && m.cursor < len(m.conversations) { return true, func() tea.Msg { - return MsgConversationSelected(m.conversations[m.cursor].conv) + return msgConversationSelected(m.conversations[m.cursor].conv) } } case "j", "down": @@ -121,6 +121,11 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { case msgConversationsLoaded: m.conversations = msg m.content.SetContent(m.renderConversationList()) + case msgConversationSelected: + m.Values.ConvShortname = msg.ShortName.String + cmds = append(cmds, func() tea.Msg { + return shared.MsgViewChange(shared.StateChat) + }) } var cmd tea.Cmd