From ca0cb4bc54573147617b8de2009ac24ce5175289 Mon Sep 17 00:00:00 2001 From: Ivan Prodanov Date: Sat, 1 Oct 2022 17:26:11 +0300 Subject: [PATCH] refactor: Refactor availability checker method --- app.js | 51 +++++++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/app.js b/app.js index 33c47ae..782c1d2 100644 --- a/app.js +++ b/app.js @@ -40,6 +40,7 @@ let forceQuit = false; let resizeEvent = false; let mainWindow; let tray; +let availabilityCheckerInterval; function registerKeyboardShortcut() { globalShortcut.register('CommandOrControl+Alt+X', () => { @@ -88,30 +89,34 @@ function checkAutoStart() { }); } -function startAvailabilityCheck() { - let interval; +function availabilityCheck() { + const instance = currentInstance(); - function availabilityCheck() { - const request = net.request(`${currentInstance()}/auth/providers`); - request.on('response', (response) => { - if (response.statusCode !== 200) { - logger.error('Error: ' + response); - } - showError(response.statusCode !== 200); - }); - request.on('error', (error) => { - logger.error(error); - clearInterval(interval); - showError(true); - - if (config.get('automaticSwitching')) { - checkForAvailableInstance(); - } - }); - request.end(); + if (!instance) { + return; } - interval = setInterval(availabilityCheck, 3000); + const request = net.request(`${instance}/auth/providers`); + + request.on('response', (response) => { + if (response.statusCode !== 200) { + logger.error('Response error: ' + response); + showError(true); + } + }); + + request.on('error', async (error) => { + logger.error(error); + clearInterval(availabilityCheckerInterval); + availabilityCheckerInterval = null; + showError(true); + + if (config.get('automaticSwitching')) { + checkForAvailableInstance(); + } + }); + + request.end(); } function changePosition() { @@ -684,7 +689,9 @@ app.whenReady().then(() => { tray.setContextMenu(getMenu()); } - startAvailabilityCheck(); + if (!availabilityCheckerInterval) { + availabilityCheckerInterval = setInterval(availabilityCheck, 3000); + } // register shortcut if (config.get('shortcutEnabled')) {