diff --git a/internal/tui/components/chat/sidebar/sidebar.go b/internal/tui/components/chat/sidebar/sidebar.go index 52921f1c2c86a1d1a6497761123d321b736599d8..afd067adc06d99c3c9da911812750631423231e6 100644 --- a/internal/tui/components/chat/sidebar/sidebar.go +++ b/internal/tui/components/chat/sidebar/sidebar.go @@ -52,6 +52,7 @@ type SessionFilesMsg struct { type Sidebar interface { util.Model layout.Sizeable + SetSession(session session.Session) tea.Cmd } type sidebarCmp struct { @@ -83,10 +84,7 @@ func (m *sidebarCmp) Init() tea.Cmd { func (m *sidebarCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch msg := msg.(type) { case chat.SessionSelectedMsg: - if msg.ID != m.session.ID { - m.session = msg - } - return m, m.loadSessionFiles + return m, m.SetSession(msg) case SessionFilesMsg: m.files = sync.Map{} for _, file := range msg.Files { @@ -506,6 +504,12 @@ func (s *sidebarCmp) currentModelBlock() string { ) } +// SetSession implements Sidebar. +func (m *sidebarCmp) SetSession(session session.Session) tea.Cmd { + m.session = session + return m.loadSessionFiles +} + func cwd() string { cwd := config.WorkingDirectory() t := styles.CurrentTheme() diff --git a/internal/tui/page/chat/chat.go b/internal/tui/page/chat/chat.go index 960c1317276fdd75994094a40740b36c9d49664b..ffb6debb0f61cb1fcfa7e180b042b3b8325dd2e5 100644 --- a/internal/tui/page/chat/chat.go +++ b/internal/tui/page/chat/chat.go @@ -167,6 +167,8 @@ func (p *chatPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) { p.clearMessages(), util.CmdHandler(chat.SessionClearedMsg{}), p.setCompactMode(false), + p.layout.FocusPanel(layout.BottomPanel), + util.CmdHandler(ChatFocusedMsg{Focused: false}), ) case key.Matches(msg, p.keyMap.AddAttachment): cfg := config.Get() @@ -238,7 +240,7 @@ func (p *chatPage) setMessages() tea.Cmd { } func (p *chatPage) setSidebar() tea.Cmd { - sidebarContainer := sidebarCmp(p.app, false) + sidebarContainer := sidebarCmp(p.app, false, p.session) sidebarContainer.Init() return p.layout.SetRightPanel(sidebarContainer) } @@ -378,13 +380,18 @@ func (p *chatPage) Bindings() []key.Binding { return bindings } -func sidebarCmp(app *app.App, compact bool) layout.Container { +func sidebarCmp(app *app.App, compact bool, session session.Session) layout.Container { padding := layout.WithPadding(1, 1, 1, 1) if compact { padding = layout.WithPadding(0, 1, 1, 1) } + sidebar := sidebar.NewSidebarCmp(app.History, app.LSPClients, compact) + if session.ID != "" { + sidebar.SetSession(session) + } + return layout.NewContainer( - sidebar.NewSidebarCmp(app.History, app.LSPClients, compact), + sidebar, padding, ) } @@ -396,12 +403,12 @@ func NewChatPage(app *app.App) ChatPage { return &chatPage{ app: app, layout: layout.NewSplitPane( - layout.WithRightPanel(sidebarCmp(app, false)), + layout.WithRightPanel(sidebarCmp(app, false, session.Session{})), layout.WithBottomPanel(editorContainer), layout.WithFixedBottomHeight(5), layout.WithFixedRightWidth(31), ), - compactSidebar: sidebarCmp(app, true), + compactSidebar: sidebarCmp(app, true, session.Session{}), keyMap: DefaultKeyMap(), header: header.New(app.LSPClients), }