Fix app single instance lock (#385)

This commit is contained in:
jeffvli 2023-11-16 23:29:19 -08:00
parent 48a529dd51
commit fdfbad68e2

View file

@ -84,16 +84,6 @@ const installExtensions = async () => {
.catch(console.log); .catch(console.log);
}; };
const singleInstance = app.requestSingleInstanceLock();
if (!singleInstance) {
app.quit();
} else {
app.on('second-instance', () => {
mainWindow?.show();
});
}
const RESOURCES_PATH = app.isPackaged const RESOURCES_PATH = app.isPackaged
? path.join(process.resourcesPath, 'assets') ? path.join(process.resourcesPath, 'assets')
: path.join(__dirname, '../../assets'); : path.join(__dirname, '../../assets');
@ -666,31 +656,47 @@ const FONT_HEADERS = [
'font/woff2', 'font/woff2',
]; ];
app.whenReady() const singleInstance = app.requestSingleInstanceLock();
.then(() => {
protocol.handle('feishin', async (request) => {
const filePath = `file://${request.url.slice('feishin://'.length)}`;
const response = await net.fetch(filePath);
const contentType = response.headers.get('content-type');
if (!contentType || !FONT_HEADERS.includes(contentType)) { if (!singleInstance) {
getMainWindow()?.webContents.send('custom-font-error', filePath); app.quit();
} else {
return new Response(null, { app.on('second-instance', () => {
status: 403, if (mainWindow) {
statusText: 'Forbidden', if (mainWindow.isMinimized()) {
}); mainWindow.restore();
} }
return response; mainWindow.focus();
}); }
});
createWindow(); app.whenReady()
createTray(); .then(() => {
app.on('activate', () => { protocol.handle('feishin', async (request) => {
// On macOS it's common to re-create a window in the app when the const filePath = `file://${request.url.slice('feishin://'.length)}`;
// dock icon is clicked and there are no other windows open. const response = await net.fetch(filePath);
if (mainWindow === null) createWindow(); const contentType = response.headers.get('content-type');
});
}) if (!contentType || !FONT_HEADERS.includes(contentType)) {
.catch(console.log); getMainWindow()?.webContents.send('custom-font-error', filePath);
return new Response(null, {
status: 403,
statusText: 'Forbidden',
});
}
return response;
});
createWindow();
createTray();
app.on('activate', () => {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) createWindow();
});
})
.catch(console.log);
}