Display fixes (#1560)

* Fix _getDefinitionDetailsForNote

* Fix _getExpressionAndReading
This commit is contained in:
toasted-nutbread 2021-03-26 19:31:19 -04:00 committed by GitHub
parent a14caaeab9
commit 482dd8c8d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 18 deletions

View File

@ -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) {

View File

@ -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) {
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;
} else if (reading === sourceTerm && bestIndex < 0) {
bestIndex = i;
}
}
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) {