diff options
| author | adamdottv <[email protected]> | 2025-06-04 13:52:23 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-06-04 13:52:23 -0500 |
| commit | 093e64eb54b0340442a8b1d73a4e7c769f3c275c (patch) | |
| tree | 04b18060e22cc1354833133c305d1c7ddc604a65 /packages/tui/internal/app | |
| parent | f34a3b6f67ff3cf255a0a9e547da31fa0b5b8912 (diff) | |
| download | opencode-093e64eb54b0340442a8b1d73a4e7c769f3c275c.tar.gz opencode-093e64eb54b0340442a8b1d73a4e7c769f3c275c.zip | |
wip: refactoring tui
Diffstat (limited to 'packages/tui/internal/app')
| -rw-r--r-- | packages/tui/internal/app/app.go | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go index 65b0217ce..d4b59c0b9 100644 --- a/packages/tui/internal/app/app.go +++ b/packages/tui/internal/app/app.go @@ -118,12 +118,12 @@ type Attachment struct { } func (a *App) IsBusy() bool { - for _, message := range a.Messages { - if message.Metadata.Time.Completed == nil { - return true - } + if len(a.Messages) == 0 { + return false } - return false + + lastMessage := a.Messages[len(a.Messages)-1] + return lastMessage.Metadata.Time.Completed == nil } func (a *App) SaveConfig() { @@ -231,6 +231,23 @@ func (a *App) SendChatMessage(ctx context.Context, text string, attachments []At return tea.Batch(cmds...) } +func (a *App) Cancel(ctx context.Context, sessionID string) error { + response, err := a.Client.PostSessionAbort(ctx, client.PostSessionAbortJSONRequestBody{ + SessionID: sessionID, + }) + if err != nil { + slog.Error("Failed to cancel session", "error", err) + status.Error(err.Error()) + return err + } + if response != nil && response.StatusCode != 200 { + slog.Error("Failed to cancel session", "error", fmt.Sprintf("failed to cancel session: %d", response.StatusCode)) + status.Error(fmt.Sprintf("failed to cancel session: %d", response.StatusCode)) + return fmt.Errorf("failed to cancel session: %d", response.StatusCode) + } + return nil +} + func (a *App) ListSessions(ctx context.Context) ([]client.SessionInfo, error) { resp, err := a.Client.PostSessionListWithResponse(ctx) if err != nil { |
