aboutsummaryrefslogtreecommitdiff
path: root/ext/bg/js/api.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bg/js/api.js')
-rw-r--r--ext/bg/js/api.js29
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) {