diff options
Diffstat (limited to 'ext/bg/js/api.js')
| -rw-r--r-- | ext/bg/js/api.js | 29 | 
1 files changed, 24 insertions, 5 deletions
| diff --git a/ext/bg/js/api.js b/ext/bg/js/api.js index 222e7ffe..f768e6f9 100644 --- a/ext/bg/js/api.js +++ b/ext/bg/js/api.js @@ -68,7 +68,8 @@ async function apiDefinitionAdd(definition, mode, context, optionsContext) {          await audioInject(              definition,              options.anki.terms.fields, -            options.general.audioSource +            options.audio.sources, +            optionsContext          );      } @@ -97,15 +98,33 @@ async function apiDefinitionsAddable(definitions, modes, optionsContext) {              }          } -        const results = await utilBackend().anki.canAddNotes(notes); +        const cannotAdd = []; +        const anki = utilBackend().anki; +        const results = await anki.canAddNotes(notes);          for (let resultBase = 0; resultBase < results.length; resultBase += modes.length) {              const state = {};              for (let modeOffset = 0; modeOffset < modes.length; ++modeOffset) { -                state[modes[modeOffset]] = results[resultBase + modeOffset]; +                const index = resultBase + modeOffset; +                const result = results[index]; +                const info = {canAdd: result}; +                state[modes[modeOffset]] = info; +                if (!result) { +                    cannotAdd.push([notes[index], info]); +                }              }              states.push(state);          } + +        if (cannotAdd.length > 0) { +            const noteIdsArray = await anki.findNoteIds(cannotAdd.map(e => e[0])); +            for (let i = 0, ii = Math.min(cannotAdd.length, noteIdsArray.length); i < ii; ++i) { +                const noteIds = noteIdsArray[i]; +                if (noteIds.length > 0) { +                    cannotAdd[i][1].noteId = noteIds[0]; +                } +            } +        }      } catch (e) {          // NOP      } @@ -156,8 +175,8 @@ apiCommandExec.handlers = {      }  }; -async function apiAudioGetUrl(definition, source) { -    return audioBuildUrl(definition, source); +async function apiAudioGetUrl(definition, source, optionsContext) { +    return audioBuildUrl(definition, source, optionsContext);  }  async function apiInjectScreenshot(definition, fields, screenshot) { |