diff options
Diffstat (limited to 'ext/bg')
| -rw-r--r-- | ext/bg/js/search.js | 4 | ||||
| -rw-r--r-- | ext/bg/js/settings/popup-preview-frame-main.js | 5 | ||||
| -rw-r--r-- | ext/bg/js/settings/popup-preview-frame.js | 22 | ||||
| -rw-r--r-- | ext/bg/js/settings/popup-preview.js | 18 | ||||
| -rw-r--r-- | ext/bg/js/settings/profiles.js | 10 | 
5 files changed, 50 insertions, 9 deletions
| diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js index 684ea6d3..a5484fc3 100644 --- a/ext/bg/js/search.js +++ b/ext/bg/js/search.js @@ -76,6 +76,8 @@ class DisplaySearch extends Display {      async prepare() {          try {              await super.prepare(); +            await this.updateOptions(); +            yomichan.on('optionsUpdated', () => this.updateOptions());              await this.queryParser.prepare();              const {queryParams: {query='', mode=''}} = parseUrl(window.location.href); @@ -231,7 +233,7 @@ class DisplaySearch extends Display {              this.setIntroVisible(!valid, animate);              this.updateSearchButton();              if (valid) { -                const {definitions} = await apiTermsFind(query, details, this.optionsContext); +                const {definitions} = await apiTermsFind(query, details, this.getOptionsContext());                  this.setContent('terms', {definitions, context: {                      focus: false,                      disableHistory: true, diff --git a/ext/bg/js/settings/popup-preview-frame-main.js b/ext/bg/js/settings/popup-preview-frame-main.js index 86c2814c..2ab6af6b 100644 --- a/ext/bg/js/settings/popup-preview-frame-main.js +++ b/ext/bg/js/settings/popup-preview-frame-main.js @@ -19,7 +19,6 @@   * SettingsPopupPreview   */ -(async () => { -    const instance = new SettingsPopupPreview(); -    await instance.prepare(); +(() => { +    new SettingsPopupPreview();  })(); diff --git a/ext/bg/js/settings/popup-preview-frame.js b/ext/bg/js/settings/popup-preview-frame.js index 420a7c5a..05a2a41b 100644 --- a/ext/bg/js/settings/popup-preview-frame.js +++ b/ext/bg/js/settings/popup-preview-frame.js @@ -32,19 +32,24 @@ class SettingsPopupPreview {          this.popupShown = false;          this.themeChangeTimeout = null;          this.textSource = null; +        this.optionsContext = null;          this._targetOrigin = chrome.runtime.getURL('/').replace(/\/$/, '');          this._windowMessageHandlers = new Map([ +            ['prepare', ({optionsContext}) => this.prepare(optionsContext)],              ['setText', ({text}) => this.setText(text)],              ['setCustomCss', ({css}) => this.setCustomCss(css)], -            ['setCustomOuterCss', ({css}) => this.setCustomOuterCss(css)] +            ['setCustomOuterCss', ({css}) => this.setCustomOuterCss(css)], +            ['updateOptionsContext', ({optionsContext}) => this.updateOptionsContext(optionsContext)]          ]); -    } -    async prepare() { -        // Setup events          window.addEventListener('message', this.onMessage.bind(this), false); +    } + +    async prepare(optionsContext) { +        this.optionsContext = optionsContext; +        // Setup events          document.querySelector('#theme-dark-checkbox').addEventListener('change', this.onThemeDarkCheckboxChanged.bind(this), false);          // Overwrite API functions @@ -62,8 +67,9 @@ class SettingsPopupPreview {          this.frontend = new Frontend(this.popup); +        this.frontend.getOptionsContext = async () => this.optionsContext;          this.frontend.setEnabled = () => {}; -        this.frontend.searchClear = () => {}; +        this.frontend.onSearchClear = () => {};          await this.frontend.prepare(); @@ -145,6 +151,12 @@ class SettingsPopupPreview {          this.frontend.popup.setCustomOuterCss(css, false);      } +    async updateOptionsContext(optionsContext) { +        this.optionsContext = optionsContext; +        await this.frontend.updateOptions(); +        await this.updateSearch(); +    } +      async updateSearch() {          const exampleText = document.querySelector('#example-text');          if (exampleText === null) { return; } diff --git a/ext/bg/js/settings/popup-preview.js b/ext/bg/js/settings/popup-preview.js index 45bf531e..fdc3dd94 100644 --- a/ext/bg/js/settings/popup-preview.js +++ b/ext/bg/js/settings/popup-preview.js @@ -16,6 +16,7 @@   */  /* global + * getOptionsContext   * wanakana   */ @@ -60,6 +61,23 @@ function showAppearancePreview() {          frame.contentWindow.postMessage({action, params}, targetOrigin);      }); +    const updateOptionsContext = () => { +        const action = 'updateOptionsContext'; +        const params = { +            optionsContext: getOptionsContext() +        }; +        frame.contentWindow.postMessage({action, params}, targetOrigin); +    }; +    yomichan.on('modifyingProfileChange', updateOptionsContext); + +    frame.addEventListener('load', () => { +        const action = 'prepare'; +        const params = { +            optionsContext: getOptionsContext() +        }; +        frame.contentWindow.postMessage({action, params}, targetOrigin); +    }); +      container.append(frame);      buttonContainer.remove();      settings.css('display', ''); diff --git a/ext/bg/js/settings/profiles.js b/ext/bg/js/settings/profiles.js index 867b17aa..3f4b1da7 100644 --- a/ext/bg/js/settings/profiles.js +++ b/ext/bg/js/settings/profiles.js @@ -190,6 +190,8 @@ async function onTargetProfileChanged() {      currentProfileIndex = index;      await profileOptionsUpdateTarget(optionsFull); + +    yomichan.trigger('modifyingProfileChange');  }  async function onProfileAdd() { @@ -197,9 +199,13 @@ async function onProfileAdd() {      const profile = utilBackgroundIsolate(optionsFull.profiles[currentProfileIndex]);      profile.name = profileOptionsCreateCopyName(profile.name, optionsFull.profiles, 100);      optionsFull.profiles.push(profile); +      currentProfileIndex = optionsFull.profiles.length - 1; +      await profileOptionsUpdateTarget(optionsFull);      await settingsSaveOptions(); + +    yomichan.trigger('modifyingProfileChange');  }  async function onProfileRemove(e) { @@ -238,6 +244,8 @@ async function onProfileRemoveConfirm() {      await profileOptionsUpdateTarget(optionsFull);      await settingsSaveOptions(); + +    yomichan.trigger('modifyingProfileChange');  }  function onProfileNameChanged() { @@ -263,6 +271,8 @@ async function onProfileMove(offset) {      await profileOptionsUpdateTarget(optionsFull);      await settingsSaveOptions(); + +    yomichan.trigger('modifyingProfileChange');  }  async function onProfileCopy() { |