Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { Q, QueryDefinition, useQuery } from 'cozy-client'
import { QueryOptions } from 'cozy-client/types/types'
import { FORM_DOCTYPE } from 'doctypes'
import { SgeStep } from 'enums'
import { AccountGRDFData, SgeStore } from 'models'
export type QueryParams = (arg?: any) => {
definition: QueryDefinition
options: QueryOptions
}
interface FormData {
firstName: string
lastName: string
pdl: string
pce: string
zipCode: string
city: string
address: string
}
const getFormData: QueryParams = () => ({
definition: Q(FORM_DOCTYPE),
options: { as: 'form' },
})
/** Returns the form data from the form doctype */
export const useFormData = () => {
const { definition, options } = getFormData()
// eslint-disable-next-line prefer-const
let { data, lastError, fetchStatus } = useQuery(definition, options)
if (data === null) {
data = []
}
const formData = data as [FormData]
return {
formData: formData[0],
isFetching: fetchStatus === 'loading',
lastError,
}
}
export const createInitialSgeState = (formData?: FormData): SgeStore => ({
address: formData?.address ?? '',
lastName: formData?.lastName ?? '',
firstName: formData?.firstName ?? '',
pdl: formData?.pdl ? parseInt(formData.pdl) : null,
zipCode: formData?.zipCode ? parseInt(formData.zipCode) : null,
city: formData?.city ?? '',
currentStep: SgeStep.Address,
dataConsent: false,
pdlConfirm: false,
shouldLaunchAccount: false,
})
export const createInitialGrdfState = (
formData?: FormData
): AccountGRDFData => ({
lastname: formData?.lastName ?? '',
firstname: formData?.firstName ?? '',
pce: formData?.pce ?? '',
postalCode: formData?.zipCode ?? '',
email: '',
})