From 707b039927f27443f9e32cffe342e7f778dff955 Mon Sep 17 00:00:00 2001 From: siikamiika Date: Wed, 13 Nov 2019 13:09:23 +0200 Subject: [PATCH] store local copy of selected parser Options don't update early enough even after awaiting --- ext/bg/js/search-query-parser.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/ext/bg/js/search-query-parser.js b/ext/bg/js/search-query-parser.js index 15c394fe..71ebb389 100644 --- a/ext/bg/js/search-query-parser.js +++ b/ext/bg/js/search-query-parser.js @@ -24,6 +24,7 @@ class QueryParser { this.clickScanPrevent = false; this.parseResults = []; + this.selectedParser = null; this.queryParser = document.querySelector('#query-parser'); this.queryParserSelect = document.querySelector('#query-parser-select'); @@ -85,14 +86,15 @@ class QueryParser { })(); } - onParserChange(e) { + async onParserChange(e) { const selectedParser = e.target.value; + this.selectedParser = selectedParser; apiOptionsSet({parsing: {selectedParser}}, this.search.getOptionsContext()); this.renderParseResult(this.getParseResult()); } getParseResult() { - return this.parseResults.find(r => r.id === this.search.options.parsing.selectedParser); + return this.parseResults.find(r => r.id === this.selectedParser); } async setText(text) { @@ -102,8 +104,12 @@ class QueryParser { this.parseResults = await this.parseText(text); if (this.parseResults.length > 0) { - if (this.search.options.parsing.selectedParser === null || !this.getParseResult()) { + if (this.selectedParser === null) { + this.selectedParser = this.search.options.parsing.selectedParser; + } + if (this.selectedParser === null || !this.getParseResult()) { const selectedParser = this.parseResults[0].id; + this.selectedParser = selectedParser; apiOptionsSet({parsing: {selectedParser}}, this.search.getOptionsContext()); } } @@ -162,7 +168,7 @@ class QueryParser { const option = document.createElement('option'); option.value = parseResult.id; option.innerText = parseResult.name; - option.defaultSelected = this.search.options.parsing.selectedParser === parseResult.id; + option.defaultSelected = this.selectedParser === parseResult.id; select.appendChild(option); } select.addEventListener('change', this.onParserChange.bind(this));