diff --git a/ext/bg/js/anki.js b/ext/bg/js/anki.js index a359f021..66cea094 100644 --- a/ext/bg/js/anki.js +++ b/ext/bg/js/anki.js @@ -43,6 +43,18 @@ class AnkiConnect { return this.ankiInvokeSafe('modelFieldNames', {modelName}, null); } + getStatus() { + return this.getVersion().then(version => { + if (version === null) { + return 'disconnected'; + } else if (version === this.apiVersion) { + return 'ready'; + } else { + return 'mismatch'; + } + }); + } + getVersion() { return this.ankiInvoke('version', {}, null); } diff --git a/ext/bg/js/options-form.js b/ext/bg/js/options-form.js index 6508a9eb..653521d6 100644 --- a/ext/bg/js/options-form.js +++ b/ext/bg/js/options-form.js @@ -39,8 +39,25 @@ function modelIdToFieldOptKey(id) { function modelIdToMarkers(id) { return { - 'anki-term-model': ['audio', 'expression', 'glossary', 'glossary-list', 'reading', 'sentence', 'tags', 'url'], - 'anki-kanji-model': ['character', 'glossary', 'glossary-list', 'kunyomi', 'onyomi', 'url'], + 'anki-term-model': [ + 'audio', + 'expression', + 'expression-furigana', + 'glossary', + 'glossary-list', + 'reading', + 'sentence', + 'tags', + 'url' + ], + 'anki-kanji-model': [ + 'character', + 'glossary', + 'glossary-list', + 'kunyomi', + 'onyomi', + 'url' + ], }[id]; } @@ -111,19 +128,21 @@ function populateAnkiDeckAndModel(opts) { } function updateAnkiStatus() { - $('.error-dlg').hide(); + // $('.error-dlg').hide(); - yomichan().api_getVersion({callback: version => { - if (version === null) { - $('.error-dlg-connection').show(); - $('.options-anki-controls').hide(); - } else if (version !== yomichan().getApiVersion()) { - $('.error-dlg-version').show(); - $('.options-anki-controls').hide(); - } else { - $('.options-anki-controls').show(); - } - }}); + // yomichan().api_getVersion({callback: version => { + // if (version === null) { + // $('.error-dlg-connection').show(); + // $('.options-anki-controls').hide(); + // } else if (version !== yomichan().getApiVersion()) { + // $('.error-dlg-version').show(); + // $('.options-anki-controls').hide(); + // } else { + // $('.options-anki-controls').show(); + // } + // }}); + + $('.options-anki-controls').show(); } function populateAnkiFields(element, opts) { diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index 25dbc23c..0038645c 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -103,10 +103,6 @@ class Yomichan { this.tabInvokeAll('setOptions', this.options); } - getApiVersion() { - return 1; - } - tabInvokeAll(action, params) { chrome.tabs.query({}, tabs => { for (const tab of tabs) { @@ -124,6 +120,7 @@ class Yomichan { 'audio', 'character', 'expression', + 'expression-furigana', 'glossary', 'glossary-list', 'kunyomi', @@ -145,6 +142,13 @@ class Yomichan { value = definition.reading; } break; + case 'expression-furigana': + if (mode === 'term_kana' && definition.reading) { + value = definition.reading; + } else { + value = `${definition.expression}${definition.reading}`; + } + break; case 'reading': if (mode === 'term_kana') { value = null; @@ -274,10 +278,6 @@ class Yomichan { api_getModelFieldNames({modelName, callback}) { this.anki.getModelFieldNames(modelName).then(callback); } - - api_getVersion({callback}) { - this.anki.getVersion().then(callback); - } } window.yomichan = new Yomichan();