summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHaris Gušić <[email protected]>2025-11-01 14:06:56 +0100
committerGitHub <[email protected]>2025-11-01 08:06:56 -0500
commit7df61a74a091ee3629d866477c0259feb7b8051d (patch)
tree0697af120a9a6e348c80a367f94dca3a69f4cab9
parent4f2311088031259af8a75d0569be59c6ad5ffc76 (diff)
downloadopencode-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.tsx18
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()
},
},