diff --git a/keepassxc-browser/background/browserAction.js b/keepassxc-browser/background/browserAction.js index 2f08f45..149673b 100755 --- a/keepassxc-browser/background/browserAction.js +++ b/keepassxc-browser/background/browserAction.js @@ -47,7 +47,7 @@ browserAction.showDefault = async function(tab) { tab = tabs[0]; } - if (page.tabs[tab.id] && page.tabs[tab.id].loginList.length > 0) { + if (page.tabs[tab.id]?.loginList.length > 0) { popupData.iconType = 'questionmark'; popupData.popup = 'popup_login'; } diff --git a/keepassxc-browser/background/event.js b/keepassxc-browser/background/event.js index 718c762..459d5c4 100755 --- a/keepassxc-browser/background/event.js +++ b/keepassxc-browser/background/event.js @@ -23,7 +23,9 @@ kpxcEvent.showStatus = async function(tab, configured, internalPoll) { browserAction.showDefault(tab); } - const errorMessage = page.tabs[tab.id].errorMessage; + const errorMessage = page.tabs[tab.id]?.errorMessage ?? undefined; + const usernameFieldDetected = page.tabs[tab.id]?.usernameFieldDetected ?? false; + return { identifier: keyId, configured: configured, @@ -31,8 +33,8 @@ kpxcEvent.showStatus = async function(tab, configured, internalPoll) { keePassXCAvailable: keepass.isKeePassXCAvailable, encryptionKeyUnrecognized: keepass.isEncryptionKeyUnrecognized, associated: keepass.isAssociated(), - error: errorMessage || null, - usernameFieldDetected: page.tabs[tab.id].usernameFieldDetected, + error: errorMessage, + usernameFieldDetected: usernameFieldDetected, showGettingStartedGuideAlert: page.settings.showGettingStartedGuideAlert, showTroubleshootingGuideAlert: page.settings.showTroubleshootingGuideAlert }; diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index 3c6a658..82ad4d1 100755 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -112,9 +112,7 @@ keepass.retrieveCredentials = async function(tab, args = []) { return []; } - if (tab && page.tabs[tab.id]) { - page.tabs[tab.id].errorMessage = null; - } + keepass.clearErrorMessage(tab); if (!keepass.isConnected) { return []; @@ -223,9 +221,7 @@ keepass.associate = async function(tab) { return AssociatedAction.NOT_ASSOCIATED; } - if (tab && page.tabs[tab.id]) { - page.tabs[tab.id].errorMessage = null; - } + keepass.clearErrorMessage(tab); const kpAction = kpActions.ASSOCIATE; const key = nacl.util.encodeBase64(keepass.keyPair.publicKey); @@ -261,9 +257,7 @@ keepass.associate = async function(tab) { }; keepass.testAssociation = async function(tab, args = []) { - if (tab && page.tabs[tab.id]) { - page.tabs[tab.id].errorMessage = null; - } + keepass.clearErrorMessage(tab); try { const [ enableTimeout = false, triggerUnlock = false ] = args; @@ -316,9 +310,7 @@ keepass.testAssociation = async function(tab, args = []) { keepass.handleError(tab, kpErrors.ASSOCIATION_FAILED); } else { keepass.isEncryptionKeyUnrecognized = false; - if (tab && page.tabs[tab.id]) { - delete page.tabs[tab.id].errorMessage; - } + keepass.clearErrorMessage(tab); } return keepass.isAssociated(); @@ -492,9 +484,7 @@ keepass.getDatabaseGroups = async function(tab) { return []; } - if (tab && page.tabs[tab.id]) { - page.tabs[tab.id].errorMessage = null; - } + keepass.clearErrorMessage(tab); if (!keepass.isConnected) { return []; @@ -534,9 +524,7 @@ keepass.createNewGroup = async function(tab, args = []) { return []; } - if (tab && page.tabs[tab.id]) { - page.tabs[tab.id].errorMessage = null; - } + keepass.clearErrorMessage(tab); if (!keepass.isConnected) { return []; @@ -758,8 +746,8 @@ keepass.reconnect = async function(tab, connectionTimeout) { } const hash = await keepass.getDatabaseHash(tab); - if (hash !== '' && tab && page.tabs[tab.id]) { - delete page.tabs[tab.id].errorMessage; + if (hash !== '') { + keepass.clearErrorMessage(tab); } await keepass.testAssociation(); @@ -845,6 +833,12 @@ keepass.checkForNewKeePassXCVersion = function() { keepass.latestKeePassXC.lastChecked = new Date().valueOf(); }; +keepass.clearErrorMessage = function(tab) { + if (tab && page.tabs[tab.id]) { + page.tabs[tab.id].errorMessage = undefined; + } +}; + keepass.handleError = function(tab, errorCode, errorMessage = '') { if (errorMessage.length === 0) { errorMessage = kpErrors.getError(errorCode); diff --git a/keepassxc-browser/background/page.js b/keepassxc-browser/background/page.js index 6234b5a..fe1aec7 100755 --- a/keepassxc-browser/background/page.js +++ b/keepassxc-browser/background/page.js @@ -302,7 +302,7 @@ page.createTabEntry = function(tabId) { // If the retrieval is forced (from Credential Banner), get new credentials normally. page.retrieveCredentials = async function(tab, args = []) { const [ url, submitUrl, force ] = args; - if (page.tabs[tab.id] && page.tabs[tab.id].credentials.length > 0 && !force) { + if (page.tabs[tab.id]?.credentials.length > 0 && !force) { return page.tabs[tab.id].credentials; } @@ -380,7 +380,7 @@ page.getLoginList = async function(tab) { }; page.fillHttpAuth = async function(tab, credentials) { - if (page.tabs[tab.id] && page.tabs[tab.id].loginList.resolve) { + if (page.tabs[tab.id]?.loginList.resolve) { page.tabs[tab.id].loginList.resolve({ authCredentials: { username: credentials.login, diff --git a/keepassxc-browser/popups/popup.js b/keepassxc-browser/popups/popup.js index 539e468..cef6dc0 100644 --- a/keepassxc-browser/popups/popup.js +++ b/keepassxc-browser/popups/popup.js @@ -44,7 +44,7 @@ function statusResponse(r) { } else if (!r.associated) { $('#need-reconfigure').show(); $('#need-reconfigure-message').textContent = r.error; - } else if (r.error !== null) { + } else if (r.error) { $('#error-encountered').show(); $('#error-message').textContent = r.error; } else {