Skip to content

Commit b88c038

Browse files
committed
fix: trivial refetch after tx
1 parent 7a7b24b commit b88c038

9 files changed

Lines changed: 82 additions & 53 deletions

File tree

features/adjustment/mint/hooks/use-mint.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { useReportStatus } from 'features/report';
1414
import { GoToVault } from 'modules/vaults/components/go-to-vault';
1515

1616
export const useMint = () => {
17-
const { activeVault } = useVaultInfo();
17+
const { activeVault, refetchVaultInfo } = useVaultInfo();
1818
const { isReportAvailable, prepareReportCall } = useReportStatus();
1919
const { sendTX, ...rest } = useSendTransaction();
2020

@@ -53,9 +53,19 @@ export const useMint = () => {
5353
}),
5454
);
5555

56+
if (success) {
57+
await refetchVaultInfo();
58+
}
59+
5660
return success;
5761
},
58-
[activeVault?.owner, prepareReportCall, sendTX, isReportAvailable],
62+
[
63+
activeVault?.owner,
64+
refetchVaultInfo,
65+
prepareReportCall,
66+
sendTX,
67+
isReportAvailable,
68+
],
5969
),
6070
...rest,
6171
};

features/adjustment/repay/hooks/use-burn.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
import { GoToVault } from 'modules/vaults/components/go-to-vault';
1616

1717
export const useBurn = () => {
18-
const { activeVault } = useVaultInfo();
18+
const { activeVault, refetchVaultInfo } = useVaultInfo();
1919
const { stETH, wstETH } = useLidoSDK();
2020
const { sendTX, ...rest } = useSendTransaction();
2121

@@ -70,9 +70,13 @@ export const useBurn = () => {
7070
}),
7171
);
7272

73+
if (success) {
74+
await refetchVaultInfo();
75+
}
76+
7377
return success;
7478
},
75-
[activeVault?.owner, sendTX, stETH, wstETH],
79+
[activeVault?.owner, refetchVaultInfo, sendTX, stETH, wstETH],
7680
),
7781
...rest,
7882
};

features/claim/claim-form/hooks/use-claim.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { useSendTransaction, withSuccess } from 'modules/web3';
1010
import { GoToVault } from 'modules/vaults/components/go-to-vault';
1111

1212
export const useClaim = () => {
13-
const { activeVault } = useVaultInfo();
13+
const { activeVault, refetchVaultInfo } = useVaultInfo();
1414
const owner = activeVault?.owner;
1515
const { sendTX, ...rest } = useSendTransaction();
1616

@@ -41,9 +41,13 @@ export const useClaim = () => {
4141
}),
4242
);
4343

44+
if (success) {
45+
await refetchVaultInfo();
46+
}
47+
4448
return success;
4549
},
46-
[owner, sendTX],
50+
[owner, refetchVaultInfo, sendTX],
4751
),
4852
...rest,
4953
};

features/settings/main/contexts/main-settings-provider.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { useVaultInfo } from 'modules/vaults';
1818
import { Address } from 'viem';
1919

