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__) { if (__DEV__) {
// eslint-disable-next-line @typescript-eslint/no-var-requires // eslint-disable-next-line @typescript-eslint/no-var-requires
const DevMenu = require('react-native-dev-menu') const DevMenu = require('react-native-dev-menu')
DevMenu.addItem('Clear AsyncStorage from all contents', () =>
AsyncStorage.clear().then(() => logAsyncStorage())
)
DevMenu.addItem('Log AsyncStorage contents', () => 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 * as Yup from 'yup'
import { defaultStackStyling } from '../design/navigationThemes' import { defaultStackStyling } from '../design/navigationThemes'
import usePersonalStorage from '../hooks/usePersonalStorage' import usePersonalStorage from '../hooks/usePersonalStorage'
import useSettingsStorage from '../hooks/useSettingsStorage'
import { Layout as LayoutStyle, Sizing, Typography } from '../styles' import { Layout as LayoutStyle, Sizing, Typography } from '../styles'
import { studentName } from '../utils/peopleHelpers' import { studentName } from '../utils/peopleHelpers'
import { useSMS } from '../utils/SMS' import { useSMS } from '../utils/SMS'
@ -70,12 +71,11 @@ const Absence = () => {
const route = useRoute<AbsenceRouteProps>() const route = useRoute<AbsenceRouteProps>()
const { sendSMS } = useSMS() const { sendSMS } = useSMS()
const { child } = route.params const { child } = route.params
const [personalIdFromStorage, setPersonalIdInStorage] = usePersonalStorage(
user,
`@childssn.${child.id}`,
''
)
const [personalIdentityNumber, setPersonalIdentityNumber] = React.useState('') const [personalIdentityNumber, setPersonalIdentityNumber] = React.useState('')
const [personalIdsFromStorage, setPersonalIdInStorage] = useSettingsStorage(
'childPersonalIdentityNumber'
)
const personalIdKey = `@childPersonalIdNumber.${child.id}`
const minumumDate = moment().hours(8).minute(0) const minumumDate = moment().hours(8).minute(0)
const maximumDate = moment().hours(17).minute(0) const maximumDate = moment().hours(17).minute(0)
const styles = useStyleSheet(themedStyles) const styles = useStyleSheet(themedStyles)
@ -96,15 +96,19 @@ const Absence = () => {
) )
} }
setPersonalIdInStorage(values.personalIdentityNumber) const toStore = {
setPersonalIdentityNumber(values.personalIdentityNumber) ...personalIdsFromStorage,
...{ [personalIdKey]: personalIdNumber },
}
setPersonalIdInStorage(toStore)
}, },
[sendSMS, setPersonalIdInStorage] [personalIdKey, personalIdsFromStorage, sendSMS, setPersonalIdInStorage]
) )
React.useEffect(() => { React.useEffect(() => {
const personalIdFromStorage = personalIdsFromStorage[personalIdKey] || ''
setPersonalIdentityNumber(personalIdFromStorage || '') setPersonalIdentityNumber(personalIdFromStorage || '')
}, [child, personalIdFromStorage, user]) }, [child, personalIdKey, personalIdsFromStorage, user])
const initialValues: AbsenceFormValues = { const initialValues: AbsenceFormValues = {
displayStartTimePicker: false, displayStartTimePicker: false,

View File

@ -2,6 +2,8 @@ import { useCallback } from 'react'
import { proxy, subscribe, useSnapshot } from 'valtio' import { proxy, subscribe, useSnapshot } from 'valtio'
import AppStorage from '../services/appStorage' import AppStorage from '../services/appStorage'
export type ChildPersonalNumbers = Record<string, string>
export const settingsState = proxy({ export const settingsState = proxy({
hydrated: false, hydrated: false,
settings: { settings: {
@ -12,6 +14,7 @@ export const settingsState = proxy({
currentSchoolPlatform: 'stockholm-skolplattformen' as currentSchoolPlatform: 'stockholm-skolplattformen' as
| 'stockholm-skolplattformen' | 'stockholm-skolplattformen'
| 'goteborg-hjarntorget', | 'goteborg-hjarntorget',
childPersonalIdentityNumber: {} as ChildPersonalNumbers,
}, },
}) })