aboutsummaryrefslogtreecommitdiff
path: root/ext/bg/js/backend.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bg/js/backend.js')
-rw-r--r--ext/bg/js/backend.js20
1 files changed, 17 insertions, 3 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js
index 59de5a50..6dcf8e4d 100644
--- a/ext/bg/js/backend.js
+++ b/ext/bg/js/backend.js
@@ -26,6 +26,9 @@ class Backend {
depth: 0
};
+ this.isPreparedResolve = null;
+ this.isPreparedPromise = new Promise((resolve) => (this.isPreparedResolve = resolve));
+
this.apiForwarder = new BackendApiForwarder();
}
@@ -38,10 +41,14 @@ class Backend {
}
chrome.runtime.onMessage.addListener(this.onMessage.bind(this));
- const options = this.getOptions(this.optionsContext);
+ const options = this.getOptionsSync(this.optionsContext);
if (options.general.showGuide) {
chrome.tabs.create({url: chrome.extension.getURL('/bg/guide.html')});
}
+
+ this.isPreparedResolve();
+ this.isPreparedResolve = null;
+ this.isPreparedPromise = null;
}
onOptionsUpdated(options) {
@@ -129,7 +136,7 @@ class Backend {
}
applyOptions() {
- const options = this.getOptions(this.optionsContext);
+ const options = this.getOptionsSync(this.optionsContext);
if (!options.general.enable) {
this.setExtensionBadgeBackgroundColor('#555555');
this.setExtensionBadgeText('off');
@@ -143,7 +150,14 @@ class Backend {
this.anki = options.anki.enable ? new AnkiConnect(options.anki.server) : new AnkiNull();
}
- getOptions(optionsContext) {
+ async getOptions(optionsContext) {
+ if (this.isPreparedPromise !== null) {
+ await this.isPreparedPromise;
+ }
+ return this.getOptionsSync(optionsContext);
+ }
+
+ getOptionsSync(optionsContext) {
return this.options;
}