summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRavi Kumar <[email protected]>2025-12-15 09:35:06 +0530
committerGitHub <[email protected]>2025-12-14 22:05:06 -0600
commit54569b55525de3c25c78468299261a9d94517450 (patch)
tree3afaf68220c16124a71899e2187b62007984b129
parent6a09861806fa6b2068f8251e598c14e2b756ab00 (diff)
downloadopencode-54569b55525de3c25c78468299261a9d94517450.tar.gz
opencode-54569b55525de3c25c78468299261a9d94517450.zip
fix(session): fix unshare command not clearing share state (#5523)
-rw-r--r--packages/opencode/src/cli/cmd/run.ts8
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/index.tsx11
-rw-r--r--packages/opencode/src/session/index.ts16
-rw-r--r--packages/opencode/src/share/share-next.ts2
4 files changed, 15 insertions, 22 deletions
diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts
index c57711b4c..23456c75e 100644
--- a/packages/opencode/src/cli/cmd/run.ts
+++ b/packages/opencode/src/cli/cmd/run.ts
@@ -277,8 +277,8 @@ export const RunCommand = cmd({
}
return { error }
})
- if (!shareResult.error) {
- UI.println(UI.Style.TEXT_INFO_BOLD + "~ https://opencode.ai/s/" + sessionID.slice(-8))
+ if (!shareResult.error && "data" in shareResult && shareResult.data?.share?.url) {
+ UI.println(UI.Style.TEXT_INFO_BOLD + "~ " + shareResult.data.share.url)
}
}
@@ -330,8 +330,8 @@ export const RunCommand = cmd({
}
return { error }
})
- if (!shareResult.error) {
- UI.println(UI.Style.TEXT_INFO_BOLD + "~ https://opencode.ai/s/" + sessionID.slice(-8))
+ if (!shareResult.error && "data" in shareResult && shareResult.data?.share?.url) {
+ UI.println(UI.Style.TEXT_INFO_BOLD + "~ " + shareResult.data.share.url)
}
}
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 1c1e4b65e..48f7db054 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
@@ -323,10 +323,13 @@ export function Session() {
keybind: "session_unshare",
disabled: !session()?.share?.url,
category: "Session",
- onSelect: (dialog) => {
- sdk.client.session.unshare({
- sessionID: route.sessionID,
- })
+ onSelect: async (dialog) => {
+ await sdk.client.session
+ .unshare({
+ sessionID: route.sessionID,
+ })
+ .then(() => toast.show({ message: "Session unshared successfully", variant: "success" }))
+ .catch(() => toast.show({ message: "Failed to unshare session", variant: "error" }))
dialog.clear()
},
},
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index bf3135284..b1a193904 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -234,22 +234,12 @@ export namespace Session {
})
export const unshare = fn(Identifier.schema("session"), async (id) => {
- const cfg = await Config.get()
- if (cfg.enterprise?.url) {
- const { ShareNext } = await import("@/share/share-next")
- await ShareNext.remove(id)
- await update(id, (draft) => {
- draft.share = undefined
- })
- }
- const share = await getShare(id)
- if (!share) return
- await Storage.remove(["share", id])
+ // Use ShareNext to remove the share (same as share function uses ShareNext to create)
+ const { ShareNext } = await import("@/share/share-next")
+ await ShareNext.remove(id)
await update(id, (draft) => {
draft.share = undefined
})
- const { Share } = await import("../share/share")
- await Share.remove(id, share.secret)
})
export async function update(id: string, editor: (session: Info) => void) {
diff --git a/packages/opencode/src/share/share-next.ts b/packages/opencode/src/share/share-next.ts
index fea9c3bb9..37ecdf7ea 100644
--- a/packages/opencode/src/share/share-next.ts
+++ b/packages/opencode/src/share/share-next.ts
@@ -157,7 +157,7 @@ export namespace ShareNext {
secret: share.secret,
}),
})
- await Storage.remove(["session_share", share.id])
+ await Storage.remove(["session_share", sessionID])
}
async function fullSync(sessionID: string) {