aboutsummaryrefslogtreecommitdiff
path: root/ext/mixed/js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-11-08 16:25:07 -0500
committerGitHub <noreply@github.com>2020-11-08 16:25:07 -0500
commit16321a1f8c9902be100b01067e1593694fa51341 (patch)
tree2cb25c4fe0447e58c91338cdce69e7b370518d25 /ext/mixed/js
parent4e3040941038acc4f739e4077aee14cb64d3aa81 (diff)
Add duplicate check option (#1012)
* Add anki.checkForDuplicates option * Use checkForDuplicates for button display * Add property to card creation
Diffstat (limited to 'ext/mixed/js')
-rw-r--r--ext/mixed/js/display.js28
1 files changed, 25 insertions, 3 deletions
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js
index 33d8f986..07e4f37a 100644
--- a/ext/mixed/js/display.js
+++ b/ext/mixed/js/display.js
@@ -901,8 +901,15 @@ class Display extends EventDispatcher {
const modes = isTerms ? ['term-kanji', 'term-kana'] : ['kanji'];
let states;
try {
- const noteContext = await this._getNoteContext();
- states = await this._areDefinitionsAddable(definitions, modes, noteContext);
+ if (this._options.anki.checkForDuplicates) {
+ const noteContext = await this._getNoteContext();
+ states = await this._areDefinitionsAddable(definitions, modes, noteContext);
+ } else {
+ if (!await api.isAnkiConnected()) {
+ throw new Error('Anki not connected');
+ }
+ states = this._areDefinitionsAddableForcedValue(definitions, modes, true);
+ }
} catch (e) {
return;
}
@@ -1377,10 +1384,24 @@ class Display extends EventDispatcher {
return results;
}
+ _areDefinitionsAddableForcedValue(definitions, modes, canAdd) {
+ const results = [];
+ const definitionCount = definitions.length;
+ const modeCount = modes.length;
+ for (let i = 0; i < definitionCount; ++i) {
+ const modeArray = [];
+ for (let j = 0; j < modeCount; ++j) {
+ modeArray.push({canAdd, noteIds: null});
+ }
+ results.push(modeArray);
+ }
+ return results;
+ }
+
async _createNote(definition, mode, context, options, templates, injectMedia) {
const {
general: {resultOutputMode, compactGlossaries},
- anki: {tags, duplicateScope, kanji, terms, screenshot: {format, quality}},
+ anki: {tags, checkForDuplicates, duplicateScope, kanji, terms, screenshot: {format, quality}},
audio: {sources, customSourceUrl}
} = options;
const modeOptions = (mode === 'kanji') ? kanji : terms;
@@ -1416,6 +1437,7 @@ class Display extends EventDispatcher {
context,
templates,
tags,
+ checkForDuplicates,
duplicateScope,
resultOutputMode,
compactGlossaries,