aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2017-03-05 11:12:48 -0800
committerAlex Yatskov <alex@foosoft.net>2017-03-05 11:12:48 -0800
commit200b8f6b7537ff14ef17e9387dbf6dd642e3d4b9 (patch)
tree50bf3b74d7fc464fde290ed956b59da195f0a9a3
parent974b10340902faaaa88f0477cbe0fcd90ca7ee7d (diff)
fix options loading and storing code
-rw-r--r--ext/bg/js/options.js4
-rw-r--r--ext/bg/js/util.js24
-rw-r--r--ext/bg/popup.html3
3 files changed, 22 insertions, 9 deletions
diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js
index 5f564b33..274f2e64 100644
--- a/ext/bg/js/options.js
+++ b/ext/bg/js/options.js
@@ -80,7 +80,7 @@ function updateVisibility(options) {
}
$(document).ready(() => {
- Handlebars.partials = Handlebars.templates;
+ handlebarsRegister();
optionsLoad().then(options => {
$('#audio-playback-buttons').prop('checked', options.general.audioPlayback);
@@ -148,7 +148,7 @@ function populateDictionaries(options) {
return instDb().getDictionaries().then(rows => {
rows.forEach(row => {
const dictOptions = options.dictionaries[row.title] || {enableTerms: false, enableKanji: false, priority: 0};
- const html = Handlebars.templates['dictionary.html']({
+ const html = handlebarsRender('dictionary.html', {
title: row.title,
version: row.version,
revision: row.revision,
diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js
index 6d5c030c..75847ee6 100644
--- a/ext/bg/js/util.js
+++ b/ext/bg/js/util.js
@@ -195,10 +195,24 @@ function optionsLoad() {
resolve(0);
}
}).then(bytes => {
- const storage = bytes === 0 ? chrome.storage.local : chrome.storage.sync;
- return new Promise((resolve, reject) => {
- storage.get(null, options => resolve(optionsVersion(options)));
- });
+ if (bytes === 0) {
+ return new Promise((resolve, reject) => {
+ chrome.storage.local.get(null, store => {
+ let options = {};
+ try {
+ options = JSON.parse(store.options);
+ } catch (e) {
+ // NOP
+ }
+
+ resolve(optionsVersion(options));
+ });
+ });
+ } else {
+ return new Promise((resolve, reject) => {
+ chrome.storage.sync.get(null, options => resolve(optionsVersion(options)));
+ });
+ }
}).then(options => {
if (chrome.storage.sync) {
chrome.storage.sync.clear();
@@ -210,7 +224,7 @@ function optionsLoad() {
function optionsSave(options) {
return new Promise((resolve, reject) => {
- chrome.storage.local.set(options, resolve);
+ chrome.storage.local.set({options: JSON.stringify(options)}, resolve);
}).then(() => {
instYomi().optionsSet(options);
fgOptionsSet(options);
diff --git a/ext/bg/popup.html b/ext/bg/popup.html
index 388cff9c..22fc0d40 100644
--- a/ext/bg/popup.html
+++ b/ext/bg/popup.html
@@ -29,9 +29,8 @@
</p>
<script src="/mixed/lib/jquery-3.1.1.min.js"></script>
<script src="/mixed/lib/bootstrap-toggle/bootstrap-toggle.min.js"></script>
- <script src="/bg/js/gecko.js"></script>
+ <script src="/mixed/lib/handlebars.min.js"></script>
<script src="/bg/js/util.js"></script>
- <script src="/bg/js/options.js"></script>
<script src="/bg/js/popup.js"></script>
</body>
</html>