"use strict"; const { app, BrowserWindow, ipcMain, shell, session, Menu, Tray, nativeImage } = require("electron"); const { join } = require("path"); require("fs"); let mainWindow = null; let tray = null; let isQuitting = false; const VITE_DEV_SERVER_URL = process.env.VITE_DEV_SERVER_URL; function getIconPath() { return VITE_DEV_SERVER_URL ? join(__dirname, "../public/icons/icon-256.png") : join(__dirname, "../dist/icons/icon-256.png"); } function getTrayIconPath() { return VITE_DEV_SERVER_URL ? join(__dirname, "../public/icons/tray-icon.png") : join(__dirname, "../dist/icons/tray-icon.png"); } function createTrayIcon() { const trayIconPath = getTrayIconPath(); return nativeImage.createFromPath(trayIconPath); } function createTray() { const trayIcon = createTrayIcon(); tray = new Tray(trayIcon); const contextMenu = Menu.buildFromTemplate([ { label: "显示主窗口", click: () => { if (mainWindow) { mainWindow.show(); mainWindow.focus(); } } }, { label: "最小化到托盘", click: () => { mainWindow == null ? void 0 : mainWindow.hide(); } }, { type: "separator" }, { label: "退出", click: () => { isQuitting = true; app.quit(); } } ]); tray.setToolTip("多平台媒体管理系统"); tray.setContextMenu(contextMenu); tray.on("click", () => { if (mainWindow) { if (mainWindow.isVisible()) { mainWindow.focus(); } else { mainWindow.show(); mainWindow.focus(); } } }); tray.on("double-click", () => { if (mainWindow) { mainWindow.show(); mainWindow.focus(); } }); } function createWindow() { Menu.setApplicationMenu(null); const iconPath = getIconPath(); mainWindow = new BrowserWindow({ width: 1400, height: 900, minWidth: 1200, minHeight: 700, icon: iconPath, webPreferences: { preload: join(__dirname, "preload.js"), nodeIntegration: false, contextIsolation: true, webviewTag: true // 启用 webview 标签 }, frame: false, // 无边框窗口,自定义标题栏 transparent: false, backgroundColor: "#f0f2f5", show: false }); mainWindow.once("ready-to-show", () => { mainWindow == null ? void 0 : mainWindow.show(); setupWindowEvents(); }); if (VITE_DEV_SERVER_URL) { mainWindow.loadURL(VITE_DEV_SERVER_URL); mainWindow.webContents.openDevTools(); } else { mainWindow.loadFile(join(__dirname, "../dist/index.html")); } mainWindow.webContents.setWindowOpenHandler(({ url }) => { shell.openExternal(url); return { action: "deny" }; }); mainWindow.on("close", (event) => { if (!isQuitting) { event.preventDefault(); mainWindow == null ? void 0 : mainWindow.hide(); if (tray && !app.isPackaged) ; } }); mainWindow.on("closed", () => { mainWindow = null; }); } const gotTheLock = app.requestSingleInstanceLock(); if (!gotTheLock) { app.quit(); } else { app.on("second-instance", () => { if (mainWindow) { mainWindow.show(); if (mainWindow.isMinimized()) mainWindow.restore(); mainWindow.focus(); } }); app.whenReady().then(() => { createTray(); createWindow(); app.on("activate", () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } else if (mainWindow) { mainWindow.show(); } }); }); } app.on("window-all-closed", () => { }); app.on("before-quit", () => { isQuitting = true; }); app.on("quit", () => { if (tray) { tray.destroy(); tray = null; } }); ipcMain.handle("get-app-version", () => { return app.getVersion(); }); ipcMain.handle("get-platform", () => { return process.platform; }); ipcMain.on("window-minimize", () => { mainWindow == null ? void 0 : mainWindow.minimize(); }); ipcMain.on("window-maximize", () => { if (mainWindow == null ? void 0 : mainWindow.isMaximized()) { mainWindow.unmaximize(); } else { mainWindow == null ? void 0 : mainWindow.maximize(); } }); ipcMain.on("window-close", () => { mainWindow == null ? void 0 : mainWindow.hide(); }); ipcMain.on("app-quit", () => { isQuitting = true; app.quit(); }); ipcMain.handle("window-is-maximized", () => { return (mainWindow == null ? void 0 : mainWindow.isMaximized()) || false; }); function setupWindowEvents() { mainWindow == null ? void 0 : mainWindow.on("maximize", () => { mainWindow == null ? void 0 : mainWindow.webContents.send("window-maximized", true); }); mainWindow == null ? void 0 : mainWindow.on("unmaximize", () => { mainWindow == null ? void 0 : mainWindow.webContents.send("window-maximized", false); }); } ipcMain.handle("get-webview-cookies", async (_event, partition, url) => { try { const ses = session.fromPartition(partition); const cookies = await ses.cookies.get({ url }); return cookies; } catch (error) { console.error("获取 cookies 失败:", error); return []; } }); ipcMain.handle("clear-webview-cookies", async (_event, partition) => { try { const ses = session.fromPartition(partition); await ses.clearStorageData({ storages: ["cookies"] }); return true; } catch (error) { console.error("清除 cookies 失败:", error); return false; } }); //# sourceMappingURL=main.js.map