From 9a5408e366c6422b557b0802704a4aa80664a447 Mon Sep 17 00:00:00 2001 From: varjolintu Date: Fri, 24 May 2019 10:48:34 +0300 Subject: [PATCH] Fix reconnect issues --- keepassxc-browser/background/event.js | 16 ++++++---------- keepassxc-browser/background/init.js | 6 ++---- keepassxc-browser/background/keepass.js | 23 +++++++++++++++++++---- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/keepassxc-browser/background/event.js b/keepassxc-browser/background/event.js index 0960472..cf05b04 100755 --- a/keepassxc-browser/background/event.js +++ b/keepassxc-browser/background/event.js @@ -152,16 +152,12 @@ kpxcEvent.onGetStatus = function(callback, tab, internalPoll = false, triggerUnl } }; -kpxcEvent.onReconnect = function(callback, tab) { - // Add a small timeout after reconnecting. Just to make sure. It's not pretty, I know :( - setTimeout(() => { - keepass.reconnect(callback, tab).then((configured) => { - browser.tabs.sendMessage(tab.id, { - action: 'redetect_fields' - }); - kpxcEvent.showStatus(configured, tab, callback); - }); - }, 500); +kpxcEvent.onReconnect = async function(callback, tab) { + const configured = await keepass.reconnect(callback, tab); + browser.tabs.sendMessage(tab.id, { + action: 'redetect_fields' + }); + kpxcEvent.showStatus(configured, tab, callback); }; kpxcEvent.lockDatabase = function(callback, tab) { diff --git a/keepassxc-browser/background/init.js b/keepassxc-browser/background/init.js index bce352b..60e7e4c 100644 --- a/keepassxc-browser/background/init.js +++ b/keepassxc-browser/background/init.js @@ -4,12 +4,10 @@ keepass.migrateKeyRing().then(() => { page.initSettings().then(() => { page.initOpenedTabs().then(() => { httpAuth.init(); - keepass.connectToNative(); - keepass.generateNewKeyPair(); + keepass.enableAutomaticReconnect(); keepass.changePublicKeys(null).then((pkRes) => { - keepass.enableAutomaticReconnect(); keepass.getDatabaseHash((gdRes) => {}, null); - }); + }).catch((e) => {}); }); }); }); diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index 3a7d11d..d8c80d2 100755 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -1152,10 +1152,25 @@ keepass.disableAutomaticReconnect = function() { keepass.reconnectLoop = null; }; -keepass.reconnect = async function(callback, tab) { - keepass.connectToNative(); - keepass.generateNewKeyPair(); - keepass.changePublicKeys(tab, true).then(r => true).catch(e => false); +keepass.reconnect = function(callback, tab) { + return new Promise((resolve) => { + keepass.connectToNative(); + keepass.generateNewKeyPair(); + keepass.changePublicKeys(tab, true).then((r) => { + keepass.getDatabaseHash((gdRes) => { + if (gdRes !== '' && tab && page.tabs[tab.id]) { + delete page.tabs[tab.id].errorMessage; + } + keepass.testAssociation((associationResponse) => { + keepass.isConfigured().then((configured) => { + resolve(true); + }); + }); + }, tab); + }).catch((e) => { + resolve(false); + }); + }); }; keepass.updatePopup = function(iconType) {