create-eth
Version:
Create a Scaffold-ETH-2 app
36 lines (29 loc) • 1.1 kB
text/typescript
import { BaseError as BaseViemError, ContractFunctionRevertedError } from "viem";
/**
* Parses an viem/wagmi error to get a displayable string
* @param e - error object
* @returns parsed error string
*/
export const getParsedError = (error: any): string => {
const parsedError = error?.walk ? error.walk() : error;
if (parsedError instanceof BaseViemError) {
if (parsedError.details) {
return parsedError.details;
}
if (parsedError.shortMessage) {
if (
parsedError instanceof ContractFunctionRevertedError &&
parsedError.data &&
parsedError.data.errorName !== "Error"
) {
const customErrorArgs = parsedError.data.args?.toString() ?? "";
return `${parsedError.shortMessage.replace(/reverted\.$/, "reverted with the following reason:")}\n${
parsedError.data.errorName
}(${customErrorArgs})`;
}
return parsedError.shortMessage;
}
return parsedError.message ?? parsedError.name ?? "An unknown error occurred";
}
return parsedError?.message ?? "An unknown error occurred";
};