From fc4842956d4be757fb069a81a3676b2af51d27b8 Mon Sep 17 00:00:00 2001 From: Marcella Maki Date: Wed, 8 Nov 2023 16:52:45 -0500 Subject: [PATCH 1/3] Swap on-my-own const for using the existing Personal const, to prevent state management snafus --- kolibri/plugins/setup_wizard/assets/src/constants.js | 1 - .../setup_wizard/assets/src/machines/wizardMachine.js | 10 ++++++++-- .../views/onboarding-forms/HowAreYouUsingKolibri.vue | 9 ++++++--- .../src/views/onboarding-forms/SettingUpKolibri.vue | 4 ++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/kolibri/plugins/setup_wizard/assets/src/constants.js b/kolibri/plugins/setup_wizard/assets/src/constants.js index ef2b6b1ecfd..b010398ed92 100644 --- a/kolibri/plugins/setup_wizard/assets/src/constants.js +++ b/kolibri/plugins/setup_wizard/assets/src/constants.js @@ -11,7 +11,6 @@ const Presets = Object.freeze({ * enum identifying whether the user has gone to the on my own flow or not */ const UsePresets = Object.freeze({ - ON_MY_OWN: 'on my own', GROUP: 'group', }); diff --git a/kolibri/plugins/setup_wizard/assets/src/machines/wizardMachine.js b/kolibri/plugins/setup_wizard/assets/src/machines/wizardMachine.js index e6b52db6da5..6e76e19e385 100644 --- a/kolibri/plugins/setup_wizard/assets/src/machines/wizardMachine.js +++ b/kolibri/plugins/setup_wizard/assets/src/machines/wizardMachine.js @@ -1,6 +1,12 @@ import uniq from 'lodash/uniq'; import { checkCapability } from 'kolibri.utils.appCapabilities'; -import { DeviceTypePresets, FacilityTypePresets, LodTypePresets, UsePresets } from '../constants'; +import { + DeviceTypePresets, + FacilityTypePresets, + LodTypePresets, + UsePresets, + Presets, +} from '../constants'; /** * __ Setting up the XState Visualizer __ @@ -536,7 +542,7 @@ export const wizardMachine = createMachine( // Functions used to return a true/false value. When the functions are called, they are passed // the current value of the machine's context as the only parameter isOnMyOwnOrGroup: context => { - return context.onMyOwnOrGroup === UsePresets.ON_MY_OWN; + return context.onMyOwnOrGroup === Presets.PERSONAL; }, isGroupSetup: context => { return context.onMyOwnOrGroup === UsePresets.GROUP; diff --git a/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/HowAreYouUsingKolibri.vue b/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/HowAreYouUsingKolibri.vue index 608a9492be0..3d754008c67 100644 --- a/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/HowAreYouUsingKolibri.vue +++ b/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/HowAreYouUsingKolibri.vue @@ -9,7 +9,7 @@ @@ -36,18 +36,21 @@ mixins: [commonSyncElements], inject: ['wizardService'], data() { - const selected = this.wizardService.state.context['onMyOwnOrGroup'] || UsePresets.ON_MY_OWN; + const selected = this.wizardService.state.context['onMyOwnOrGroup'] || Presets.PERSONAL; return { selected, }; }, computed: { isOnMyOwnSetup() { - return this.selected === UsePresets.ON_MY_OWN; + return this.selected === Presets.PERSONAL; }, UsePresets() { return UsePresets; }, + Presets() { + return Presets; + }, }, methods: { handleContinue() { diff --git a/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/SettingUpKolibri.vue b/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/SettingUpKolibri.vue index 344b96f407c..b0eb3590238 100644 --- a/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/SettingUpKolibri.vue +++ b/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/SettingUpKolibri.vue @@ -44,7 +44,7 @@ import urls from 'kolibri.urls'; import client from 'kolibri.client'; import Lockr from 'lockr'; - import { DeviceTypePresets, UsePresets } from '../../constants'; + import { DeviceTypePresets, Presets } from '../../constants'; export default { name: 'SettingUpKolibri', @@ -160,7 +160,7 @@ /** Introspecting the machine via it's `state.context` properties */ isOnMyOwnSetup() { - return this.wizardContext('onMyOwnOrGroup') == UsePresets.ON_MY_OWN; + return this.wizardContext('onMyOwnOrGroup') == Presets.PERSONAL; }, }, created() { From a14933c998894d9294e57ff33e0f27ac18dcff0e Mon Sep 17 00:00:00 2001 From: Marcella Maki Date: Mon, 15 Jan 2024 17:32:35 -0500 Subject: [PATCH 2/3] Add computed prop to guard against invalid presets --- .../src/views/onboarding-forms/SettingUpKolibri.vue | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/SettingUpKolibri.vue b/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/SettingUpKolibri.vue index b0eb3590238..8dd00728852 100644 --- a/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/SettingUpKolibri.vue +++ b/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/SettingUpKolibri.vue @@ -143,7 +143,7 @@ ...this.facilityData, superuser, settings: omitBy(settings, v => v === null), - preset: this.wizardContext('formalOrNonformal') || 'nonformal', + preset: this.presetValue, language_id: currentLanguage, device_name: this.wizardContext('deviceName') || @@ -162,6 +162,16 @@ isOnMyOwnSetup() { return this.wizardContext('onMyOwnOrGroup') == Presets.PERSONAL; }, + presetValue() { + // this computed prop was to guard against a strange edge case where a mismatched + // preset was inadvertently being sent to the backend, where the values + // were not valid, including an incorrect fallback, and 'on my own' being sent as a value + if (this.isOnMyOwnSetup) { + return Presets.PERSONAL; + } else { + return this.wizardContext('formalOrNonformal'); + } + }, }, created() { this.provisionDevice(); From 826ef10548abe6e80c91dd9b20c70369cf5fb9ce Mon Sep 17 00:00:00 2001 From: Marcella Maki Date: Wed, 17 Jan 2024 15:52:09 -0500 Subject: [PATCH 3/3] simplify advancement to next step, and remove call to non-existent SET_FACILITY_PRESET mutation --- .../views/onboarding-forms/HowAreYouUsingKolibri.vue | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/HowAreYouUsingKolibri.vue b/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/HowAreYouUsingKolibri.vue index 3d754008c67..30a432d786a 100644 --- a/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/HowAreYouUsingKolibri.vue +++ b/kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/HowAreYouUsingKolibri.vue @@ -42,9 +42,6 @@ }; }, computed: { - isOnMyOwnSetup() { - return this.selected === Presets.PERSONAL; - }, UsePresets() { return UsePresets; }, @@ -54,14 +51,6 @@ }, methods: { handleContinue() { - if (this.isOnMyOwnSetup) { - // If the user is on their own, set the preset to personal here - // If not then the user will set it using a form later on - this.$store.commit('SET_FACILITY_PRESET', Presets.PERSONAL); - } - this.goToNextStep(); - }, - goToNextStep() { this.wizardService.send({ type: 'CONTINUE', value: this.selected }); }, },