From cc3fd8670c37be2b5f3e9f642bb3b1882350e2f6 Mon Sep 17 00:00:00 2001 From: Andreas Eriksson Date: Tue, 7 Dec 2021 11:42:47 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Store=20childs=20personal?= =?UTF-8?q?IdNumbers=20in=20settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/skolplattformen-app/App.tsx | 3 +++ .../components/absence.component.tsx | 22 +++++++++++-------- .../hooks/useSettingsStorage.tsx | 3 +++ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/apps/skolplattformen-app/App.tsx b/apps/skolplattformen-app/App.tsx index fde47127..df692246 100644 --- a/apps/skolplattformen-app/App.tsx +++ b/apps/skolplattformen-app/App.tsx @@ -26,6 +26,9 @@ const reporter: Reporter | undefined = __DEV__ if (__DEV__) { // eslint-disable-next-line @typescript-eslint/no-var-requires const DevMenu = require('react-native-dev-menu') + DevMenu.addItem('Clear AsyncStorage from all contents', () => + AsyncStorage.clear().then(() => logAsyncStorage()) + ) DevMenu.addItem('Log AsyncStorage contents', () => logAsyncStorage()) } diff --git a/apps/skolplattformen-app/components/absence.component.tsx b/apps/skolplattformen-app/components/absence.component.tsx index 4009b5f9..755ad819 100644 --- a/apps/skolplattformen-app/components/absence.component.tsx +++ b/apps/skolplattformen-app/components/absence.component.tsx @@ -18,6 +18,7 @@ import { NativeStackNavigationOptions } from 'react-native-screens/native-stack' import * as Yup from 'yup' import { defaultStackStyling } from '../design/navigationThemes' import usePersonalStorage from '../hooks/usePersonalStorage' +import useSettingsStorage from '../hooks/useSettingsStorage' import { Layout as LayoutStyle, Sizing, Typography } from '../styles' import { studentName } from '../utils/peopleHelpers' import { useSMS } from '../utils/SMS' @@ -70,12 +71,11 @@ const Absence = () => { const route = useRoute() const { sendSMS } = useSMS() const { child } = route.params - const [personalIdFromStorage, setPersonalIdInStorage] = usePersonalStorage( - user, - `@childssn.${child.id}`, - '' - ) const [personalIdentityNumber, setPersonalIdentityNumber] = React.useState('') + const [personalIdsFromStorage, setPersonalIdInStorage] = useSettingsStorage( + 'childPersonalIdentityNumber' + ) + const personalIdKey = `@childPersonalIdNumber.${child.id}` const minumumDate = moment().hours(8).minute(0) const maximumDate = moment().hours(17).minute(0) const styles = useStyleSheet(themedStyles) @@ -96,15 +96,19 @@ const Absence = () => { ) } - setPersonalIdInStorage(values.personalIdentityNumber) - setPersonalIdentityNumber(values.personalIdentityNumber) + const toStore = { + ...personalIdsFromStorage, + ...{ [personalIdKey]: personalIdNumber }, + } + setPersonalIdInStorage(toStore) }, - [sendSMS, setPersonalIdInStorage] + [personalIdKey, personalIdsFromStorage, sendSMS, setPersonalIdInStorage] ) React.useEffect(() => { + const personalIdFromStorage = personalIdsFromStorage[personalIdKey] || '' setPersonalIdentityNumber(personalIdFromStorage || '') - }, [child, personalIdFromStorage, user]) + }, [child, personalIdKey, personalIdsFromStorage, user]) const initialValues: AbsenceFormValues = { displayStartTimePicker: false, diff --git a/apps/skolplattformen-app/hooks/useSettingsStorage.tsx b/apps/skolplattformen-app/hooks/useSettingsStorage.tsx index 7fdfb501..a976064f 100644 --- a/apps/skolplattformen-app/hooks/useSettingsStorage.tsx +++ b/apps/skolplattformen-app/hooks/useSettingsStorage.tsx @@ -2,6 +2,8 @@ import { useCallback } from 'react' import { proxy, subscribe, useSnapshot } from 'valtio' import AppStorage from '../services/appStorage' +export type ChildPersonalNumbers = Record + export const settingsState = proxy({ hydrated: false, settings: { @@ -12,6 +14,7 @@ export const settingsState = proxy({ currentSchoolPlatform: 'stockholm-skolplattformen' as | 'stockholm-skolplattformen' | 'goteborg-hjarntorget', + childPersonalIdentityNumber: {} as ChildPersonalNumbers, }, })