diff --git a/packages/app/src/pages/session/use-session-commands.tsx b/packages/app/src/pages/session/use-session-commands.tsx index d50401d3f..0fe2c6044 100644 --- a/packages/app/src/pages/session/use-session-commands.tsx +++ b/packages/app/src/pages/session/use-session-commands.tsx @@ -357,30 +357,41 @@ export const useSessionCommands = (input: { return [ { id: "session.share", - title: input.language.t("command.session.share"), - description: input.language.t("command.session.share.description"), + title: input.info()?.share?.url ? "Copy share link" : input.language.t("command.session.share"), + description: input.info()?.share?.url + ? "Copy share URL to clipboard" + : input.language.t("command.session.share.description"), category: input.language.t("command.category.session"), slash: "share", - disabled: !input.params.id || !!input.info()?.share?.url, + disabled: !input.params.id, onSelect: async () => { if (!input.params.id) return - await input.sdk.client.session - .share({ sessionID: input.params.id }) - .then((res) => { - navigator.clipboard.writeText(res.data!.share!.url).catch(() => + const copy = (url: string, existing: boolean) => + navigator.clipboard + .writeText(url) + .then(() => + showToast({ + title: existing + ? input.language.t("session.share.copy.copied") + : input.language.t("toast.session.share.success.title"), + description: input.language.t("toast.session.share.success.description"), + variant: "success", + }), + ) + .catch(() => showToast({ title: input.language.t("toast.session.share.copyFailed.title"), variant: "error", }), ) - }) - .then(() => - showToast({ - title: input.language.t("toast.session.share.success.title"), - description: input.language.t("toast.session.share.success.description"), - variant: "success", - }), - ) + const url = input.info()?.share?.url + if (url) { + await copy(url, true) + return + } + await input.sdk.client.session + .share({ sessionID: input.params.id }) + .then((res) => copy(res.data!.share!.url, false)) .catch(() => showToast({ title: input.language.t("toast.session.share.failed.title"),