Explorer: Show simulation error if no logs are returned (#28416)

This commit is contained in:
Justin Starry 2022-10-16 22:13:44 +08:00 committed by GitHub
parent d42e5725fe
commit d884f08723
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 13 deletions

View File

@ -34,17 +34,17 @@ export function SimulatorCard({ message }: { message: VersionedMessage }) {
<div className="card-header">
<h3 className="card-header-title">Transaction Simulation</h3>
<button className="btn btn-sm d-flex btn-white" onClick={simulate}>
Simulate
{simulationError ? "Retry" : "Simulate"}
</button>
</div>
{simulationError ? (
<div className="card-body">
Failed to run simulation:
<span className="text-warning ms-2">{simulationError}</span>
</div>
) : (
<div className="card-body text-muted">
<ul>
<div className="card-body">
{simulationError ? (
<>
Simulation Failure:
<span className="text-warning ms-2">{simulationError}</span>
</>
) : (
<ul className="text-muted">
<li>
Simulation is free and will run this transaction against the
latest confirmed ledger state.
@ -54,8 +54,8 @@ export function SimulatorCard({ message }: { message: VersionedMessage }) {
be disabled.
</li>
</ul>
</div>
)}
)}
</div>
</div>
);
}
@ -103,12 +103,21 @@ function useSimulator(message: VersionedMessage) {
new VersionedTransaction(message),
{ replaceRecentBlockhash: true }
);
if (resp.value.logs === null) {
throw new Error("Expected to receive logs from simulation");
}
// Prettify logs
setLogs(parseProgramLogs(resp.value.logs, resp.value.err, cluster));
if (
resp.value.logs.length === 0 &&
typeof resp.value.err === "string"
) {
setLogs(null);
setError(resp.value.err);
} else {
// Prettify logs
setLogs(parseProgramLogs(resp.value.logs, resp.value.err, cluster));
}
} catch (err) {
console.error(err);
setLogs(null);