DawnLauncher/electron/main/data/ipcEvent.ts
2023-11-03 15:17:45 +08:00

76 lines
2.2 KiB
TypeScript

import { dialog, ipcMain } from "electron";
import { backupData, createBackupRestoreDataWindow } from ".";
import { closeWindow, relaunch, showErrorMessageBox } from "../commons";
import { restore } from "./data";
export default function () {
// 创建备份/恢复数据窗口
ipcMain.on("createBackupRestoreDataWindow", (event, args) => {
createBackupRestoreDataWindow();
});
// 显示备份/恢复数据窗口
ipcMain.on("showBackupRestoreDataWindow", (event, args) => {
if (global.backupRestoreDataWindow) {
global.backupRestoreDataWindow.show();
}
});
// 关闭备份/恢复数据窗口
ipcMain.on("closeBackupRestoreDataWindow", (event, args) => {
closeWindow(global.backupRestoreDataWindow);
});
// 备份数据
ipcMain.on("backupData", () => {
try {
let filePath = dialog.showSaveDialogSync(global.backupRestoreDataWindow, {
defaultPath: "Data",
filters: [{ name: "DB", extensions: ["db"] }],
});
if (filePath && filePath.trim() !== "") {
backupData(filePath).finally(() => {
// 关闭备份/恢复窗口
closeWindow(global.backupRestoreDataWindow);
});
}
} catch (e) {
if (process.env.NODE_ENV === "development") {
console.log(e);
}
}
});
// 恢复数据
ipcMain.on("restoreData", () => {
try {
let filePathList = dialog.showOpenDialogSync(
global.backupRestoreDataWindow,
{
filters: [{ name: "Data", extensions: ["db", "json"] }],
}
);
if (filePathList && filePathList.length > 0) {
let filePath = filePathList[0];
if (restore(filePath)) {
// 清空localStorage
global.mainWindow.webContents.session.clearStorageData({
storages: ["localstorage"],
});
// 重新启动程序
relaunch();
} else {
showErrorMessageBox(
"backupRestoreDataWindow",
global.language.restoreDataPrompt
);
}
}
} catch (e) {
if (process.env.NODE_ENV === "development") {
console.log(e);
}
showErrorMessageBox(
"backupRestoreDataWindow",
global.language.restoreDataPrompt
);
}
});
}