From 482dd8c8d8339d29c9e7a202cbf4c54bf7cf291d Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Fri, 26 Mar 2021 19:31:19 -0400 Subject: [PATCH] Display fixes (#1560) * Fix _getDefinitionDetailsForNote * Fix _getExpressionAndReading --- ext/js/display/display-audio.js | 8 ++++---- ext/js/display/display.js | 33 +++++++++++++++++++-------------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/ext/js/display/display-audio.js b/ext/js/display/display-audio.js index bb88c89e..03966390 100644 --- a/ext/js/display/display-audio.js +++ b/ext/js/display/display-audio.js @@ -405,11 +405,11 @@ class DisplayAudio { const definition = definitions[definitionIndex]; if (definition.type === 'kanji') { return null; } - const {expressions} = definition; - if (expressionIndex < 0 || expressionIndex >= expressions.length) { return null; } + const {headwords} = definition; + if (expressionIndex < 0 || expressionIndex >= headwords.length) { return null; } - const {expression, reading} = expressions[expressionIndex]; - return {expression, reading}; + const {term, reading} = headwords[expressionIndex]; + return {expression: term, reading}; } _getExpressionReadingKey(expression, reading) { diff --git a/ext/js/display/display.js b/ext/js/display/display.js index 1142f36f..7cc3b437 100644 --- a/ext/js/display/display.js +++ b/ext/js/display/display.js @@ -1505,7 +1505,7 @@ class Display extends EventDispatcher { let audioDetails = null; if (definitionDetails.type !== 'kanji' && AnkiUtil.fieldsObjectContainsMarker(fields, 'audio')) { - const primaryCardAudio = this._displayAudio.getPrimaryCardAudio(definitionDetails.expression, definitionDetails.reading); + const primaryCardAudio = this._displayAudio.getPrimaryCardAudio(definitionDetails.term, definitionDetails.reading); let preferredAudioIndex = null; let sources2 = sources; if (primaryCardAudio !== null) { @@ -1531,26 +1531,31 @@ class Display extends EventDispatcher { ); } - _getDefinitionDetailsForNote(definition) { - const {type} = definition; + _getDefinitionDetailsForNote(dictionaryEntry) { + const {type} = dictionaryEntry; if (type === 'kanji') { - const {character} = definition; + const {character} = dictionaryEntry; return {type, character}; } - const termDetailsList = definition.expressions; + const {headwords} = dictionaryEntry; let bestIndex = -1; - for (let i = 0, ii = termDetailsList.length; i < ii; ++i) { - const {sourceTerm, expression, reading} = termDetailsList[i]; - if (expression === sourceTerm) { - bestIndex = i; - break; - } else if (reading === sourceTerm && bestIndex < 0) { - bestIndex = i; + for (let i = 0, ii = headwords.length; i < ii; ++i) { + const {term, reading, sources} = headwords[i]; + for (const {deinflectedText} of sources) { + if (term === deinflectedText) { + bestIndex = i; + i = ii; + break; + } else if (reading === deinflectedText && bestIndex < 0) { + bestIndex = i; + break; + } } } - const {expression, reading} = termDetailsList[Math.max(0, bestIndex)]; - return {type, expression, reading}; + + const {term, reading} = headwords[Math.max(0, bestIndex)]; + return {type, term, reading}; } async _setOptionsContextIfDifferent(optionsContext) {