2020
export const MainSettingsProvider: FC<PropsWithChildren> = ({ children }) => {
21-
const { activeVault, refetch, isRefetching } = useVaultInfo();
21+
const { activeVault, isRefetching } = useVaultInfo();
2222
const { editMainSettings, retryEvent } = useEditMainSettings();
2323

2424
const formObject = useForm<EditMainSettingsSchema>({
@@ -54,13 +54,9 @@ export const MainSettingsProvider: FC<PropsWithChildren> = ({ children }) => {
5454
async (data: EditMainSettingsSchema): Promise<boolean> => {
5555
const { success } = await editMainSettings(data);
5656

57-
// refetch even when error because some transactions may be successful
58-
// or reverted due to state change
59-
await refetch({ cancelRefetch: true, throwOnError: true });
60-
6157
return success;
6258
},
63-
[editMainSettings, refetch],
59+
[editMainSettings],
6460
);
6561

6662
return (

features/settings/main/hooks/use-edit-main-settings.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const toMethodArg =
3030

3131
export const useEditMainSettings = () => {
3232
const { hasBothConfirmingRoles } = useVaultConfirmingRoles();
33-
const { activeVault } = useVaultInfo();
33+
const { activeVault, refetchVaultInfo } = useVaultInfo();
3434
const owner = activeVault?.owner;
3535

3636
const { sendTX, ...rest } = useSendTransaction();
@@ -138,16 +138,20 @@ export const useEditMainSettings = () => {
138138
});
139139
}
140140

141-
return withSuccess(
141+
const result = withSuccess(
142142
sendTX({
143143
transactions,
144144
mainActionLoadingText: 'Editing vault settings',
145145
mainActionCompleteText: 'Edited vault settings',
146146
renderSuccessContent: GoToVault,
147147
}),
148148
);
149+
150+
await refetchVaultInfo();
151+
152+
return result;
149153
},
150-
[hasBothConfirmingRoles, owner, sendTX],
154+
[hasBothConfirmingRoles, owner, refetchVaultInfo, sendTX],
151155
),
152156
...rest,
153157
};

features/settings/permissions/hooks/use-edit-permissions.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ type EditPermissionsArgs = {
1818
};
1919

2020
export const useEditPermissions = () => {
21-
const { activeVault } = useVaultInfo();
21+
const { activeVault, refetchVaultInfo } = useVaultInfo();
2222
const owner = activeVault?.owner;
2323
const { sendTX, ...rest } = useSendTransaction();
2424

2525
return {
2626
editPermissions: useCallback(
27-
({ toGrant, toRevoke }: EditPermissionsArgs) => {
27+
async ({ toGrant, toRevoke }: EditPermissionsArgs) => {
2828
invariant(owner, '[useEditPermissions] owner is not defined');
2929
const transactions: TransactionEntry[] = [];
3030
if (toGrant.length > 0) {
@@ -53,16 +53,20 @@ export const useEditPermissions = () => {
5353
),
5454
});
5555
}
56-
return withSuccess(
56+
const result = withSuccess(
5757
sendTX({
5858
transactions,
5959
mainActionLoadingText: 'Editing vault permissions',
6060
mainActionCompleteText: 'Vault permissions edited',
6161
renderSuccessContent: GoToVault,
6262
}),
6363
);
64+
65+
await refetchVaultInfo();
66+
67+
return result;
6468
},
65-
[owner, sendTX],
69+
[owner, refetchVaultInfo, sendTX],
6670
),
6771
...rest,
6872
};

features/supply/fund/hooks/use-fund.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { GoToVault } from 'modules/vaults/components/go-to-vault';
1515
import { dashboardAbi } from 'abi/dashboard-abi';
1616

1717
export const useFund = () => {
18-
const { activeVault } = useVaultInfo();
18+
const { activeVault, refetchVaultInfo } = useVaultInfo();
1919
const { sendTX, ...rest } = useSendTransaction();
2020

2121
return {
@@ -42,9 +42,13 @@ export const useFund = () => {
4242
}),
4343
);
4444

45+
if (success) {
46+
await refetchVaultInfo();
47+
}
48+
4549
return success;
4650
},
47-
[activeVault?.owner, sendTX],
51+
[activeVault.owner, refetchVaultInfo, sendTX],
4852
),
4953
...rest,
5054
};

features/supply/withdraw/hooks/use-withdraw.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type WithdrawArgs = {
1717
};
1818

