diff options
Diffstat (limited to 'ext/bg/js/search.js')
| -rw-r--r-- | ext/bg/js/search.js | 27 | 
1 files changed, 17 insertions, 10 deletions
diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js index e2bdff73..9250fdde 100644 --- a/ext/bg/js/search.js +++ b/ext/bg/js/search.js @@ -29,12 +29,18 @@ class DisplaySearch extends Display {      constructor() {          super(document.querySelector('#spinner'), document.querySelector('#content')); +        this._isPrepared = false; +          this.optionsContext = {              depth: 0,              url: window.location.href          }; -        this.queryParser = new QueryParser(this); +        this.queryParser = new QueryParser({ +            getOptionsContext: this.getOptionsContext.bind(this), +            setContent: this.setContent.bind(this), +            setSpinnerVisible: this.setSpinnerVisible.bind(this) +        });          this.search = document.querySelector('#search');          this.query = document.querySelector('#query'); @@ -112,6 +118,8 @@ class DisplaySearch extends Display {              this.clipboardMonitor.on('change', this.onExternalSearchUpdate.bind(this));              this.updateSearchButton(); + +            this._isPrepared = true;          } catch (e) {              this.onError(e);          } @@ -247,15 +255,12 @@ class DisplaySearch extends Display {      }      onWanakanaEnableChange(e) { -        const {queryParams: {query=''}} = parseUrl(window.location.href);          const enableWanakana = e.target.checked;          if (enableWanakana) {              window.wanakana.bind(this.query);          } else {              window.wanakana.unbind(this.query);          } -        this.setQuery(query); -        this.onSearchQueryUpdated(this.query.value, false);          apiOptionsSet({general: {enableWanakana}}, this.getOptionsContext());      } @@ -278,19 +283,21 @@ class DisplaySearch extends Display {          }      } -    async updateOptions(options) { -        await super.updateOptions(options); +    async updateOptions() { +        await super.updateOptions();          this.queryParser.setOptions(this.options); +        if (!this._isPrepared) { return; } +        const query = this.query.value; +        if (query) { +            this.setQuery(query); +            this.onSearchQueryUpdated(query, false); +        }      }      isWanakanaEnabled() {          return this.wanakanaEnable !== null && this.wanakanaEnable.checked;      } -    getOptionsContext() { -        return this.optionsContext; -    } -      setQuery(query) {          const interpretedQuery = this.isWanakanaEnabled() ? window.wanakana.toKana(query) : query;          this.query.value = interpretedQuery;  |