summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/bg/js/api.js47
-rw-r--r--ext/bg/js/backend.js46
2 files changed, 46 insertions, 47 deletions
diff --git a/ext/bg/js/api.js b/ext/bg/js/api.js
index 2ce90b5c..497d81bf 100644
--- a/ext/bg/js/api.js
+++ b/ext/bg/js/api.js
@@ -53,51 +53,8 @@ function apiDefinitionAdd(definition, mode, context, optionsContext) {
return utilBackend()._onApiDefinitionAdd({definition, mode, context, optionsContext});
}
-async function apiDefinitionsAddable(definitions, modes, optionsContext) {
- const options = await apiOptionsGet(optionsContext);
- const states = [];
-
- try {
- const notes = [];
- for (const definition of definitions) {
- for (const mode of modes) {
- const note = await dictNoteFormat(definition, mode, options);
- notes.push(note);
- }
- }
-
- 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) {
- 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
- }
-
- return states;
+function apiDefinitionsAddable(definitions, modes, optionsContext) {
+ return utilBackend()._onApiDefinitionsAddable({definitions, modes, optionsContext});
}
async function apiNoteView(noteId) {
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js
index 726a1714..77dc0d33 100644
--- a/ext/bg/js/backend.js
+++ b/ext/bg/js/backend.js
@@ -339,8 +339,50 @@ class Backend {
return this.anki.addNote(note);
}
- _onApiDefinitionsAddable({definitions, modes, optionsContext}) {
- return apiDefinitionsAddable(definitions, modes, optionsContext);
+ async _onApiDefinitionsAddable({definitions, modes, optionsContext}) {
+ const options = await this.getOptions(optionsContext);
+ const states = [];
+
+ try {
+ const notes = [];
+ for (const definition of definitions) {
+ for (const mode of modes) {
+ const note = await dictNoteFormat(definition, mode, options);
+ notes.push(note);
+ }
+ }
+
+ const cannotAdd = [];
+ const results = await this.anki.canAddNotes(notes);
+ for (let resultBase = 0; resultBase < results.length; resultBase += modes.length) {
+ const state = {};
+ for (let modeOffset = 0; modeOffset < modes.length; ++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 this.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
+ }
+
+ return states;
}
_onApiNoteView({noteId}) {