Skip to content

Commit 6a16128

Browse files
Merged PR 40695: Create request-pincode screen (not complete)
Create request-pincode screen (not complete) Related work items: #139117
2 parents 1a97e5f + f37136f commit 6a16128

11 files changed

+167
-4
lines changed

src/modules/parking/Stack.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {LoginStepsScreen} from '@/modules/parking/screens/LoginSteps.screen'
1919
import {ParkingDashboardScreen} from '@/modules/parking/screens/ParkingDashBoard.screen'
2020
import {ParkingIntroScreen} from '@/modules/parking/screens/ParkingIntro.screen'
2121
import {ParkingLoginScreen} from '@/modules/parking/screens/ParkingLogin.screen'
22+
import {ParkingRequestPinCodeScreen} from '@/modules/parking/screens/ParkingRequestPinCode.screen'
2223
import {RestartLoginScreen} from '@/modules/parking/screens/RestartLogin.screen'
2324
import {SecureItemKey} from '@/utils/secureStorage'
2425

@@ -105,18 +106,26 @@ export const ParkingStack = () => {
105106
<Stack.Screen
106107
component={ParkingIntroScreen}
107108
name={ParkingRouteName.intro}
109+
options={{headerTitle: 'Aanmelden parkeren'}}
108110
/>
109111
<Stack.Screen
110112
component={ParkingLoginScreen}
111113
name={ParkingRouteName.login}
114+
options={{headerTitle: 'Inloggen'}}
112115
/>
113116
</>
114117
) : (
115118
<Stack.Screen
116119
component={ParkingLoginScreen}
117120
name={ParkingRouteName.login}
121+
options={{headerTitle: 'Inloggen'}}
118122
/>
119123
)}
124+
<Stack.Screen
125+
component={ParkingRequestPinCodeScreen}
126+
name={ParkingRouteName.requestPinCode}
127+
options={{headerTitle: 'Pincode vergeten'}}
128+
/>
120129
</>
121130
)}
122131
</Stack.Navigator>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import {FormProvider, useForm} from 'react-hook-form'
2+
import {TextInputField} from '@/components/ui/forms/TextInputField'
3+
import {Column} from '@/components/ui/layout/Column'
4+
5+
type FormData = {
6+
phoneLastFourDigits: string
7+
reportCode: string
8+
}
9+
10+
export const ParkingRequestPinCodeForm = () => {
11+
const form = useForm<FormData>()
12+
13+
return (
14+
<FormProvider {...form}>
15+
<Column gutter="md">
16+
<TextInputField
17+
autoFocus
18+
label="Meldcode"
19+
name="reportCode"
20+
rules={{
21+
required: 'Vul een meldcode in',
22+
}}
23+
testID="ParkingRequestPinCodeFormReportCodeInputField"
24+
/>
25+
<TextInputField
26+
label="Laatste 4 cijfers van uw telefoonnummer"
27+
name="phoneLastFourDigits"
28+
rules={{
29+
required: 'Vul laatste 4 cijfers van uw telefoonnummer in',
30+
}}
31+
testID="ParkingRequestPinCodeFormPhoneLastFourDigitsInputField"
32+
/>
33+
</Column>
34+
</FormProvider>
35+
)
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import {ReactNode} from 'react'
2+
import {useForm, FormProvider} from 'react-hook-form'
3+
import {RequestPinCode} from '@/modules/parking/types'
4+
5+
type Props = {
6+
children: ReactNode
7+
}
8+
9+
export const ParkingRequestPinCodeFormProvider = ({children}: Props) => {
10+
const form = useForm<RequestPinCode>()
11+
12+
return <FormProvider {...form}>{children}</FormProvider>
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import {useFormContext} from 'react-hook-form'
2+
import {Button} from '@/components/ui/buttons/Button'
3+
import {Box} from '@/components/ui/containers/Box'
4+
import {RequestPinCode} from '@/modules/parking/types'
5+
import {devLog} from '@/processes/development'
6+
7+
export const ParkingRequestPincodeFormSubmitButton = () => {
8+
const {handleSubmit} = useFormContext<RequestPinCode>()
9+
10+
const onSubmit = handleSubmit(({phoneLastFourDigits, reportCode}) => {
11+
devLog({phoneLastFourDigits, reportCode})
12+
})
13+
14+
return (
15+
<Box>
16+
<Button
17+
label="Pincode opvragen"
18+
onPress={onSubmit}
19+
testID="ParkingRequestPinCodeFormSubmitButton"
20+
/>
21+
</Box>
22+
)
23+
}

src/modules/parking/routes.ts

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export enum ParkingRouteName {
33
intro = 'ParkingIntro',
44
login = 'ParkingLogin',
55
loginSteps = 'ParkingLoginSteps',
6+
requestPinCode = 'ParkingRequestPinCode',
67
restartLogin = 'ParkingRestartLogin',
78
}
89

@@ -11,5 +12,6 @@ export type ParkingStackParams = {
1112
[ParkingRouteName.intro]: undefined
1213
[ParkingRouteName.login]: undefined
1314
[ParkingRouteName.loginSteps]: undefined
15+
[ParkingRouteName.requestPinCode]: undefined
1416
[ParkingRouteName.restartLogin]: undefined
1517
}

src/modules/parking/screens/ParkingLogin.screen.tsx

+15-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1+
import {NavigationProps} from '@/app/navigation/types'
12
import {Screen} from '@/components/features/screen/Screen'
3+
import {Button} from '@/components/ui/buttons/Button'
24
import {Box} from '@/components/ui/containers/Box'
35
import {Column} from '@/components/ui/layout/Column'
46
import {Title} from '@/components/ui/text/Title'
5-
import {ParkingLoginForm} from '@/modules/parking/components/ParkingLoginForm'
6-
import {ParkingLoginFormProvider} from '@/modules/parking/components/ParkingLoginFormProvider'
7-
import {ParkingLoginFormSubmitButton} from '@/modules/parking/components/ParkingLoginFormSubmitButton'
7+
import {ParkingLoginForm} from '@/modules/parking/components/login/ParkingLoginForm'
8+
import {ParkingLoginFormProvider} from '@/modules/parking/components/login/ParkingLoginFormProvider'
9+
import {ParkingLoginFormSubmitButton} from '@/modules/parking/components/login/ParkingLoginFormSubmitButton'
10+
import {ParkingRouteName} from '@/modules/parking/routes'
811

9-
export const ParkingLoginScreen = () => (
12+
type Props = NavigationProps<ParkingRouteName.login>
13+
14+
export const ParkingLoginScreen = ({navigation: {navigate}}: Props) => (
1015
<ParkingLoginFormProvider>
1116
<Screen
1217
stickyFooter={<ParkingLoginFormSubmitButton />}
@@ -18,6 +23,12 @@ export const ParkingLoginScreen = () => (
1823
text="Inloggen Aanmelden Parkeren"
1924
/>
2025
<ParkingLoginForm />
26+
<Button
27+
label="Pincode vergeten"
28+
onPress={() => navigate(ParkingRouteName.requestPinCode)}
29+
testID="ParkingLoginForgotPinButton"
30+
variant="tertiary"
31+
/>
2132
</Column>
2233
</Box>
2334
</Screen>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import {Screen} from '@/components/features/screen/Screen'
2+
import {Box} from '@/components/ui/containers/Box'
3+
import {Column} from '@/components/ui/layout/Column'
4+
import {Paragraph} from '@/components/ui/text/Paragraph'
5+
import {Title} from '@/components/ui/text/Title'
6+
import {ParkingRequestPinCodeForm} from '@/modules/parking/components/requestPin/ParkingRequestPinCodeForm'
7+
import {ParkingRequestPinCodeFormProvider} from '@/modules/parking/components/requestPin/ParkingRequestPinCodeFormProvider'
8+
import {ParkingRequestPincodeFormSubmitButton} from '@/modules/parking/components/requestPin/ParkingRequestPinCodeFormSubmitButton'
9+
10+
export const ParkingRequestPinCodeScreen = () => (
11+
<ParkingRequestPinCodeFormProvider>
12+
<Screen
13+
stickyFooter={<ParkingRequestPincodeFormSubmitButton />}
14+
testID="ParkingRequestPinCodeScreen">
15+
<Box>
16+
<Column gutter="lg">
17+
<Column>
18+
<Title
19+
level="h2"
20+
text="Bent u op bezoek?"
21+
/>
22+
<Paragraph>
23+
Vraag dan de persoon die u bezoekt om de meldcode en pincode.
24+
</Paragraph>
25+
</Column>
26+
<Column>
27+
<Title
28+
level="h2"
29+
text="Heeft u een vergunning?"
30+
/>
31+
<Paragraph>
32+
Voer uw meldcode en laatste 4 cijfers van uw telefoonnummer in om
33+
uw pincode opnieuw te ontvangen.
34+
</Paragraph>
35+
</Column>
36+
<ParkingRequestPinCodeForm />
37+
</Column>
38+
</Box>
39+
</Screen>
40+
</ParkingRequestPinCodeFormProvider>
41+
)

src/modules/parking/types.ts

+28
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
1+
export type ParkingAccountDetails = {
2+
account_type: string
3+
address: {
4+
city: string
5+
concatenated_address: string
6+
house_letter: string
7+
house_number: string
8+
street: string
9+
suffix: string
10+
zip_code: string
11+
}
12+
client_id: number
13+
email: string
14+
initials: string
15+
last_name: string
16+
phone_number: string
17+
wallet: {
18+
balance: number
19+
currency: string
20+
}
21+
}
22+
123
type ParkingAccountAuth = {
224
accessToken: string
325
scope: ParkingPermitScope
@@ -8,9 +30,15 @@ export type ParkingAccountLogin = {
830
reportCode: string
931
}
1032

33+
export type RequestPinCode = {
34+
phoneLastFourDigits: string
35+
reportCode: string
36+
}
37+
1138
export type SecureParkingAccount = ParkingAccountAuth & ParkingAccountLogin
1239

1340
export enum ParkingEndpointName {
41+
accountDetails = 'accountDetails',
1442
login = 'login',
1543
permits = 'permits',
1644
}

0 commit comments

Comments
 (0)