Archived
feat: Use single instance lock to avoid multiple instances of Vynte Connect
This commit is contained in:
+23
-17
@@ -10,10 +10,29 @@ if (started) {
|
|||||||
app.quit();
|
app.quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method will be called when Electron has finished
|
const singleInstanceLock = app.requestSingleInstanceLock()
|
||||||
// initialization and is ready to create browser windows.
|
|
||||||
// Some APIs can only be used after this event occurs.
|
if (!singleInstanceLock) app.quit();
|
||||||
app.on('ready', createWindow);
|
else {
|
||||||
|
app.on('second-instance', () => {
|
||||||
|
if (window) {
|
||||||
|
if (window.isMinimized()) window.restore();
|
||||||
|
window.focus();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
app.on('before-quit', disconnect);
|
||||||
|
}
|
||||||
|
|
||||||
|
app.whenReady().then(() => {
|
||||||
|
createWindow();
|
||||||
|
createTray();
|
||||||
|
refreshStatus();
|
||||||
|
pollTimer = setInterval(refreshStatus, POLL_INTERVAL_MS);
|
||||||
|
});
|
||||||
|
|
||||||
|
app.on('before-quit', () => {
|
||||||
|
if (pollTimer) clearInterval(pollTimer);
|
||||||
|
});
|
||||||
|
|
||||||
// Quit when all windows are closed, except on macOS. There, it's common
|
// Quit when all windows are closed, except on macOS. There, it's common
|
||||||
// for applications and their menu bar to stay active until the user quits
|
// for applications and their menu bar to stay active until the user quits
|
||||||
@@ -24,8 +43,6 @@ app.on('window-all-closed', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.on('before-quit', disconnect);
|
|
||||||
|
|
||||||
app.on('activate', () => {
|
app.on('activate', () => {
|
||||||
// On OS X it's common to re-create a window in the app when the
|
// On OS X it's common to re-create a window in the app when the
|
||||||
// dock icon is clicked and there are no other windows open.
|
// dock icon is clicked and there are no other windows open.
|
||||||
@@ -209,17 +226,6 @@ function createTray() {
|
|||||||
tray.on('click', showWindow);
|
tray.on('click', showWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
app.whenReady().then(() => {
|
|
||||||
createWindow();
|
|
||||||
createTray();
|
|
||||||
refreshStatus();
|
|
||||||
pollTimer = setInterval(refreshStatus, POLL_INTERVAL_MS);
|
|
||||||
});
|
|
||||||
|
|
||||||
app.on('before-quit', () => {
|
|
||||||
if (pollTimer) clearInterval(pollTimer);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.handle('status:get', () => withAutoConnect(cachedStatus));
|
ipcMain.handle('status:get', () => withAutoConnect(cachedStatus));
|
||||||
ipcMain.handle('status:refresh', refreshStatus);
|
ipcMain.handle('status:refresh', refreshStatus);
|
||||||
ipcMain.handle('vpn:connect', connect);
|
ipcMain.handle('vpn:connect', connect);
|
||||||
|
|||||||
Reference in New Issue
Block a user