diff options
| author | Haris Gušić <[email protected]> | 2025-11-01 14:06:56 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-01 08:06:56 -0500 |
| commit | 7df61a74a091ee3629d866477c0259feb7b8051d (patch) | |
| tree | 0697af120a9a6e348c80a367f94dca3a69f4cab9 | |
| parent | 4f2311088031259af8a75d0569be59c6ad5ffc76 (diff) | |
| download | opencode-7df61a74a091ee3629d866477c0259feb7b8051d.tar.gz opencode-7df61a74a091ee3629d866477c0259feb7b8051d.zip | |
fix: tui: add toast for /share url copy (#3686)
| -rw-r--r-- | packages/opencode/src/cli/cmd/tui/routes/session/index.tsx | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx index dac9fd9af..d089826dd 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -62,7 +62,8 @@ import { DialogTimeline } from "./dialog-timeline" import { Sidebar } from "./sidebar" import { LANGUAGE_EXTENSIONS } from "@/lsp/language" import parsers from "../../../../../../parsers-config.ts" -import { Toast } from "../../ui/toast" +import { Clipboard } from "../../util/clipboard" +import { Toast, useToast } from "../../ui/toast" import { DialogSessionRename } from "../../component/dialog-session-rename" addDefaultParsers(parsers.parsers) @@ -100,6 +101,8 @@ export function Session() { createEffect(() => sync.session.sync(route.sessionID)) + const toast = useToast() + const sdk = useSDK() let scroll: ScrollBoxRenderable @@ -196,12 +199,21 @@ export function Session() { keybind: "session_share", disabled: !!session()?.share?.url, category: "Session", - onSelect: (dialog) => { - sdk.client.session.share({ + onSelect: async (dialog) => { + await sdk.client.session.share({ path: { id: route.sessionID, }, }) + .then((res) => + Clipboard.copy(res.data!.share!.url).catch(() => + toast.show({ message: "Failed to copy URL to clipboard", variant: "error" }) + ) + ) + .then(() => + toast.show({ message: "Share URL copied to clipboard!", variant: "success" }) + ) + .catch(() => toast.show({ message: "Failed to share session", variant: "error" })) dialog.clear() }, }, |
