Initial commit with 🏗️ Scaffold-ETH 2 @ 1.0.2
This commit is contained in:
35
packages/nextjs/utils/scaffold-eth/getParsedError.ts
Normal file
35
packages/nextjs/utils/scaffold-eth/getParsedError.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
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";
|
||||
};
|
||||
Reference in New Issue
Block a user