فهرست منبع

Hide /share if disabled (#4215)

Aiden Cline 3 ماه پیش
والد
کامیت
e1fc4a756b

+ 9 - 6
packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx

@@ -217,12 +217,6 @@ export function Autocomplete(props: {
           description: "compact the session",
           onSelect: () => command.trigger("session.compact"),
         },
-        {
-          display: "/share",
-          disabled: !!s.share?.url,
-          description: "share a session",
-          onSelect: () => command.trigger("session.share"),
-        },
         {
           display: "/unshare",
           disabled: !s.share,
@@ -250,7 +244,16 @@ export function Autocomplete(props: {
           onSelect: () => command.trigger("session.timeline"),
         },
       )
+      if (sync.data.config.share !== "disabled") {
+        results.push({
+          display: "/share",
+          disabled: !!s.share?.url,
+          description: "share a session",
+          onSelect: () => command.trigger("session.share"),
+        })
+      }
     }
+
     results.push(
       {
         display: "/new",

+ 26 - 22
packages/opencode/src/cli/cmd/tui/routes/session/index.tsx

@@ -217,29 +217,33 @@ export function Session() {
         dialog.clear()
       },
     },
-    {
-      title: "Share session",
-      value: "session.share",
-      keybind: "session_share",
-      disabled: !!session()?.share?.url,
-      category: "Session",
-      onSelect: async (dialog) => {
-        await sdk.client.session
-          .share({
-            path: {
-              id: route.sessionID,
+    ...(sync.data.config.share !== "disabled"
+      ? [
+          {
+            title: "Share session",
+            value: "session.share",
+            keybind: "session_share" as const,
+            disabled: !!session()?.share?.url,
+            category: "Session",
+            onSelect: async (dialog: any) => {
+              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()
             },
-          })
-          .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()
-      },
-    },
+          },
+        ]
+      : []),
     {
       title: "Unshare session",
       value: "session.unshare",