Skip to content

Commit b05ce53

Browse files
committed
error resilience
'work' (show popup) even if serviceworker coms is failing
1 parent 61ab039 commit b05ce53

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

ext/webextension/src/browser_action/main_popup.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,14 @@ const runtimeSendMessage = (typeof browser !== 'undefined' ?
6060
browser.runtime.sendMessage :
6161
(msg) => new Promise(suc => chrome.runtime.sendMessage(msg, suc)));
6262

63-
function state_or_masterkey_get(use_pass_store) {
64-
return runtimeSendMessage({action: 'masterkey_get',
65-
use_pass_store})
66-
.catch(err=>{ console.log("BUG!",err); });
63+
async function state_or_masterkey_get(use_pass_store) {
64+
let res = await runtimeSendMessage({action: 'masterkey_get', use_pass_store});
65+
if (res === undefined || chrome.runtime.lastError) {
66+
console.error("runtimeSendMessage failed", chrome.runtime.lastError.message);
67+
ui.user_warn("BUG! Failed backend communication");
68+
return {};
69+
}
70+
return res;
6771
}
6872

6973
function masterkey_set(masterkey, nosave) {
@@ -370,6 +374,7 @@ async function windowOnLoad() {
370374
sitestore = new SiteStore(config.use_sync ? chrome.storage.sync : chrome.storage.local);
371375
await psl.waitTableReady();
372376

377+
ui.clear_warning();
373378
let data = {};
374379
if (v.passwdtimeout!=0 || v.pass_store) {
375380
data = await state_or_masterkey_get(v.pass_store);
@@ -381,12 +386,11 @@ async function windowOnLoad() {
381386
e.target = "_blank";
382387
e.textContent = "Help?";
383388
data.masterkey=undefined;
384-
} else {
385-
ui.clear_warning();
386389
}
387390

388391
if (!data.mpwstate && !(data.masterkey && config.username))
389392
data = await getUserNameAndPassFromUser();
393+
ui.clear_warning();
390394

391395
setTimeout(()=>{ resolve_mpw(data);}, 1); // do later so page paints as fast as possible
392396

0 commit comments

Comments
 (0)