diff options
| -rw-r--r-- | ext/js/background/backend.js | 7 | ||||
| -rw-r--r-- | ext/js/comm/anki.js | 12 | ||||
| -rw-r--r-- | ext/js/comm/api.js | 4 | 
3 files changed, 22 insertions, 1 deletions
| diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index 66f80351..b25b6033 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -129,7 +129,8 @@ class Backend {              ['triggerDatabaseUpdated',       {async: false, contentScript: true,  handler: this._onApiTriggerDatabaseUpdated.bind(this)}],              ['testMecab',                    {async: true,  contentScript: true,  handler: this._onApiTestMecab.bind(this)}],              ['textHasJapaneseCharacters',    {async: false, contentScript: true,  handler: this._onApiTextHasJapaneseCharacters.bind(this)}], -            ['getTermFrequencies',           {async: true,  contentScript: true,  handler: this._onApiGetTermFrequencies.bind(this)}] +            ['getTermFrequencies',           {async: true,  contentScript: true,  handler: this._onApiGetTermFrequencies.bind(this)}], +            ['findAnkiNotes',                {async: true,  contentScript: true,  handler: this._onApiFindAnkiNotes.bind(this)}]          ]);          this._messageHandlersWithProgress = new Map([          ]); @@ -752,6 +753,10 @@ class Backend {          return await this._translator.getTermFrequencies(termReadingList, dictionaries);      } +    async _onApiFindAnkiNotes({query}) { +        return await this._anki.findNotes(query); +    } +      // Command handlers      async _onCommandOpenSearchPage(params) { diff --git a/ext/js/comm/anki.js b/ext/js/comm/anki.js index 6921caf5..83cb8221 100644 --- a/ext/js/comm/anki.js +++ b/ext/js/comm/anki.js @@ -120,6 +120,18 @@ class AnkiConnect {          return await this._invoke('storeMediaFile', {filename: fileName, data: content});      } +    /** +     * Finds notes matching a query. +     * @param {string} query Searches for notes matching a query. +     * @returns {number[]} An array of note IDs. +     * @see https://docs.ankiweb.net/searching.html +     */ +    async findNotes(query) { +        if (!this._enabled) { return []; } +        await this._checkVersion(); +        return await this._invoke('findNotes', {query}); +    } +      async findNoteIds(notes) {          if (!this._enabled) { return []; }          await this._checkVersion(); diff --git a/ext/js/comm/api.js b/ext/js/comm/api.js index f978e491..75a01dd5 100644 --- a/ext/js/comm/api.js +++ b/ext/js/comm/api.js @@ -172,6 +172,10 @@ class API {          return this._invoke('getTermFrequencies', {termReadingList, dictionaries});      } +    findAnkiNotes(query) { +        return this._invoke('findAnkiNotes', {query}); +    } +      // Utilities      _createActionPort(timeout=5000) { |