Skip to content

Commit

Permalink
Fixed error decoding and message throwing
Browse files Browse the repository at this point in the history
  • Loading branch information
theKosmoss committed Jan 17, 2025
1 parent 75f4643 commit c40f9f4
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions src/utils/ApiError.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,10 @@ export async function handleRPCError(e: unknown) {
);
const response = await remoteAttempt;
const data = await response.json();
return new Error(
`error: ${e?.shortMessage} | 4byte resolved this as: ${JSON.stringify(data.results, null, 2)}`
);
return new Error(data.results[0].text_signature);
} else return e;
}
console.error(e);
return new Error(`error: ${errorName}: ${revertError.shortMessage}`);
return new Error(errorName);
}
if (revertError instanceof ContractFunctionExecutionError) {
const errorName = revertError.name;
Expand All @@ -61,7 +58,7 @@ export async function handleRPCError(e: unknown) {
);
const response = await remoteAttempt;
const data = await response.json();
return new Error(`error: ${e?.message} | 4byte: ${JSON.stringify(data.results, null, 2)}`);
return new Error(data.results[0].text_signature);
} else return e;
}
}
Expand All @@ -71,16 +68,25 @@ export async function handleRPCError(e: unknown) {
const remoteAttempt = fetch(`https://www.4byte.directory/api/v1/signatures/?hex_signature=${cause.signature}`);
const response = await remoteAttempt;
const data = await response.json();
return new Error(`error: ${e?.message} | 4byte: ${JSON.stringify(data.results, null, 2)}`);
return new Error(data.results[0].text_signature);
} else return e;
}
const cause = e?.cause as { signature?: string };
if (cause?.signature) {
const remoteAttempt = fetch(`https://www.4byte.directory/api/v1/signatures/?hex_signature=${cause.signature}`);
const response = await remoteAttempt;
const data = await response.json();
return new Error(`error: ${e?.message} | 4byte: ${JSON.stringify(data.results, null, 2)}`);
return new Error(data.results[0].text_signature);
}
}

if (e && typeof e === 'object' && 'cause' in e && e.cause &&
typeof e.cause === 'object' && 'signature' in e.cause) {
const remoteAttempt = fetch(`https://www.4byte.directory/api/v1/signatures/?hex_signature=${(e.cause as { signature: string }).signature}`);
const response = await remoteAttempt;
const data = await response.json();
return new Error(data.results[0].text_signature);
}

throw e;
}

0 comments on commit c40f9f4

Please sign in to comment.