@@ -5,13 +5,11 @@ import {
55 useCallback ,
66 createContext ,
77 useContext ,
8- useState ,
98} from 'react' ;
109import { isAddress , ReadContractErrorType } from 'viem' ;
1110import { useReadContract } from 'wagmi' ;
1211import { FormProvider , useForm } from 'react-hook-form' ;
1312
14- import { useFormControllerRetry } from 'shared/hook-form/form-controller/use-form-controller-retry-delegate' ;
1513import { useClaim } from 'features/claim/claim-form/hooks' ;
1614import { useVaultInfo } from 'modules/vaults' ;
1715
@@ -24,11 +22,6 @@ import {
2422import { dashboardAbi } from 'abi/dashboard-abi' ;
2523import { ClaimFormSchema } from 'features/claim/claim-form/types' ;
2624import invariant from 'tiny-invariant' ;
27- import {
28- SubmitPayload ,
29- SubmitStepEnum ,
30- } from 'shared/components/submit-modal/types' ;
31- import { SubmitModal } from 'shared/components' ;
3225
3326type ClaimDataContextValue = {
3427 availableToClaim : bigint | undefined ;
@@ -53,11 +46,28 @@ export const useClaimFormData = () => {
5346export const ClaimFormProvider : FC < { children : ReactNode } > = ( {
5447 children,
5548} ) => {
56- const [ submitStep , setSubmitStep ] = useState < SubmitPayload > ( ( ) => ( {
57- step : SubmitStepEnum . edit ,
58- } ) ) ;
5949 const { activeVault } = useVaultInfo ( ) ;
6050
51+ const formObject = useForm < ClaimFormSchema > ( {
52+ defaultValues : {
53+ recipient : '' ,
54+ } ,
55+ mode : 'all' ,
56+ // TODO: validation
57+ reValidateMode : 'onChange' ,
58+ } ) ;
59+ const { claim, retryEvent } = useClaim ( ) ;
60+
61+ const onSubmit = useCallback (
62+ async ( { recipient } : ClaimFormSchema ) => {
63+ // TODO: add validation, remove stub
64+ if ( ! isAddress ( recipient ) ) return false ;
65+
66+ return claim ( recipient ) ;
67+ } ,
68+ [ claim ] ,
69+ ) ;
70+
6171 const {
6272 data : availableToClaim ,
6373 isFetching : isLoadingClaimInfo ,
@@ -82,63 +92,21 @@ export const ClaimFormProvider: FC<{ children: ReactNode }> = ({
8292 [ availableToClaim , isLoadingClaimInfo , isErrorClaimInfo , errorClaimInfo ] ,
8393 ) ;
8494
85- const formObject = useForm < ClaimFormSchema > ( {
86- defaultValues : {
87- recipient : '' ,
88- } ,
89- mode : 'all' ,
90- reValidateMode : 'onChange' ,
91- } ) ;
92- const { callClaim } = useClaim ( ) ;
93-
94- const { retryEvent, retryFire } = useFormControllerRetry ( ) ;
95- const setModalState = useCallback ( ( submitStep : SubmitPayload ) => {
96- setSubmitStep ( submitStep ) ;
97- } , [ ] ) ;
98-
99- const onSubmit = useCallback (
100- async ( { recipient } : ClaimFormSchema ) => {
101- if ( recipient && isAddress ( recipient ) ) {
102- try {
103- setModalState ( { step : SubmitStepEnum . initiate } ) ;
104- const tx = await callClaim ( recipient , setModalState ) ;
105- setModalState ( { step : SubmitStepEnum . overview , tx } ) ;
106- return true ;
107- } catch ( err ) {
108- if (
109- err instanceof Error &&
110- err . message . includes ( 'User rejected the request' )
111- ) {
112- setModalState ( { step : SubmitStepEnum . reject } ) ;
113- } else {
114- setModalState ( { step : SubmitStepEnum . error } ) ;
115- }
116- }
117- }
118-
119- return false ;
120- } ,
121- // eslint-disable-next-line react-hooks/exhaustive-deps
122- [ callClaim ] ,
123- ) ;
124-
12595 const formControllerValue : FormControllerContextValueType < ClaimFormSchema > =
12696 useMemo (
12797 ( ) => ( {
12898 onSubmit,
12999 retryEvent,
130- retryFire,
131100 onReset : formObject . reset ,
132101 } ) ,
133- [ retryFire , retryEvent , onSubmit , formObject . reset ] ,
102+ [ retryEvent , onSubmit , formObject . reset ] ,
134103 ) ;
135104
136105 return (
137106 < ClaimDataContext . Provider value = { claimInfo } >
138107 < FormProvider { ...formObject } >
139108 < FormControllerContext . Provider value = { formControllerValue } >
140109 < FormController > { children } </ FormController >
141- < SubmitModal submitStep = { submitStep } setModalState = { setModalState } />
142110 </ FormControllerContext . Provider >
143111 </ FormProvider >
144112 </ ClaimDataContext . Provider >
0 commit comments