|
@@ -30,7 +30,7 @@ import { useNavigate } from "react-router-dom";
|
|
|
|
|
|
import chatStyle from "./chat.module.scss";
|
|
import chatStyle from "./chat.module.scss";
|
|
import { useEffect, useState } from "react";
|
|
import { useEffect, useState } from "react";
|
|
-import { downloadAs, readFromFile } from "../utils";
|
|
|
|
|
|
+import { copyToClipboard, downloadAs, readFromFile } from "../utils";
|
|
import { Updater } from "../typing";
|
|
import { Updater } from "../typing";
|
|
import { ModelConfigList } from "./model-config";
|
|
import { ModelConfigList } from "./model-config";
|
|
import { FileName, Path } from "../constant";
|
|
import { FileName, Path } from "../constant";
|
|
@@ -65,6 +65,11 @@ export function MaskConfig(props: {
|
|
});
|
|
});
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ const copyMaskLink = () => {
|
|
|
|
+ const maskLink = `${location.protocol}//${location.host}/#${Path.NewChat}?mask=${props.mask.id}`;
|
|
|
|
+ copyToClipboard(maskLink);
|
|
|
|
+ };
|
|
|
|
+
|
|
const globalConfig = useAppConfig();
|
|
const globalConfig = useAppConfig();
|
|
|
|
|
|
return (
|
|
return (
|
|
@@ -125,6 +130,20 @@ export function MaskConfig(props: {
|
|
}}
|
|
}}
|
|
></input>
|
|
></input>
|
|
</ListItem>
|
|
</ListItem>
|
|
|
|
+
|
|
|
|
+ {!props.shouldSyncFromGlobal ? (
|
|
|
|
+ <ListItem
|
|
|
|
+ title={Locale.Mask.Config.Share.Title}
|
|
|
|
+ subTitle={Locale.Mask.Config.Share.SubTitle}
|
|
|
|
+ >
|
|
|
|
+ <IconButton
|
|
|
|
+ icon={<CopyIcon />}
|
|
|
|
+ text={Locale.Mask.Config.Share.Action}
|
|
|
|
+ onClick={copyMaskLink}
|
|
|
|
+ />
|
|
|
|
+ </ListItem>
|
|
|
|
+ ) : null}
|
|
|
|
+
|
|
{props.shouldSyncFromGlobal ? (
|
|
{props.shouldSyncFromGlobal ? (
|
|
<ListItem
|
|
<ListItem
|
|
title={Locale.Mask.Config.Sync.Title}
|
|
title={Locale.Mask.Config.Sync.Title}
|