diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-01-12 22:47:07 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-12 22:47:07 -0500 |
commit | 5ae3acf6ff4d68379d9ea73c6ec90b8dfa69c6ad (patch) | |
tree | bb5ef5fd289b8f2fff8f4d276e432082bbf2bfe4 /ext/mixed/js | |
parent | b7c9fa105764eb2cd5befea86c98fe49f5763a1d (diff) |
Anki note data abstraction (#1228)
* Create AnkiNoteData
* Create AnkiNoteDataDefinitionProxyHandler
* Update media injection
* Create AnkiNoteDataDefinitionSecondaryProperties
* Update note context format
* Expose url and cloze on definition
* Simplify for understandability
* Remove unused _createNoteData
* Update public object
* Remove trims on sentence, since it should already be trimmed
* Fix unused global
Diffstat (limited to 'ext/mixed/js')
-rw-r--r-- | ext/mixed/js/display.js | 48 |
1 files changed, 13 insertions, 35 deletions
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index a76e2b71..6a1ebba6 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -915,18 +915,14 @@ class Display extends EventDispatcher { focusEntry=null, scrollX=null, scrollY=null, - optionsContext=null, - sentence=null, - url + optionsContext=null } = state; if (typeof focusEntry !== 'number') { focusEntry = 0; } - if (typeof url !== 'string') { url = window.location.href; } if (!(typeof optionsContext === 'object' && optionsContext !== null)) { optionsContext = this.getOptionsContext(); state.optionsContext = optionsContext; changeHistory = true; } - sentence = this._getValidSentenceData(sentence); this._setFullQuery(queryFull); this._setTitleText(query); @@ -957,11 +953,6 @@ class Display extends EventDispatcher { this._definitions = definitions; - for (const definition of definitions) { - definition.cloze = this._clozeBuild(sentence, isTerms ? definition.rawSource : definition.character); - definition.url = url; - } - this._updateNavigation(this._history.hasPrevious(), this._history.hasNext()); this._setNoContentVisible(definitions.length === 0); @@ -1318,15 +1309,6 @@ class Display extends EventDispatcher { return {text, offset}; } - _clozeBuild({text, offset}, source) { - return { - sentence: text.trim(), - prefix: text.substring(0, offset).trim(), - body: text.substring(offset, offset + source.length), - suffix: text.substring(offset + source.length).trim() - }; - } - _getClosestDefinitionIndex(element) { return this._getClosestIndex(element, '.entry'); } @@ -1382,17 +1364,18 @@ class Display extends EventDispatcher { _getNoteContext() { const {state} = this._history; - let documentTitle = null; - if (typeof state === 'object' && state !== null) { - ({documentTitle} = state); - } + let {documentTitle, url, sentence} = (isObject(state) ? state : {}); if (typeof documentTitle !== 'string') { documentTitle = ''; } + if (typeof url !== 'string') { + url = window.location.href; + } + sentence = this._getValidSentenceData(sentence); return { - document: { - title: documentTitle - } + url, + sentence, + documentTitle }; } @@ -1534,9 +1517,7 @@ class Display extends EventDispatcher { const {deck: deckName, model: modelName} = modeOptions; const fields = Object.entries(modeOptions.fields); - if (injectMedia) { - await this._injectAnkiNoteMedia(definition, mode, options, fields); - } + const injectedMedia = (injectMedia ? await this._injectAnkiNoteMedia(definition, mode, options, fields) : null); return await this._ankiNoteBuilder.createNote({ definition, @@ -1551,7 +1532,8 @@ class Display extends EventDispatcher { duplicateScope, resultOutputMode, glossaryLayoutMode, - compactTags + compactTags, + injectedMedia }); } @@ -1570,17 +1552,13 @@ class Display extends EventDispatcher { image: this._ankiNoteBuilder.containsMarker(fields, 'clipboard-image'), text: this._ankiNoteBuilder.containsMarker(fields, 'clipboard-text') }; - const {screenshotFileName, clipboardImageFileName, clipboardText, audioFileName} = await api.injectAnkiNoteMedia( + return 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) { |