|
|
@@ -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"),
|