Skip to content

Commit aefafea

Browse files
committedNov 29, 2024
chore(web): function-to-parse-wagmi-simulate-error
1 parent 8c41958 commit aefafea

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed
 

‎web/src/pages/Courts/CourtDetails/StakePanel/StakeWithdrawButton.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { useCallback, useEffect, useMemo } from "react";
2+
import styled from "styled-components";
23

34
import { useParams } from "react-router-dom";
45
import { useAccount, usePublicClient } from "wagmi";
@@ -19,10 +20,10 @@ import {
1920
} from "hooks/contracts/generated";
2021
import { useCourtDetails } from "hooks/queries/useCourtDetails";
2122
import { isUndefined } from "utils/index";
23+
import { parseWagmiError } from "utils/parseWagmiError";
2224
import { wrapWithToast } from "utils/wrapWithToast";
2325

2426
import { EnsureChain } from "components/EnsureChain";
25-
import styled from "styled-components";
2627

2728
export enum ActionType {
2829
allowance = "allowance",
@@ -154,9 +155,9 @@ const StakeWithdrawButton: React.FC<IActionButton> = ({
154155

155156
useEffect(() => {
156157
if (setStakeError) {
157-
setErrorMsg(setStakeError?.shortMessage ?? setStakeError.message);
158+
setErrorMsg(parseWagmiError(setStakeError));
158159
}
159-
}, [setStakeError]);
160+
}, [setStakeError, setErrorMsg]);
160161

161162
const { text, checkDisabled, onClick } = buttonProps[isAllowance ? ActionType.allowance : action];
162163
return (

‎web/src/pages/Resolver/NavigationButtons/SubmitDisputeButton.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ import {
1414
useSimulateDisputeResolverCreateDisputeForTemplate,
1515
} from "hooks/contracts/generated";
1616
import { isUndefined } from "utils/index";
17+
import { parseWagmiError } from "utils/parseWagmiError";
1718
import { prepareArbitratorExtradata } from "utils/prepareArbitratorExtradata";
1819
import { wrapWithToast } from "utils/wrapWithToast";
1920

2021
import { EnsureChain } from "components/EnsureChain";
21-
import Popup, { PopupType } from "components/Popup";
22-
2322
import { ErrorButtonMessage } from "components/ErrorButtonMessage";
23+
import Popup, { PopupType } from "components/Popup";
2424
import ClosedCircleIcon from "components/StyledIcons/ClosedCircleIcon";
2525

2626
const StyledButton = styled(Button)``;
@@ -66,7 +66,7 @@ const SubmitDisputeButton: React.FC = () => {
6666
const errorMsg = useMemo(() => {
6767
if (insufficientBalance) return "Insufficient balance";
6868
else if (error) {
69-
return error?.shortMessage ?? error.message;
69+
return parseWagmiError(error);
7070
}
7171
return null;
7272
}, [error, insufficientBalance]);

‎web/src/utils/parseWagmiError.ts

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { type SimulateContractErrorType } from "@wagmi/core";
2+
3+
type ExtendedWagmiError = SimulateContractErrorType & { shortMessage: string; metaMessages: string[] };
4+
5+
/**
6+
* @param error
7+
* @description Tries to extract the human readable error message, otherwise reverts to error.message
8+
* @returns Human readable error if possible
9+
*/
10+
export const parseWagmiError = (error: SimulateContractErrorType) => {
11+
const extError = error as ExtendedWagmiError;
12+
13+
const metaMessage = extError?.metaMessages?.[0];
14+
const shortMessage = extError?.shortMessage;
15+
16+
return metaMessage ?? shortMessage ?? error.message;
17+
};

0 commit comments

Comments
 (0)