diff --git a/src/components/Connection/GRDFConnect/GrdfConnectView.tsx b/src/components/Connection/GRDFConnect/GrdfConnectView.tsx index e26af2bc92b8a537f6e1ad69b1c01e4d15a01937..c9b5e3da9bf6807328904cfa78955aed6055400d 100644 --- a/src/components/Connection/GRDFConnect/GrdfConnectView.tsx +++ b/src/components/Connection/GRDFConnect/GrdfConnectView.tsx @@ -5,13 +5,14 @@ import CozyBar from 'components/Header/CozyBar' import Header from 'components/Header/Header' import useKonnectorAuth from 'components/Hooks/useKonnectorAuth' import useUserInstanceSettings from 'components/Hooks/useUserInstanceSettings' +import { useClient } from 'cozy-client' import { FluidType } from 'enums' import { AccountGRDFData } from 'models' import React, { useCallback, useEffect, useRef, useState } from 'react' import { useNavigate } from 'react-router-dom' import { useAppSelector } from 'store/hooks' import '../connection.scss' -import { FormData, useFormData } from '../useForm' +import { createInitialGrdfState, useFormData } from '../useForm' import StepConsent from './StepConsent' import { StepIdentity } from './StepIdentity' @@ -20,18 +21,11 @@ export enum GrdfStep { Consent, } -const createInitialState = (formData?: FormData): AccountGRDFData => ({ - lastname: formData?.lastName ?? '', - firstname: formData?.firstName ?? '', - pce: formData?.pce ?? '', - postalCode: formData?.zipCode ?? '', - email: '', -}) - /** * http://ecolyo.cozy.tools:8080/#/connect/gas */ export const GrdfConnectView = () => { + const client = useClient() const navigate = useNavigate() const { formData } = useFormData() const { instanceSettings } = useUserInstanceSettings() @@ -42,7 +36,7 @@ export const GrdfConnectView = () => { const [launchConnection, setLaunchConnection] = useState(false) const [currentStep, setCurrentStep] = useState<GrdfStep>(GrdfStep.Identity) const [grdfState, setGrdfState] = useState<AccountGRDFData>( - createInitialState() + createInitialGrdfState() ) const [formConsent, setFormConsent] = useState({ dataConsent: false, @@ -67,7 +61,7 @@ export const GrdfConnectView = () => { if (formData) { setGrdfState(prevState => ({ ...prevState, - ...createInitialState(formData), + ...createInitialGrdfState(formData), })) } }, @@ -118,12 +112,19 @@ export const GrdfConnectView = () => { if (!isNextValid()) return if (currentStep < GrdfStep.Consent) { setCurrentStep(prev => prev + 1) + client.save({ + ...formData, + firstName: grdfState.firstname, + lastName: grdfState.lastname, + pce: grdfState.pce, + zipCode: grdfState.postalCode, + }) } if (currentStep === GrdfStep.Consent) { setLaunchConnection(true) } focusMainContent() - }, [currentStep, isNextValid]) + }, [client, currentStep, formData, grdfState, isNextValid]) const handlePrev = () => { setCurrentStep(prev => prev - 1) diff --git a/src/components/Connection/useForm.tsx b/src/components/Connection/useForm.tsx index 341d0775311ead9aa3dbfc43d472c8da14ed9584..9dd853c8cc72a78ee80e8e76f9cd5c3a33708b27 100644 --- a/src/components/Connection/useForm.tsx +++ b/src/components/Connection/useForm.tsx @@ -2,7 +2,7 @@ import { Q, QueryDefinition, useQuery } from 'cozy-client' import { QueryOptions } from 'cozy-client/types/types' import { FORM_DOCTYPE } from 'doctypes' import { SgeStep } from 'enums' -import { SgeStore } from 'models' +import { AccountGRDFData, SgeStore } from 'models' export type QueryParams = (arg?: any) => { definition: QueryDefinition @@ -52,6 +52,16 @@ export const createInitialSgeState = (formData?: FormData): SgeStore => ({ city: formData?.city ?? '', currentStep: SgeStep.Address, dataConsent: false, - shouldLaunchAccount: false, pdlConfirm: false, + shouldLaunchAccount: false, +}) + +export const createInitialGrdfState = ( + formData?: FormData +): AccountGRDFData => ({ + lastname: formData?.lastName ?? '', + firstname: formData?.firstName ?? '', + pce: formData?.pce ?? '', + postalCode: formData?.zipCode ?? '', + email: '', })