You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
WebCAD/src/Add-on/LoadConfig.ts

48 lines
1.6 KiB

import { FileSystem } from "../Common/FileSystem";
import { ConfigUrls } from "../Common/HostUrl";
import { PostJson } from "../Common/Request";
import { Command } from "../Editor/CommandMachine";
import { BoardModalType } from "../UI/Components/Board/BoardModal";
import { AppToaster } from "../UI/Components/Toaster";
import { userConfigStore } from "../UI/Store/UserConfigStore";
export class DownLoadDConfig implements Command
{
async exec()
{
let keys = Object.values(BoardModalType);
let allConfigs = {};
for (let key of keys)
{
allConfigs[key] = await userConfigStore.GetAllConfigs(key, false);
}
FileSystem.WriteFile("userconfig.json", JSON.stringify(allConfigs));
}
}
export class UpLoadConfig implements Command
{
async exec()
{
FileSystem.ChooseFile({
filter: ".json", callback: async (files) =>
{
let f = files[0];
let fileData = JSON.parse(await FileSystem.ReadFileAsText(f));
for (let i in fileData)
{
if (fileData.hasOwnProperty(i) && fileData[i])
{
let configs = (await userConfigStore.GetAllConfigs(i as BoardModalType)) || {};
Object.assign(configs, fileData[i]);
await PostJson(ConfigUrls.Edit, { key: i, value: JSON.stringify(configs) });
}
}
AppToaster.show({
message: "上传完成",
timeout: 1000,
});
}
});
}
}