aboutsummaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/bg/js/ankiweb.js4
-rw-r--r--ext/bg/js/options-form.js9
2 files changed, 10 insertions, 3 deletions
diff --git a/ext/bg/js/ankiweb.js b/ext/bg/js/ankiweb.js
index 1393f668..bed605ec 100644
--- a/ext/bg/js/ankiweb.js
+++ b/ext/bg/js/ankiweb.js
@@ -75,6 +75,10 @@ class AnkiWeb {
});
}
+ logout() {
+ return AnkiWeb.loadPage('https://ankiweb.net/account/logout', null);
+ }
+
static scrape(username, password) {
return AnkiWeb.loadAccountPage('https://ankiweb.net/edit/', null, username, password).then(response => {
const modelsMatch = /editor\.models = (.*}]);/.exec(response);
diff --git a/ext/bg/js/options-form.js b/ext/bg/js/options-form.js
index 170b1e8c..fdaf059f 100644
--- a/ext/bg/js/options-form.js
+++ b/ext/bg/js/options-form.js
@@ -198,12 +198,15 @@ function onOptionsChanged(e) {
yomichan().setOptions(optsNew);
updateVisibility(optsNew);
- const invalidated =
- optsNew.ankiMethod !== optsOld.ankiMethod ||
+ const loginChanged =
optsNew.ankiUsername !== optsOld.ankiUsername ||
optsNew.ankiPassword !== optsOld.ankiPassword;
- if (invalidated) {
+ if (loginChanged && optsNew.ankiMethod === 'ankiweb') {
+ anki().logout().then(() => populateAnkiDeckAndModel(optsNew)).catch(error => {
+ $('#anki-error').show().find('span').text(error);
+ });
+ } else if (loginChanged || optsNew.ankiMethod !== optsOld.ankiMethod) {
populateAnkiDeckAndModel(optsNew);
}
});