summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal/app
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-06-04 13:52:23 -0500
committeradamdottv <[email protected]>2025-06-04 13:52:23 -0500
commit093e64eb54b0340442a8b1d73a4e7c769f3c275c (patch)
tree04b18060e22cc1354833133c305d1c7ddc604a65 /packages/tui/internal/app
parentf34a3b6f67ff3cf255a0a9e547da31fa0b5b8912 (diff)
downloadopencode-093e64eb54b0340442a8b1d73a4e7c769f3c275c.tar.gz
opencode-093e64eb54b0340442a8b1d73a4e7c769f3c275c.zip
wip: refactoring tui
Diffstat (limited to 'packages/tui/internal/app')
-rw-r--r--packages/tui/internal/app/app.go27
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 {