fix: 🐛 Store childs personalIdNumbers in settings

This commit is contained in:
Andreas Eriksson 2021-12-07 11:42:47 +01:00
parent 86dfb4fb8d
commit cc3fd8670c
3 changed files with 19 additions and 9 deletions

View File

@ -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())
}

View File

@ -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<AbsenceRouteProps>()
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,

View File

@ -2,6 +2,8 @@ import { useCallback } from 'react'
import { proxy, subscribe, useSnapshot } from 'valtio'
import AppStorage from '../services/appStorage'
export type ChildPersonalNumbers = Record<string, string>
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,
},
})