diff options
Diffstat (limited to 'ext/js/display')
| -rw-r--r-- | ext/js/display/display-anki.js | 1 | ||||
| -rw-r--r-- | ext/js/display/display-history.js | 10 | ||||
| -rw-r--r-- | ext/js/display/display.js | 31 | 
3 files changed, 33 insertions, 9 deletions
| diff --git a/ext/js/display/display-anki.js b/ext/js/display/display-anki.js index fb7bd85f..9a6b96c7 100644 --- a/ext/js/display/display-anki.js +++ b/ext/js/display/display-anki.js @@ -376,6 +376,7 @@ export class DisplayAnki {      _updateAdderButtons(dictionaryEntryDetails) {          const displayTags = this._displayTags;          for (let i = 0, ii = dictionaryEntryDetails.length; i < ii; ++i) { +            /** @type {?Set<number>} */              let allNoteIds = null;              for (const {mode, canAdd, noteIds, noteInfos, ankiError} of dictionaryEntryDetails[i].modeMap.values()) {                  const button = this._adderButtonFind(i, mode); diff --git a/ext/js/display/display-history.js b/ext/js/display/display-history.js index 67690219..bc4f1539 100644 --- a/ext/js/display/display-history.js +++ b/ext/js/display/display-history.js @@ -37,9 +37,15 @@ export class DisplayHistory extends EventDispatcher {          this._historyMap = new Map();          const historyState = history.state; -        const {id, state} = isObject(historyState) ? historyState : {id: null, state: null}; +        const {id, state} = ( +            typeof historyState === 'object' && historyState !== null ? +            historyState : +            {id: null, state: null} +        ); +        /** @type {?import('display-history').EntryState} */ +        const stateObject = typeof state === 'object' || state === null ? state : null;          /** @type {import('display-history').Entry} */ -        this._current = this._createHistoryEntry(id, location.href, state, null, null); +        this._current = this._createHistoryEntry(id, location.href, stateObject, null, null);      }      /** @type {?import('display-history').EntryState} */ diff --git a/ext/js/display/display.js b/ext/js/display/display.js index 750e0d69..f6efb5ac 100644 --- a/ext/js/display/display.js +++ b/ext/js/display/display.js @@ -1934,20 +1934,28 @@ export class Display extends EventDispatcher {          this._hotkeyHandler.setHotkeys(this._pageType, options.inputs.hotkeys);      } -    /** */ -    async _closeTab() { -        const tab = await new Promise((resolve, reject) => { +    /** +     * @returns {Promise<?chrome.tabs.Tab>} +     */ +    _getCurrentTab() { +        return new Promise((resolve, reject) => {              chrome.tabs.getCurrent((result) => {                  const e = chrome.runtime.lastError;                  if (e) {                      reject(new Error(e.message));                  } else { -                    resolve(result); +                    resolve(typeof result !== 'undefined' ? result : null);                  }              });          }); -        const tabId = tab.id; -        await /** @type {Promise<void>} */ (new Promise((resolve, reject) => { +    } + +    /** +     * @param {number} tabId +     * @returns {Promise<void>} +     */ +    _removeTab(tabId) { +        return new Promise((resolve, reject) => {              chrome.tabs.remove(tabId, () => {                  const e = chrome.runtime.lastError;                  if (e) { @@ -1956,7 +1964,16 @@ export class Display extends EventDispatcher {                      resolve();                  }              }); -        })); +        }); +    } + +    /** */ +    async _closeTab() { +        const tab = await this._getCurrentTab(); +        if (tab === null) { return; } +        const tabId = tab.id; +        if (typeof tabId === 'undefined') { return; } +        await this._removeTab(tabId);      }      /** */ |