|
@@ -21,7 +21,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 } from "../utils";
|
|
|
|
|
|
+import { downloadAs, readFromFile } from "../utils";
|
|
import { Updater } from "../api/openai/typing";
|
|
import { Updater } from "../api/openai/typing";
|
|
import { ModelConfigList } from "./model-config";
|
|
import { ModelConfigList } from "./model-config";
|
|
import { FileName, Path } from "../constant";
|
|
import { FileName, Path } from "../constant";
|
|
@@ -222,6 +222,21 @@ export function MaskPage() {
|
|
downloadAs(JSON.stringify(masks), FileName.Masks);
|
|
downloadAs(JSON.stringify(masks), FileName.Masks);
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ const importFromFile = () => {
|
|
|
|
+ readFromFile().then((content) => {
|
|
|
|
+ try {
|
|
|
|
+ const importMasks = JSON.parse(content);
|
|
|
|
+ if (Array.isArray(importMasks)) {
|
|
|
|
+ for (const mask of importMasks) {
|
|
|
|
+ if (mask.name) {
|
|
|
|
+ maskStore.create(mask);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch {}
|
|
|
|
+ });
|
|
|
|
+ };
|
|
|
|
+
|
|
return (
|
|
return (
|
|
<ErrorBoundary>
|
|
<ErrorBoundary>
|
|
<div className={styles["mask-page"]}>
|
|
<div className={styles["mask-page"]}>
|
|
@@ -247,7 +262,7 @@ export function MaskPage() {
|
|
<IconButton
|
|
<IconButton
|
|
icon={<UploadIcon />}
|
|
icon={<UploadIcon />}
|
|
bordered
|
|
bordered
|
|
- onClick={() => showToast(Locale.WIP)}
|
|
|
|
|
|
+ onClick={() => importFromFile()}
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
<div className="window-action-button">
|
|
<div className="window-action-button">
|
|
@@ -371,7 +386,10 @@ export function MaskPage() {
|
|
key="export"
|
|
key="export"
|
|
bordered
|
|
bordered
|
|
onClick={() =>
|
|
onClick={() =>
|
|
- downloadAs(JSON.stringify(editingMask), "mask.json")
|
|
|
|
|
|
+ downloadAs(
|
|
|
|
+ JSON.stringify(editingMask),
|
|
|
|
+ `${editingMask.name}.json`,
|
|
|
|
+ )
|
|
}
|
|
}
|
|
/>,
|
|
/>,
|
|
<IconButton
|
|
<IconButton
|