diff options
Diffstat (limited to 'ext/bg/js')
| -rw-r--r-- | ext/bg/js/anki.js | 16 | ||||
| -rw-r--r-- | ext/bg/js/backend.js | 11 | ||||
| -rw-r--r-- | ext/bg/js/options.js | 3 | 
3 files changed, 30 insertions, 0 deletions
| diff --git a/ext/bg/js/anki.js b/ext/bg/js/anki.js index 05c07ce2..68d9fc43 100644 --- a/ext/bg/js/anki.js +++ b/ext/bg/js/anki.js @@ -122,6 +122,22 @@ class AnkiConnect {          return await this._invoke('multi', {actions});      } +    async suspendCards(cardIds) { +        if (!this._enabled) { return false; } +        await this._checkVersion(); +        return await this._invoke('suspend', {cards: cardIds}); +    } + +    async findCards(query) { +        if (!this._enabled) { return []; } +        await this._checkVersion(); +        return await this._invoke('findCards', {query}); +    } + +    async findCardsForNote(noteId) { +        return await this.findCards(`nid:${noteId}`); +    } +      getRootDeckName(deckName) {          const index = deckName.indexOf('::');          return index >= 0 ? deckName.substring(0, index) : deckName; diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index 6410b0fc..11a17381 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -97,6 +97,7 @@ class Backend {              ['getAnkiNoteInfo',              {async: true,  contentScript: true,  handler: this._onApiGetAnkiNoteInfo.bind(this)}],              ['injectAnkiNoteMedia',          {async: true,  contentScript: true,  handler: this._onApiInjectAnkiNoteMedia.bind(this)}],              ['noteView',                     {async: true,  contentScript: true,  handler: this._onApiNoteView.bind(this)}], +            ['suspendAnkiCardsForNote',      {async: true,  contentScript: true,  handler: this._onApiSuspendAnkiCardsForNote.bind(this)}],              ['commandExec',                  {async: false, contentScript: true,  handler: this._onApiCommandExec.bind(this)}],              ['getDefinitionAudioInfo',       {async: true,  contentScript: true,  handler: this._onApiGetDefinitionAudioInfo.bind(this)}],              ['downloadDefinitionAudio',      {async: true,  contentScript: true,  handler: this._onApiDownloadDefinitionAudio.bind(this)}], @@ -495,6 +496,16 @@ class Backend {          return await this._anki.guiBrowseNote(noteId);      } +    async _onApiSuspendAnkiCardsForNote({noteId}) { +        const cardIds = await this._anki.findCardsForNote(noteId); +        const count = cardIds.length; +        if (count > 0) { +            const okay = await this._anki.suspendCards(cardIds); +            if (!okay) { return 0; } +        } +        return count; +    } +      _onApiCommandExec({command, params}) {          return this._runCommand(command, params);      } diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js index 0d3e42a1..cbc390da 100644 --- a/ext/bg/js/options.js +++ b/ext/bg/js/options.js @@ -687,6 +687,8 @@ class OptionsUtil {          //  Added sentenceParsing.enableTerminationCharacters.          //  Added sentenceParsing.terminationCharacters.          //  Changed general.popupActionBarLocation. +        //  Added inputs.hotkeys. +        //  Added anki.suspendNewCards.          for (const profile of options.profiles) {              profile.options.translation.textReplacements = {                  searchOriginal: true, @@ -731,6 +733,7 @@ class OptionsUtil {                      {action: 'copyHostSelection', key: 'KeyC',      modifiers: ['ctrl'], scopes: ['popup', 'search'], enabled: true}                  ]              }; +            profile.options.anki.suspendNewCards = false;          }          return options;      } |