From 18af7e7eb03a9416ab533bc8f6825e0e7260a4fc Mon Sep 17 00:00:00 2001 From: danielghost Date: Wed, 24 Sep 2025 16:17:57 +0100 Subject: [PATCH 1/4] Fix: resolved issues with state restoration caused by multiple language selections (fixes #116). --- js/languagePickerModel.js | 2 +- js/languagePickerView.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/js/languagePickerModel.js b/js/languagePickerModel.js index f0a550e..a3ed231 100644 --- a/js/languagePickerModel.js +++ b/js/languagePickerModel.js @@ -39,11 +39,11 @@ export default class LanguagePickerModel extends Backbone.Model { setLanguage(language, { canReset = true } = {}) { this.locationId = offlineStorage.get('location') || null; + if (canReset) this.checkResetOnLanguageChange(); Adapt.config.set({ _activeLanguage: language, _defaultDirection: this.getLanguageDetails(language)._direction }); - if (canReset) this.checkResetOnLanguageChange(); } checkResetOnLanguageChange() { diff --git a/js/languagePickerView.js b/js/languagePickerView.js index f2f1470..b855b5f 100644 --- a/js/languagePickerView.js +++ b/js/languagePickerView.js @@ -1,4 +1,5 @@ import Adapt from 'core/js/adapt'; +import a11y from 'core/js/a11y'; import NavigationView from './languagePickerNavigationView'; import device from 'core/js/device'; import router from 'core/js/router'; @@ -55,6 +56,8 @@ export default class LanguagePickerView extends Backbone.View { } onLanguageClick(event) { + const $buttons = this.$('.js-languagepicker-btn-click'); + a11y.toggleEnabled($buttons, false); this.destroyNavigation(); const lang = event.currentTarget.value; this.model.setLanguage(lang); From fd07867cd15eb548feb7892a5890d577216df5b7 Mon Sep 17 00:00:00 2001 From: Dan Ghost Date: Thu, 25 Sep 2025 14:50:14 +0100 Subject: [PATCH 2/4] Update js/languagePickerView.js Co-authored-by: Oliver Foster <7974663+oliverfoster@users.noreply.github.com> --- js/languagePickerView.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/languagePickerView.js b/js/languagePickerView.js index b855b5f..a2193fc 100644 --- a/js/languagePickerView.js +++ b/js/languagePickerView.js @@ -56,8 +56,8 @@ export default class LanguagePickerView extends Backbone.View { } onLanguageClick(event) { - const $buttons = this.$('.js-languagepicker-btn-click'); - a11y.toggleEnabled($buttons, false); + if (this._isLanguageChanging) return; + this._isLanguageChanging = true; this.destroyNavigation(); const lang = event.currentTarget.value; this.model.setLanguage(lang); From c685dee716e6c1c8638e8f4c6ba3fd37bd715e4e Mon Sep 17 00:00:00 2001 From: danielghost Date: Fri, 26 Sep 2025 16:15:58 +0100 Subject: [PATCH 3/4] Moved `checkResetOnLanguageChange` to the top. --- js/languagePickerModel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/languagePickerModel.js b/js/languagePickerModel.js index a3ed231..e8adfb4 100644 --- a/js/languagePickerModel.js +++ b/js/languagePickerModel.js @@ -38,8 +38,8 @@ export default class LanguagePickerModel extends Backbone.Model { } setLanguage(language, { canReset = true } = {}) { - this.locationId = offlineStorage.get('location') || null; if (canReset) this.checkResetOnLanguageChange(); + this.locationId = offlineStorage.get('location') || null; Adapt.config.set({ _activeLanguage: language, _defaultDirection: this.getLanguageDetails(language)._direction From e4c9da171296f488c8c3ac71c488335d9169bc45 Mon Sep 17 00:00:00 2001 From: danielghost Date: Fri, 26 Sep 2025 16:25:05 +0100 Subject: [PATCH 4/4] Removed a11y import as no longer needed due to https://github.com/adaptlearning/adapt-contrib-languagePicker/pull/118/commits/fd07867cd15eb548feb7892a5890d577216df5b7. --- js/languagePickerView.js | 1 - 1 file changed, 1 deletion(-) diff --git a/js/languagePickerView.js b/js/languagePickerView.js index a2193fc..af3931d 100644 --- a/js/languagePickerView.js +++ b/js/languagePickerView.js @@ -1,5 +1,4 @@ import Adapt from 'core/js/adapt'; -import a11y from 'core/js/a11y'; import NavigationView from './languagePickerNavigationView'; import device from 'core/js/device'; import router from 'core/js/router';