Browse Source

wip: refactoring tui

adamdottv 9 months ago
parent
commit
189d0e5fb2

+ 15 - 11
internal/tui/app/app.go

@@ -143,26 +143,30 @@ func (a *App) ListSessions(ctx context.Context) ([]client.SessionInfo, error) {
 	if err != nil {
 		return nil, err
 	}
-
 	if resp.StatusCode() != 200 {
 		return nil, fmt.Errorf("failed to list sessions: %d", resp.StatusCode())
 	}
-
 	if resp.JSON200 == nil {
 		return []client.SessionInfo{}, nil
 	}
 
-	infos := *resp.JSON200
+	sessions := *resp.JSON200
+	return sessions, nil
+}
 
-	sessions := make([]client.SessionInfo, len(infos))
-	for i, info := range infos {
-		sessions[i] = client.SessionInfo{
-			Id:    info.Id,
-			Title: info.Title,
-		}
+func (a *App) ListMessages(ctx context.Context, sessionId string) ([]client.MessageInfo, error) {
+	resp, err := a.Client.PostSessionMessagesWithResponse(ctx, client.PostSessionMessagesJSONRequestBody{SessionID: sessionId})
+	if err != nil {
+		return nil, err
 	}
-
-	return sessions, nil
+	if resp.StatusCode() != 200 {
+		return nil, fmt.Errorf("failed to list messages: %d", resp.StatusCode())
+	}
+	if resp.JSON200 == nil {
+		return []client.MessageInfo{}, nil
+	}
+	messages := *resp.JSON200
+	return messages, nil
 }
 
 // initTheme sets the application theme based on the configuration

+ 2 - 2
internal/tui/components/chat/messages.go

@@ -73,8 +73,8 @@ func (m *messagesCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		cmd := m.Reload()
 		return m, cmd
 	case state.SessionClearedMsg:
-		m.rendering = false
-		return m, nil
+		cmd := m.Reload()
+		return m, cmd
 	case tea.KeyMsg:
 		if key.Matches(msg, messageKeys.PageUp) || key.Matches(msg, messageKeys.PageDown) ||
 			key.Matches(msg, messageKeys.HalfPageUp) || key.Matches(msg, messageKeys.HalfPageDown) {

+ 3 - 3
internal/tui/components/dialog/session.go

@@ -74,6 +74,9 @@ func (s *sessionDialogCmp) Init() tea.Cmd {
 
 func (s *sessionDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 	switch msg := msg.(type) {
+	case tea.WindowSizeMsg:
+		s.width = msg.Width
+		s.height = msg.Height
 	case tea.KeyMsg:
 		switch {
 		case key.Matches(msg, sessionKeys.Up) || key.Matches(msg, sessionKeys.K):
@@ -98,9 +101,6 @@ func (s *sessionDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		case key.Matches(msg, sessionKeys.Escape):
 			return s, util.CmdHandler(CloseSessionDialogMsg{})
 		}
-	case tea.WindowSizeMsg:
-		s.width = msg.Width
-		s.height = msg.Height
 	}
 	return s, nil
 }

+ 1 - 0
internal/tui/page/chat.go

@@ -114,6 +114,7 @@ func (p *chatPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 			// Continue sending keys to layout->chat
 		case key.Matches(msg, keyMap.NewSession):
 			p.app.Session = &client.SessionInfo{}
+			p.app.Messages = []client.MessageInfo{}
 			return p, tea.Batch(
 				p.clearSidebar(),
 				util.CmdHandler(state.SessionClearedMsg{}),

+ 5 - 4
internal/tui/tui.go

@@ -271,10 +271,6 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 	case page.PageChangeMsg:
 		return a, a.moveToPage(msg.ID)
 
-	case state.SessionSelectedMsg:
-		a.app.Session = msg
-		return a.updateAllPages(msg)
-
 	case dialog.CloseQuitMsg:
 		a.showQuit = false
 		return a, nil
@@ -286,6 +282,11 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		}
 		return a, nil
 
+	case state.SessionSelectedMsg:
+		a.app.Session = msg
+		a.app.Messages, _ = a.app.ListMessages(context.Background(), msg.Id)
+		return a.updateAllPages(msg)
+
 	case dialog.CloseCommandDialogMsg:
 		a.showCommandDialog = false
 		return a, nil