Show zero balance for missing accounts
This commit is contained in:
parent
aec0d9cca0
commit
35814e77cb
|
@ -109,6 +109,10 @@ const renderAccountRow = (account: Account) => {
|
|||
let statusText;
|
||||
let statusClass;
|
||||
switch (account.status) {
|
||||
case Status.NotFound:
|
||||
statusClass = "danger";
|
||||
statusText = "Not Found";
|
||||
break;
|
||||
case Status.CheckFailed:
|
||||
statusClass = "danger";
|
||||
statusText = "Error";
|
||||
|
@ -131,14 +135,17 @@ const renderAccountRow = (account: Account) => {
|
|||
}
|
||||
|
||||
let data = "-";
|
||||
let balance = "-";
|
||||
let owner = "-";
|
||||
if (account.details) {
|
||||
data = `${account.details.space}`;
|
||||
balance = `◎${(1.0 * account.details.lamports) / LAMPORTS_PER_SOL}`;
|
||||
owner = `${account.details.owner.toBase58()}`;
|
||||
}
|
||||
|
||||
let balance = "-";
|
||||
if (account.lamports !== undefined) {
|
||||
balance = `◎${(1.0 * account.lamports) / LAMPORTS_PER_SOL}`;
|
||||
}
|
||||
|
||||
return (
|
||||
<tr key={account.id}>
|
||||
<td>
|
||||
|
|
|
@ -6,6 +6,7 @@ import { useCluster, ClusterStatus } from "./cluster";
|
|||
export enum Status {
|
||||
Checking,
|
||||
CheckFailed,
|
||||
NotFound,
|
||||
Success
|
||||
}
|
||||
|
||||
|
@ -17,7 +18,6 @@ enum Source {
|
|||
export interface Details {
|
||||
executable: boolean;
|
||||
owner: PublicKey;
|
||||
lamports: number;
|
||||
space: number;
|
||||
}
|
||||
|
||||
|
@ -26,6 +26,7 @@ export interface Account {
|
|||
status: Status;
|
||||
source: Source;
|
||||
pubkey: PublicKey;
|
||||
lamports?: number;
|
||||
details?: Details;
|
||||
}
|
||||
|
||||
|
@ -44,6 +45,7 @@ interface Update {
|
|||
type: ActionType.Update;
|
||||
address: string;
|
||||
status: Status;
|
||||
lamports?: number;
|
||||
details?: Details;
|
||||
}
|
||||
|
||||
|
@ -78,7 +80,8 @@ function reducer(state: State, action: Action): State {
|
|||
account = {
|
||||
...account,
|
||||
status: action.status,
|
||||
details: action.details
|
||||
details: action.details,
|
||||
lamports: action.lamports
|
||||
};
|
||||
const accounts = {
|
||||
...state.accounts,
|
||||
|
@ -169,22 +172,28 @@ export async function fetchAccountInfo(
|
|||
|
||||
let status;
|
||||
let details;
|
||||
let lamports;
|
||||
try {
|
||||
const result = await new Connection(url).getAccountInfo(
|
||||
new PublicKey(address)
|
||||
);
|
||||
lamports = result.lamports;
|
||||
details = {
|
||||
space: result.data.length,
|
||||
executable: result.executable,
|
||||
lamports: result.lamports,
|
||||
owner: result.owner
|
||||
};
|
||||
status = Status.Success;
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch account info", error);
|
||||
status = Status.CheckFailed;
|
||||
if (error.toString() === "Error: Invalid request") {
|
||||
lamports = 0;
|
||||
status = Status.NotFound;
|
||||
} else {
|
||||
console.error("Failed to fetch account info", error);
|
||||
status = Status.CheckFailed;
|
||||
}
|
||||
}
|
||||
dispatch({ type: ActionType.Update, status, details, address });
|
||||
dispatch({ type: ActionType.Update, status, lamports, details, address });
|
||||
}
|
||||
|
||||
export function useAccounts() {
|
||||
|
|
Loading…
Reference in New Issue