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