Use schema to validate options

This commit is contained in:
toasted-nutbread 2019-11-28 15:18:27 -05:00
parent b770944b12
commit 50e0fbbb66
2 changed files with 11 additions and 0 deletions

View File

@ -31,6 +31,7 @@
<script src="/bg/js/deinflector.js"></script> <script src="/bg/js/deinflector.js"></script>
<script src="/bg/js/dictionary.js"></script> <script src="/bg/js/dictionary.js"></script>
<script src="/bg/js/handlebars.js"></script> <script src="/bg/js/handlebars.js"></script>
<script src="/bg/js/json-schema.js"></script>
<script src="/bg/js/options.js"></script> <script src="/bg/js/options.js"></script>
<script src="/bg/js/profile-conditions.js"></script> <script src="/bg/js/profile-conditions.js"></script>
<script src="/bg/js/request.js"></script> <script src="/bg/js/request.js"></script>

View File

@ -23,6 +23,7 @@ class Backend {
this.anki = new AnkiNull(); this.anki = new AnkiNull();
this.mecab = new Mecab(); this.mecab = new Mecab();
this.options = null; this.options = null;
this.optionsSchema = null;
this.optionsContext = { this.optionsContext = {
depth: 0, depth: 0,
url: window.location.href url: window.location.href
@ -38,7 +39,16 @@ class Backend {
async prepare() { async prepare() {
await this.translator.prepare(); await this.translator.prepare();
this.optionsSchema = await requestJson(chrome.runtime.getURL('/bg/data/options-schema.json'), 'GET');
this.options = await optionsLoad(); this.options = await optionsLoad();
try {
this.options = JsonSchema.getValidValueOrDefault(this.optionsSchema, this.options);
} catch (e) {
// This shouldn't happen, but catch errors just in case of bugs
logError(e);
}
this.onOptionsUpdated('background'); this.onOptionsUpdated('background');
if (chrome.commands !== null && typeof chrome.commands === 'object') { if (chrome.commands !== null && typeof chrome.commands === 'object') {