fix getPrefs error on browser startup in the active tab
This commit is contained in:
parent
da6361637d
commit
a26115154a
16
js/prefs.js
16
js/prefs.js
|
@ -119,11 +119,9 @@ window.INJECTED !== 1 && (() => {
|
|||
'storage.sync': ['get', 'set'],
|
||||
});
|
||||
}
|
||||
const initializing = (
|
||||
msg.isBg
|
||||
? browser.storage.sync.get(STORAGE_KEY).then(res => res[STORAGE_KEY])
|
||||
: API.getPrefs()
|
||||
).then(setAll);
|
||||
// getPrefs may fail on browser startup in the active tab as it loads before the background script
|
||||
const initializing = (msg.isBg ? readStorage() : API.getPrefs().catch(readStorage))
|
||||
.then(setAll);
|
||||
|
||||
chrome.storage.onChanged.addListener(async (changes, area) => {
|
||||
const data = area === 'sync' && changes[STORAGE_KEY];
|
||||
|
@ -237,6 +235,14 @@ window.INJECTED !== 1 && (() => {
|
|||
}
|
||||
}
|
||||
|
||||
function readStorage() {
|
||||
/* Using a non-promisified call since this code may also run in a content script
|
||||
when API.getPrefs occasionally fails during browser startup in the active tab */
|
||||
return new Promise(resolve =>
|
||||
chrome.storage.sync.get(STORAGE_KEY, data =>
|
||||
resolve(data[STORAGE_KEY])));
|
||||
}
|
||||
|
||||
function updateStorage() {
|
||||
return browser.storage.sync.set({[STORAGE_KEY]: values});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user