diff options
Diffstat (limited to 'ext/mixed/js')
| -rw-r--r-- | ext/mixed/js/display.js | 64 | 
1 files changed, 38 insertions, 26 deletions
| diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index a3b70764..c36a0c1c 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -1545,33 +1545,15 @@ class Display extends EventDispatcher {      async _createNote(definition, mode, context, options, templates, injectMedia) {          const {              general: {resultOutputMode, glossaryLayoutMode, compactTags}, -            anki: {tags, checkForDuplicates, duplicateScope, kanji, terms, screenshot: {format, quality}}, -            audio: {sources, customSourceUrl} +            anki: ankiOptions          } = options; -        const modeOptions = (mode === 'kanji') ? kanji : terms; +        const {tags, checkForDuplicates, duplicateScope} = ankiOptions; +        const modeOptions = (mode === 'kanji') ? ankiOptions.kanji : ankiOptions.terms; +        const {deck: deckName, model: modelName} = modeOptions; +        const fields = Object.entries(modeOptions.fields);          if (injectMedia) { -            const timestamp = Date.now(); -            const ownerFrameId = this._ownerFrameId; -            const {fields} = modeOptions; -            const definitionDetails = this._getDefinitionDetailsForNote(definition); -            const audioDetails = (mode !== 'kanji' && this._ankiNoteBuilder.containsMarker(fields, 'audio') ? {sources, customSourceUrl} : null); -            const screenshotDetails = (this._ankiNoteBuilder.containsMarker(fields, 'screenshot') ? {ownerFrameId, format, quality} : null); -            const clipboardDetails = { -                image: this._ankiNoteBuilder.containsMarker(fields, 'clipboard-image'), -                text: this._ankiNoteBuilder.containsMarker(fields, 'clipboard-text') -            }; -            const {screenshotFileName, clipboardImageFileName, clipboardText, audioFileName} = await api.injectAnkiNoteMedia( -                timestamp, -                definitionDetails, -                audioDetails, -                screenshotDetails, -                clipboardDetails -            ); -            if (screenshotFileName !== null) { definition.screenshotFileName = screenshotFileName; } -            if (clipboardImageFileName !== null) { definition.clipboardImageFileName = clipboardImageFileName; } -            if (audioFileName !== null) { definition.audioFileName = audioFileName; } -            if (clipboardText !== null) { definition.clipboardText = clipboardText; } +            await this._injectAnkiNoteMedia(definition, mode, options, fields);          }          return await this._ankiNoteBuilder.createNote({ @@ -1579,16 +1561,46 @@ class Display extends EventDispatcher {              mode,              context,              templates, +            deckName, +            modelName, +            fields,              tags,              checkForDuplicates,              duplicateScope,              resultOutputMode,              glossaryLayoutMode, -            compactTags, -            modeOptions +            compactTags          });      } +    async _injectAnkiNoteMedia(definition, mode, options, fields) { +        const { +            anki: {screenshot: {format, quality}}, +            audio: {sources, customSourceUrl} +        } = options; + +        const timestamp = Date.now(); +        const ownerFrameId = this._ownerFrameId; +        const definitionDetails = this._getDefinitionDetailsForNote(definition); +        const audioDetails = (mode !== 'kanji' && this._ankiNoteBuilder.containsMarker(fields, 'audio') ? {sources, customSourceUrl} : null); +        const screenshotDetails = (this._ankiNoteBuilder.containsMarker(fields, 'screenshot') ? {ownerFrameId, format, quality} : null); +        const clipboardDetails = { +            image: this._ankiNoteBuilder.containsMarker(fields, 'clipboard-image'), +            text: this._ankiNoteBuilder.containsMarker(fields, 'clipboard-text') +        }; +        const {screenshotFileName, clipboardImageFileName, clipboardText, audioFileName} = await api.injectAnkiNoteMedia( +            timestamp, +            definitionDetails, +            audioDetails, +            screenshotDetails, +            clipboardDetails +        ); +        if (screenshotFileName !== null) { definition.screenshotFileName = screenshotFileName; } +        if (clipboardImageFileName !== null) { definition.clipboardImageFileName = clipboardImageFileName; } +        if (audioFileName !== null) { definition.audioFileName = audioFileName; } +        if (clipboardText !== null) { definition.clipboardText = clipboardText; } +    } +      _getDefinitionDetailsForNote(definition) {          const {type} = definition;          if (type === 'kanji') { |