wip: refactoring tui

This commit is contained in:
adamdottv 2025-05-29 06:42:58 -05:00
parent 2b77a7f714
commit 9f1a75e938
No known key found for this signature in database
GPG key ID: 9CB48779AF150E75
3 changed files with 38 additions and 58 deletions

View file

@ -2,6 +2,7 @@ package app
import (
"context"
"fmt"
"maps"
"sync"
"time"
@ -158,6 +159,36 @@ func (a *App) SendChatMessage(ctx context.Context, text string, attachments []me
return tea.Batch(cmds...)
}
func (a *App) ListSessions(ctx context.Context) ([]session.Session, error) {
resp, err := a.Client.PostSessionListWithResponse(ctx)
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 []session.Session{}, nil
}
infos := *resp.JSON200
// Convert to old session type
sessions := make([]session.Session, len(infos))
for i, info := range infos {
sessions[i] = session.Session{
ID: info.Id,
Title: info.Title,
CreatedAt: time.Now(), // API doesn't provide this yet
UpdatedAt: time.Now(), // API doesn't provide this yet
}
}
return sessions, nil
}
// initTheme sets the application theme based on the configuration
func (app *App) initTheme() {
cfg := config.Get()

View file

@ -24,71 +24,20 @@ func NewSessionServiceBridge(client *client.ClientWithResponses) *SessionService
// Create creates a new session
func (s *SessionServiceBridge) Create(ctx context.Context, title string) (session.Session, error) {
resp, err := s.client.PostSessionCreateWithResponse(ctx)
if err != nil {
return session.Session{}, err
}
if resp.StatusCode() != 200 {
return session.Session{}, fmt.Errorf("failed to create session: %d", resp.StatusCode())
}
info := resp.JSON200
// Convert to old session type
return session.Session{
ID: info.Id,
Title: info.Title,
CreatedAt: time.Now(), // API doesn't provide this yet
UpdatedAt: time.Now(), // API doesn't provide this yet
}, nil
// Moved to app.CreateSession
return session.Session{}, fmt.Errorf("don't use this")
}
// Get retrieves a session by ID
func (s *SessionServiceBridge) Get(ctx context.Context, id string) (session.Session, error) {
// TODO: API doesn't have a get by ID endpoint yet
// For now, list all and find the one we want
sessions, err := s.List(ctx)
if err != nil {
return session.Session{}, err
}
for _, sess := range sessions {
if sess.ID == id {
return sess, nil
}
}
return session.Session{}, fmt.Errorf("session not found: %s", id)
// Moved to app.GetSession
return session.Session{}, fmt.Errorf("don't use this")
}
// List retrieves all sessions
func (s *SessionServiceBridge) List(ctx context.Context) ([]session.Session, error) {
resp, err := s.client.PostSessionListWithResponse(ctx)
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 []session.Session{}, nil
}
infos := *resp.JSON200
// Convert to old session type
sessions := make([]session.Session, len(infos))
for i, info := range infos {
sessions[i] = session.Session{
ID: info.Id,
Title: info.Title,
CreatedAt: time.Now(), // API doesn't provide this yet
UpdatedAt: time.Now(), // API doesn't provide this yet
}
}
return sessions, nil
// Moved to app.ListSessions
return []session.Session{}, fmt.Errorf("don't use this")
}
// Update updates a session - NOT IMPLEMENTED IN API YET

View file

@ -463,7 +463,7 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
a.showFilepicker = false
// Load sessions and show the dialog
sessions, err := a.app.Sessions.List(context.Background())
sessions, err := a.app.ListSessions(context.Background())
if err != nil {
status.Error(err.Error())
return a, nil