diff --git a/ext/bg/import.html b/ext/bg/import.html index 47483c25..85841eee 100644 --- a/ext/bg/import.html +++ b/ext/bg/import.html @@ -15,7 +15,7 @@

Importing dictionary data, this can take a while...

-
+
0%
diff --git a/ext/bg/js/import.js b/ext/bg/js/import.js index 905b4580..ebc7c7be 100644 --- a/ext/bg/js/import.js +++ b/ext/bg/js/import.js @@ -17,7 +17,16 @@ */ -chrome.runtime.onMessage.addListener(({state, progress}, sender, callback) => { - $('.progress-bar').css('width', progress + '%'); +function api_setProgress({state, progress}) { + const str = `${progress}%`; + $('.progress-bar').css('width', str).text(str); +} + +chrome.runtime.onMessage.addListener(({action, params}, sender, callback) => { + const method = this['api_' + action]; + if (typeof(method) === 'function') { + method.call(this, params); + } + callback(); }); diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js index 290b5b05..83eb1f0a 100644 --- a/ext/bg/js/options.js +++ b/ext/bg/js/options.js @@ -47,9 +47,15 @@ function sanitizeOptions(options) { } function loadOptions() { - return new Promise((resolve, reject) => chrome.storage.sync.get(null, resolve)); + return new Promise((resolve, reject) => { + chrome.storage.sync.get(null, opts => { + resolve(sanitizeOptions(opts)); + }); + }); } function saveOptions(opts) { - return new Promise((resolve, reject) => chrome.storage.sync.set(sanitizeOptions(opts), resolve)); + return new Promise((resolve, reject) => { + chrome.storage.sync.set(sanitizeOptions(opts), resolve); + }); } diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index bec34691..24ddf92d 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -54,7 +54,7 @@ class Yomichan { } if (this.importTabId !== null) { - chrome.tabs.sendMessage(this.importTabId, {state, progress}, () => null); + this.tabInvoke(this.importTabId, 'setProgress', {state, progress}); } if (state === 'end') {