Skip to content

Commit f57410c

Browse files
authored
Merge pull request #77 from lidofinance/feature/si-1895-polish-not-connectwrong-chain-state
fix: chain mismatch for settings
2 parents 79b6725 + a95c054 commit f57410c

File tree

24 files changed

+146
-104
lines changed

24 files changed

+146
-104
lines changed

features/adjustment/mint/form/submit-button/submit-button.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import { useVaultInfo, type VAULT_OWNER_ROLES } from 'modules/vaults';
22
import { MultiplePermissionedSubmitButton } from 'modules/vaults/components';
33
import { useMemo } from 'react';
4-
import { useFormContext, useWatch } from 'react-hook-form';
4+
import { useFormState, useWatch } from 'react-hook-form';
55

66
const NON_INCREASE_LOCK_ROLES = ['minter'] as VAULT_OWNER_ROLES[];
77
const INCREASE_LOCK_ROLES = ['minter', 'locker'] as VAULT_OWNER_ROLES[];
88

99
export const SubmitButton = () => {
10-
const {
11-
formState: { isSubmitting, isValid },
12-
} = useFormContext();
10+
const { isSubmitting, isValid, disabled } = useFormState();
1311

1412
const { activeVault } = useVaultInfo();
1513

@@ -35,13 +33,13 @@ export const SubmitButton = () => {
3533
return NON_INCREASE_LOCK_ROLES;
3634
}, [activeVault, amount, token]);
3735

38-
const disabled = isSubmitting && !isValid;
36+
const isDisabled = isSubmitting && !isValid && disabled;
3937

