mirror of
https://github.com/sst/opencode.git
synced 2025-08-31 02:07:24 +00:00
wip: refactoring tui
This commit is contained in:
parent
2b77a7f714
commit
9f1a75e938
3 changed files with 38 additions and 58 deletions
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue