diff options
author | Eloy Robillard <eloy.robillard@gmail.com> | 2024-04-16 17:05:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-16 15:05:06 +0000 |
commit | 643caf0da12d4ffb39989a39931cf0769f1246a0 (patch) | |
tree | fbfd0d9f95046050da30281591a45f58daaeff79 /ext/js/background/backend.js | |
parent | 82bb9deafaf57b11edb7a72bb1a63563f4ae1963 (diff) |
Revert to using canAddNotes (#827)
Fix #818
Diffstat (limited to 'ext/js/background/backend.js')
-rw-r--r-- | ext/js/background/backend.js | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index 881cd241..b0c0a36d 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -537,24 +537,16 @@ export class Backend { /** * @param {import('anki').Note[]} notes - * @returns {Promise<({ canAdd: true; } | { canAdd: false; error: string; })[]>} + * @returns {Promise<import('backend').CanAddResults>} */ - async detectDuplicateNotes(notes) { + async partitionAddibleNotes(notes) { // `allowDuplicate` is on for all notes by default, so we temporarily set it to false // to check which notes are duplicates. const notesNoDuplicatesAllowed = notes.map((note) => ({...note, options: {...note.options, allowDuplicate: false}})); - return await this._anki.canAddNotesWithErrorDetail(notesNoDuplicatesAllowed); - } - - /** - * Partitions notes between those that can / cannot be added. - * It further sets the `isDuplicate` strings for notes that have a duplicate. - * @param {import('anki').Note[]} notes - * @returns {Promise<import('backend').CanAddResults>} - */ - async partitionAddibleNotes(notes) { - const canAddResults = await this.detectDuplicateNotes(notes); + // If only older AnkiConnect available, use `canAddNotes`. + const withDuplicatesAllowed = await this._anki.canAddNotes(notes); + const noDuplicatesAllowed = await this._anki.canAddNotes(notesNoDuplicatesAllowed); /** @type {{ note: import('anki').Note, isDuplicate: boolean }[]} */ const canAddArray = []; @@ -562,16 +554,11 @@ export class Backend { /** @type {import('anki').Note[]} */ const cannotAddArray = []; - for (let i = 0; i < canAddResults.length; i++) { - const result = canAddResults[i]; - - // If the note is a duplicate, the error is "cannot create note because it is a duplicate". - if (result.canAdd) { + for (let i = 0; i < withDuplicatesAllowed.length; i++) { + if (withDuplicatesAllowed[i] === noDuplicatesAllowed[i]) { canAddArray.push({note: notes[i], isDuplicate: false}); - } else if (result.error.endsWith('duplicate')) { - canAddArray.push({note: notes[i], isDuplicate: true}); } else { - cannotAddArray.push(notes[i]); + canAddArray.push({note: notes[i], isDuplicate: true}); } } |