mirror of
https://github.com/LmeSzinc/StarRailCopilot.git
synced 2024-11-24 17:42:46 +00:00
140 lines
4.3 KiB
TypeScript
140 lines
4.3 KiB
TypeScript
import {app, BrowserWindow} from 'electron';
|
|
import './security-restrictions';
|
|
import {createApp} from '/@/createApp';
|
|
import logger from '/@/logger';
|
|
import {dpiScaling} from '/@/config';
|
|
|
|
/**
|
|
* Prevent electron from running multiple instances.
|
|
*/
|
|
const isSingleInstance = app.requestSingleInstanceLock();
|
|
logger.info(`isSingleInstance:${isSingleInstance}`);
|
|
if (!isSingleInstance) {
|
|
app.quit();
|
|
} else {
|
|
app.on('second-instance', async () => {
|
|
logger.info('second-instance');
|
|
const [curWindow] = BrowserWindow.getAllWindows();
|
|
if (!curWindow) {
|
|
logger.info('------createApp------');
|
|
await createApp();
|
|
} else {
|
|
logger.info('------curWindow.restore------');
|
|
if (curWindow.isMinimized?.()) curWindow.restore?.();
|
|
logger.info('------curWindow.show------');
|
|
if (!curWindow.isVisible?.()) curWindow.show?.();
|
|
logger.info('------curWindow.focus------');
|
|
curWindow.focus?.();
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Disable Hardware Acceleration to save more system resources.
|
|
* Also `in-process-gpu` to avoid creating a gpu process which may `exited unexpectedly`
|
|
* See https://github.com/electron/electron/issues/30966
|
|
*/
|
|
app.disableHardwareAcceleration();
|
|
app.commandLine.appendSwitch('disable-gpu');
|
|
app.commandLine.appendSwitch('disable-software-rasterizer');
|
|
app.commandLine.appendSwitch('disable-gpu-compositing');
|
|
app.commandLine.appendSwitch('disable-gpu-rasterization');
|
|
app.commandLine.appendSwitch('disable-gpu-sandbox');
|
|
app.commandLine.appendSwitch('in-process-gpu');
|
|
app.commandLine.appendSwitch('no-sandbox');
|
|
|
|
// No DPI scaling
|
|
if (!dpiScaling) {
|
|
app.commandLine.appendSwitch('high-dpi-support', '1');
|
|
app.commandLine.appendSwitch('force-device-scale-factor', '1');
|
|
}
|
|
|
|
/**
|
|
*Set App Error Log Path
|
|
*/
|
|
// app.setAppLogsPath(join(app.getAppPath(), '/AlasAppError'));
|
|
|
|
/**
|
|
* Shout down background process if all windows was closed
|
|
*/
|
|
app.on('window-all-closed', () => {
|
|
app.quit();
|
|
});
|
|
|
|
/**
|
|
* @see https://www.electronjs.org/docs/latest/api/app#event-activate-macos Event: 'activate'.
|
|
*/
|
|
// app.on('activate', createWindow);
|
|
/**
|
|
* Create the application window when the background process is ready.
|
|
*/
|
|
// app
|
|
// .whenReady()
|
|
// .then(createWindow)
|
|
// .then(loadURL)
|
|
// .catch(e => console.error('Failed create window:', e));
|
|
|
|
/**
|
|
* Install Vue.js or any other extension in development mode only.
|
|
* Note: You must install `electron-devtools-installer` manually
|
|
*/
|
|
// if (import.meta.env.DEV) {
|
|
// app
|
|
// .whenReady()
|
|
// .then(() => import('electron-devtools-installer'))
|
|
// .then(module => {
|
|
// const {default: installExtension, VUEJS3_DEVTOOLS} =
|
|
// // @ts-expect-error Hotfix for https://github.com/cawa-93/vite-electron-builder/issues/915
|
|
// typeof module.default === 'function' ? module : (module.default as typeof module);
|
|
//
|
|
// return installExtension(VUEJS3_DEVTOOLS, {
|
|
// loadExtensionOptions: {
|
|
// allowFileAccess: true,
|
|
// },
|
|
// });
|
|
// })
|
|
// .catch(e => console.error('Failed install extension:', e));
|
|
// }
|
|
|
|
/**
|
|
* Check for app updates, install it in background and notify user that new version was installed.
|
|
* No reason run this in non-production build.
|
|
* @see https://www.electron.build/auto-update.html#quick-setup-guide
|
|
*
|
|
* Note: It may throw "ENOENT: no such file app-update.yml"
|
|
* if you compile production app without publishing it to distribution server.
|
|
* Like `npm run compile` does. It's ok 😅
|
|
*/
|
|
// if (import.meta.env.PROD) {
|
|
// app
|
|
// .whenReady()
|
|
// .then(() => import('electron-updater'))
|
|
// .then(module => {
|
|
// const autoUpdater =
|
|
// module.autoUpdater ||
|
|
// // @ts-expect-error Hotfix for https://github.com/electron-userland/electron-builder/issues/7338
|
|
// (module.default.autoUpdater as (typeof module)['autoUpdater']);
|
|
// return autoUpdater.checkForUpdatesAndNotify();
|
|
// })
|
|
// .catch(e => console.error('Failed check and install updates:', e));
|
|
// }
|
|
|
|
app
|
|
.whenReady()
|
|
.then(createApp)
|
|
.catch(e => {
|
|
logger.error('Failed create window:' + e);
|
|
});
|
|
|
|
app.on('activate', async () => {
|
|
logger.info('------app activate------');
|
|
const [curWindow] = BrowserWindow.getAllWindows();
|
|
if (!curWindow) {
|
|
logger.info('------createApp------');
|
|
await createApp();
|
|
} else {
|
|
logger.info('------curWindow.focus------');
|
|
curWindow.focus();
|
|
}
|
|
});
|