From 233ed4d0fb32291d9ba3f9b0a358496bf1093fb4 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Mon, 9 Dec 2019 21:28:27 -0500 Subject: [PATCH] Move apiDefinitionsAddable implementation into Backend --- ext/bg/js/api.js | 47 ++------------------------------------------ ext/bg/js/backend.js | 46 +++++++++++++++++++++++++++++++++++++++++-- 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}) {