You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
3.1 KiB
JavaScript

const { app, BrowserWindow } = require("electron");
const { ipcMain } = require("electron");
const path = require("path");
const {
updateConfig,
getConfigValue,
bulkInsertSystemMessages,
stopProcess,
startProcess,
stopAllProcesses,
getAllSystemMessages,
clearSystemMessages
} = require("./dbHandler");
// 注册IPC通信处理
function registerIpcHandlers() {
// 更新backend_token
ipcMain.handle("update-config", async (event, tableName, key, token) => {
try {
return await updateConfig(tableName, key, token);
} catch (error) {
console.error("更新backend_token失败:", error);
throw error;
}
});
ipcMain.handle("get-config", async (event, tableName, key) => {
try {
return await getConfigValue(tableName, key);
} catch (error) {
console.error("获取失败:", error);
throw error;
}
});
ipcMain.handle("bulk-insert-system-messages", async (event, messages) => {
try {
return await bulkInsertSystemMessages(messages);
} catch (error) {
console.error("更新失败:", error);
throw error;
}
});
ipcMain.handle("clear-system-messages", async () => {
try {
return await clearSystemMessages();
} catch (error) {
console.error("停止失败:", error);
throw error;
}
});
ipcMain.handle("start-process", async (event, fileName, exeName) => {
try {
return await startProcess(fileName, exeName);
} catch (error) {
console.error("启动失败:", error);
throw error;
}
});
ipcMain.handle("stop-process", async (event, fileName, exeName) => {
try {
return await stopProcess(fileName, exeName);
} catch (error) {
console.error("停止失败:", error);
throw error;
}
});
ipcMain.handle("stop-all-process", async () => {
try {
return await stopAllProcesses();
} catch (error) {
console.error("停止失败:", error);
throw error;
}
});
ipcMain.handle("get-all-system-messages", async () => {
try {
return await getAllSystemMessages();
} catch (error) {
console.error("停止失败:", error);
throw error;
}
});
}
function createWindow() {
const win = new BrowserWindow({
width: 1920,
height: 1080,
webPreferences: {
preload: path.join(__dirname, "preload.js"), // 使用计算后的 __dirname
nodeIntegration: false,
contextIsolation: true
}
});
// 捕获 preload 加载错误
win.webContents.on("did-fail-load", (event, errorCode, errorDescription) => {
console.error("Preload 加载失败:", errorDescription);
});
// 加载应用
console.log(process.env.NODE_ENV);
if (process.env.NODE_ENV === "development") {
win.loadURL("http://localhost:8848/#/login");
win.webContents.openDevTools();
} else {
win.webContents.openDevTools();
win.loadFile("dist/index.html");
}
}
app.whenReady().then(() => {
createWindow();
// 注册IPC处理
registerIpcHandlers();
app.on("activate", () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
app.on("window-all-closed", () => {
if (process.platform !== "darwin") app.quit();
});