aboutsummaryrefslogtreecommitdiff
path: root/ext/bg/js/settings/anki.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bg/js/settings/anki.js')
-rw-r--r--ext/bg/js/settings/anki.js36
1 files changed, 31 insertions, 5 deletions
diff --git a/ext/bg/js/settings/anki.js b/ext/bg/js/settings/anki.js
index ae380fdb..aa89c6bf 100644
--- a/ext/bg/js/settings/anki.js
+++ b/ext/bg/js/settings/anki.js
@@ -17,6 +17,9 @@
*/
+let _ankiDataPopulated = false;
+
+
function ankiSpinnerShow(show) {
const spinner = $('#anki-spinner');
if (show) {
@@ -165,11 +168,7 @@ function onAnkiMarkerClicked(e) {
async function onAnkiModelChanged(e) {
try {
- if (!e.originalEvent) {
- return;
- }
-
- const element = $(this);
+ const element = $(e.currentTarget);
const tab = element.closest('.tab-pane');
const tabId = tab.attr('id');
@@ -188,3 +187,30 @@ async function onAnkiModelChanged(e) {
ankiSpinnerShow(false);
}
}
+
+
+function ankiInitialize() {
+ for (const node of document.querySelectorAll('#anki-terms-model,#anki-kanji-model')) {
+ node.addEventListener('change', (e) => onAnkiModelChanged(e), false);
+ }
+}
+
+async function onAnkiOptionsChanged(options) {
+ if (!options.anki.enable) {
+ _ankiDataPopulated = false;
+ return;
+ }
+
+ if (_ankiDataPopulated) { return; }
+
+ try {
+ ankiSpinnerShow(true);
+ await ankiDeckAndModelPopulate(options);
+ ankiErrorShow();
+ _ankiDataPopulated = true;
+ } catch (e) {
+ ankiErrorShow(e);
+ } finally {
+ ankiSpinnerShow(false);
+ }
+}