1919
export const useWithdraw = () => {
20-
const { activeVault } = useVaultInfo();
20+
const { activeVault, refetchVaultInfo } = useVaultInfo();
2121
const vaultOwner = activeVault?.owner;
2222
const { sendTX, ...rest } = useSendTransaction();
2323
const { isReportAvailable, prepareReportCall } = useReportStatus();
@@ -41,7 +41,7 @@ export const useWithdraw = () => {
4141
? async () => [await prepareReportCall(), withdrawCall]
4242
: [withdrawCall];
4343

44-
return withSuccess(
44+
const { success } = await withSuccess(
4545
sendTX({
4646
transactions,
4747
forceAtomic: true,
@@ -50,8 +50,20 @@ export const useWithdraw = () => {
5050
renderSuccessContent: GoToVault,
5151
}),
5252
);
53+
54+
if (success) {
55+
await refetchVaultInfo();
56+
}
57+
58+
return success;
5359
},
54-
[vaultOwner, isReportAvailable, sendTX, prepareReportCall],
60+
[
61+
vaultOwner,
62+
isReportAvailable,
63+
refetchVaultInfo,
64+
sendTX,
65+
prepareReportCall,
66+
],
5567
);
5668

5769
return {

modules/vaults/vault-context/index.tsx

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@ import { Address, isAddress } from 'viem';
1111
import invariant from 'tiny-invariant';
1212
import { useSingleVaultData } from 'modules/vaults/hooks/use-vault-data';
1313
import { VaultInfo } from 'types';
14+
import { QueryObserverResult } from '@tanstack/react-query';
1415

1516
type VaultContextType = {
1617
vaultAddress: Address | undefined;
1718
activeVault?: VaultInfo;
18-
isLoadingVault?: boolean;
19-
} & Pick<
20-
ReturnType<typeof useSingleVaultData>,
21-
'refetch' | 'isRefetching' | 'error'
22-
>;
19+
refetchVaultInfo: () => Promise<QueryObserverResult<VaultInfo, Error>>;
20+
isLoadingVault: boolean;
21+
} & Pick<ReturnType<typeof useSingleVaultData>, 'isRefetching' | 'error'>;
2322

2423
const VaultContext = createContext<VaultContextType | null>(null);
2524
VaultContext.displayName = 'VaultContext';
@@ -30,34 +29,26 @@ export const VaultProvider: FC<PropsWithChildren> = ({ children }) => {
3029
const sanitizedVaultAddress = isAddress(vaultAddress)
3130
? vaultAddress
3231
: undefined;
33-
const query = useSingleVaultData(sanitizedVaultAddress);
32+
const { data, error, refetch, isPending, isRefetching } = useSingleVaultData(
33+
sanitizedVaultAddress,
34+
);
3435

3536
useEffect(() => {
36-
if (query.error)
37-
console.error(
38-
`[VaultProvider] error fetching ${vaultAddress}`,
39-
query.error,
40-
);
41-
}, [query.error, vaultAddress]);
37+
if (error)
38+
console.error(`[VaultProvider] error fetching ${vaultAddress}`, error);
39+
}, [error, vaultAddress]);
4240

43-
const contextValue = useMemo<VaultContextType>(
44-
() => ({
41+
const contextValue = useMemo<VaultContextType>(() => {
42+
return {
4543
vaultAddress: sanitizedVaultAddress,
46-
activeVault: query.data,
47-
isLoadingVault: query.isPending,
48-
error: query.error,
49-
refetch: query.refetch,
50-
isRefetching: query.isRefetching,
51-
}),
52-
[
53-
sanitizedVaultAddress,
54-
query.data,
55-
query.isPending,
56-
query.error,
57-
query.refetch,
58-
query.isRefetching,
59-
],
60-
);
44+
activeVault: data,
45+
isLoadingVault: isPending,
46+
error: error,
47+
refetchVaultInfo: () =>
48+
refetch({ cancelRefetch: true, throwOnError: false }),
49+
isRefetching: isRefetching,
50+
};
51+
}, [sanitizedVaultAddress, data, isPending, error, isRefetching, refetch]);
6152

6253
return (
6354
<VaultContext.Provider value={contextValue}>

0 commit comments

Comments
 (0)