4038
return (
4139
<MultiplePermissionedSubmitButton
4240
dashboardRoles={roles}
4341
type="submit"
44-
disabled={disabled}
42+
disabled={isDisabled}
4543
>
4644
Mint
4745
</MultiplePermissionedSubmitButton>

features/adjustment/mint/mint-form-context/mint-form-provider.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ import {
66
createContext,
77
useContext,
88
} from 'react';
9+
import type { Address } from 'viem';
910
import { FormProvider, useForm } from 'react-hook-form';
1011
import invariant from 'tiny-invariant';
1112

1213
import { useVaultInfo } from 'modules/vaults';
13-
import { useMint } from 'features/adjustment/mint/hooks';
14+
import { useDappStatus } from 'modules/web3';
1415

1516
import { FormController } from 'shared/hook-form/form-controller';
17+
import { useMint } from 'features/adjustment/mint/hooks';
1618
import { MintFormSchema } from 'features/adjustment/mint/types';
17-
import { Address } from 'viem';
1819

1920
type MintDataContextValue = {
2021
mintableStETH: bigint;
@@ -36,12 +37,14 @@ export const useMintFormData = () => {
3637
};
3738

3839
export const MintFormProvider: FC<{ children: ReactNode }> = ({ children }) => {
40+
const { isDappActive } = useDappStatus();
3941
const formObject = useForm<MintFormSchema>({
4042
defaultValues: {
4143
amount: undefined,
4244
token: 'stETH',
4345
recipient: '' as Address,
4446
},
47+
disabled: !isDappActive,
4548
mode: 'all',
4649
// TODO: validation
4750
reValidateMode: 'onChange',

features/adjustment/repay/form/submit-button/submit-button.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import { PermissionedSubmitButton } from 'modules/vaults/components';
2-
import { useFormContext } from 'react-hook-form';
2+
import { useFormState } from 'react-hook-form';
33

44
export const SubmitButton = () => {
5-
const {
6-
formState: { isSubmitting, isValid },
7-
} = useFormContext();
8-
const disabled = isSubmitting || !isValid;
5+
const { isSubmitting, isValid, disabled } = useFormState();
6+
const isDisabled = isSubmitting || !isValid || disabled;
97

108
return (
119
<PermissionedSubmitButton
1210
dashboardRole="repayer"
1311
type="submit"
14-
disabled={disabled}
12+
disabled={isDisabled}
1513
>
1614
Repay
1715
</PermissionedSubmitButton>

features/adjustment/repay/repay-form-context/repay-form-provider.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@ import {
88
import { FormProvider, useForm } from 'react-hook-form';
99
import invariant from 'tiny-invariant';
1010

11-
import { useBurn } from 'features/adjustment/repay/hooks';
1211
import { useDappStatus, useStethBalance, useWstethBalance } from 'modules/web3';
13-
1412
import { FormController } from 'shared/hook-form/form-controller';
1513

14+
import { useBurn } from 'features/adjustment/repay/hooks';
1615
import { RepayFormSchema } from 'features/adjustment/repay/types';
1716

1817
type RepayDataContextValue = {
@@ -40,12 +39,14 @@ export const useRepayFormData = () => {
4039
};
4140

4241
export const RepayFormProvider = ({ children }: { children: ReactNode }) => {
42+
const { isDappActive } = useDappStatus();
4343
const formObject = useForm<RepayFormSchema>({
4444
defaultValues: {
4545
amount: undefined,
4646
token: 'stETH',
4747
},
4848
mode: 'all',
49+
disabled: !isDappActive,
4950
// TODO: validation
5051
reValidateMode: 'onChange',
5152
});

features/claim/claim-form/claim-form-context/claim-form-provider.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ import {
66
createContext,
77
useContext,
88
} from 'react';
9+
import invariant from 'tiny-invariant';
910
import { isAddress, ReadContractErrorType } from 'viem';
1011
import { useReadContract } from 'wagmi';
1112
import { FormProvider, useForm } from 'react-hook-form';
1213

13-
import { useClaim } from 'features/claim/claim-form/hooks';
14+
import { useDappStatus } from 'modules/web3';
1415
import { useVaultInfo } from 'modules/vaults';
15-
16+
import { dashboardAbi } from 'abi/dashboard-abi';
1617
import { FormController } from 'shared/hook-form/form-controller';
1718

18-
import { dashboardAbi } from 'abi/dashboard-abi';
19+
import { useClaim } from 'features/claim/claim-form/hooks';
1920
import { ClaimFormSchema } from 'features/claim/claim-form/types';
20-
import invariant from 'tiny-invariant';
2121

2222
type ClaimDataContextValue = {
2323
availableToClaim: bigint | undefined;
@@ -43,11 +43,12 @@ export const ClaimFormProvider: FC<{ children: ReactNode }> = ({
4343
children,
4444
}) => {
4545
const { activeVault } = useVaultInfo();
46-
46+
const { isDappActive } = useDappStatus();
4747
const formObject = useForm<ClaimFormSchema>({
4848
defaultValues: {
4949
recipient: '',
5050
},
51+
disabled: !isDappActive,
5152
mode: 'all',
5253
// TODO: validation
5354
reValidateMode: 'onChange',

features/claim/claim-form/form/submit-button/submit-button.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
import { useFormContext } from 'react-hook-form';
1+
import { useFormState } from 'react-hook-form';
22
import { useClaimFormData } from 'features/claim/claim-form/claim-form-context';
33
import { formatBalance } from 'utils';
44
import { PermissionedSubmitButton } from 'modules/vaults/components';
55

66
export const SubmitButton = () => {
7-
const {
8-
formState: { isValid, isSubmitting },
9-
} = useFormContext();
7+
const { isValid, isSubmitting, disabled } = useFormState();
108
const { isLoadingClaimInfo, availableToClaim, isErrorClaimInfo } =
119
useClaimFormData();
1210

1311
const isLoading =
1412
(!isErrorClaimInfo && !availableToClaim) || isLoadingClaimInfo;
1513

14+
const isDisabled = isSubmitting || !isValid || disabled || isLoading;
15+
1616
return (
1717
<PermissionedSubmitButton
1818
dashboardRole="nodeOperatorFeeClaimer"
1919
type="submit"
20-
disabled={isSubmitting || !isValid || isLoading}
20+
disabled={isDisabled}
2121
>
2222
{isLoading && <>Wait for claim information</>}
2323
{!!availableToClaim && <>{formatBalance(availableToClaim).trimmed} ETH</>}

features/create-vault/create-vault-form/create-vault-form.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { Address } from 'viem';
33
import { useForm, FormProvider } from 'react-hook-form';
44
import { zodResolver } from '@hookform/resolvers/zod';
55

6+
import { useDappStatus } from 'modules/web3';
67
import { FormController } from 'shared/hook-form/form-controller';
78

89
import { CreateVaultSchema } from 'features/create-vault/types';
@@ -26,6 +27,7 @@ const AFTER_SUBMIT_RESET_OPTIONS = {
2627
};
2728

2829
export const CreateVaultForm: FC<PropsWithChildren> = () => {
30+
const { isDappActive } = useDappStatus();
2931
const formObject = useForm({
3032
defaultValues: {
3133
nodeOperator: '' as Address,
@@ -37,6 +39,7 @@ export const CreateVaultForm: FC<PropsWithChildren> = () => {
3739
roles: {},
3840
step: CREATE_VAULT_FORM_STEPS.main,
3941
},
42+
disabled: !isDappActive,
4043
mode: 'onTouched',
4144
shouldUnregister: false,
4245
resolver: zodResolver(createVaultSchema, { async: false }, { raw: false }),

features/create-vault/create-vault-form/stages/confirmation/confirmation-action.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,16 @@ export const ConfirmationAction: FC<ConfirmationActionProps> = ({
2121
isConnected,
2222
}) => {
2323
const {
24-
formState: { isValid, isSubmitting },
24+
formState: { isValid, isSubmitting, disabled },
2525
setValue,
2626
} = useFormContext<CreateVaultSchema>();
2727

2828
const handleSetPrevStep = () => {
2929
setValue('step', CREATE_VAULT_FORM_STEPS.main);
3030
};
3131

32+
const isSubmitDisabled = isDisabled || disabled || isSubmitting || !isValid;
33+
3234
return (
3335
<ActionButtonContainer>
3436
<ActionButton
@@ -42,7 +44,7 @@ export const ConfirmationAction: FC<ConfirmationActionProps> = ({
4244
{isConnected ? (
4345
<ActionButton
4446
loading={isSubmitting}
45-
disabled={isDisabled || !isValid}
47+
disabled={isSubmitDisabled}
4648
type="submit"
4749
fullwidth
4850
>

features/create-vault/create-vault-form/stages/main-settings/create-vault-input/address-array-input.tsx

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useFieldArray, useFormContext } from 'react-hook-form';
1+
import { useFieldArray, useFormContext, useFormState } from 'react-hook-form';
22
import { Plus } from '@lidofinance/lido-ui';
33

44
import { ButtonClose } from 'shared/components';
@@ -17,6 +17,7 @@ type PlaceholderForm = {
1717

1818
export const AddressArrayInput: FC<AddressArrayProps> = ({ name, label }) => {
1919
const { register } = useFormContext();
20+
const { disabled } = useFormState();
2021
const { fields, append, remove } = useFieldArray<
2122
PlaceholderForm,
2223
'addresses'
@@ -37,16 +38,18 @@ export const AddressArrayInput: FC<AddressArrayProps> = ({ name, label }) => {
3738
</AddressInputGroup>
3839
);
3940
})}
40-
<AppendButton
41-
color="primary"
42-
icon={<Plus />}
43-
size="md"
44-
variant="ghost"
45-
type="button"
46-
onClick={() => append({ value: '' as Address })}
47-
>
48-
Add new address
49-
</AppendButton>
41+
{!disabled && (
42+
<AppendButton
43+
color="primary"
44+
icon={<Plus />}
45+
size="md"
46+
variant="ghost"
47+
type="button"
48+
onClick={() => append({ value: '' as Address })}
49+
>
50+
Add new address
51+
</AppendButton>
52+
)}
5053
</AddressList>
5154
);
5255
};

features/create-vault/create-vault-form/stages/main-settings/main-settings-action.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
1+
import type { FC } from 'react';
12
import { useFormContext, useFormState } from 'react-hook-form';
23
import { useRouter } from 'next/router';
34

4-
import { CREATE_VAULT_FORM_STEPS } from 'features/create-vault/consts';
55
import { appPaths } from 'consts/routing';
66

7+
import { CREATE_VAULT_FORM_STEPS } from 'features/create-vault/consts';
78
import {
89
ActionButton,
910
ActionButtonContainer,
1011
} from 'features/create-vault/create-vault-form/styles';
1112

12-
import type { FC } from 'react';
1313
import type { CreateVaultSchema } from 'features/create-vault/types';
1414

1515
export const MainSettingsAction: FC = () => {
1616
const router = useRouter();
1717
const { trigger, setValue } = useFormContext<CreateVaultSchema>();
18-
const { isValidating } = useFormState<CreateVaultSchema>();
18+
const { isValidating, isValid } = useFormState<CreateVaultSchema>();
19+
20+
const isSubmitDisabled = isValidating || !isValid;
1921

2022
const handleNavigateToRoot = () => {
2123
void router.push(appPaths.myVaults);
@@ -42,7 +44,7 @@ export const MainSettingsAction: FC = () => {
4244
<ActionButton
4345
type="button"
4446
onClick={handleSetNextStep}
45-
disabled={isValidating}
47+
disabled={isSubmitDisabled}
4648
fullwidth
4749
>
4850
Continue

0 commit comments

Comments
 (0)