From 1e45b3e6d23571333435ce46c9d5571fb02d1ae1 Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 20 Jan 2021 23:49:32 -0800 Subject: [PATCH] explorer: introduce transfer with seed instruction card (#14730) --- .../instruction/system/SystemDetailsCard.tsx | 6 ++ .../system/TransferWithSeedDetailsCard.tsx | 82 +++++++++++++++++++ .../components/instruction/system/types.ts | 2 +- 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 explorer/src/components/instruction/system/TransferWithSeedDetailsCard.tsx diff --git a/explorer/src/components/instruction/system/SystemDetailsCard.tsx b/explorer/src/components/instruction/system/SystemDetailsCard.tsx index 267f8a5ecc..12b0d1a3bc 100644 --- a/explorer/src/components/instruction/system/SystemDetailsCard.tsx +++ b/explorer/src/components/instruction/system/SystemDetailsCard.tsx @@ -17,6 +17,7 @@ import { NonceInitializeDetailsCard } from "./NonceInitializeDetailsCard"; import { NonceAdvanceDetailsCard } from "./NonceAdvanceDetailsCard"; import { NonceWithdrawDetailsCard } from "./NonceWithdrawDetailsCard"; import { NonceAuthorizeDetailsCard } from "./NonceAuthorizeDetailsCard"; +import { TransferWithSeedDetailsCard } from "./TransferWithSeedDetailsCard"; import { ParsedInfo } from "validators"; import { coerce } from "superstruct"; import { reportError } from "utils/sentry"; @@ -32,6 +33,7 @@ import { AuthorizeNonceInfo, InitializeNonceInfo, WithdrawNonceInfo, + TransferWithSeedInfo, } from "./types"; type DetailsProps = { @@ -91,6 +93,10 @@ export function SystemDetailsCard(props: DetailsProps) { const info = coerce(parsed.info, InitializeNonceInfo); return ; } + case "transferWithSeed": { + const info = coerce(parsed.info, TransferWithSeedInfo); + return ; + } default: return ; } diff --git a/explorer/src/components/instruction/system/TransferWithSeedDetailsCard.tsx b/explorer/src/components/instruction/system/TransferWithSeedDetailsCard.tsx new file mode 100644 index 0000000000..355536e4ab --- /dev/null +++ b/explorer/src/components/instruction/system/TransferWithSeedDetailsCard.tsx @@ -0,0 +1,82 @@ +import React from "react"; +import { + SystemProgram, + SignatureResult, + ParsedInstruction, +} from "@solana/web3.js"; +import { lamportsToSolString } from "utils"; +import { InstructionCard } from "../InstructionCard"; +import { Copyable } from "components/common/Copyable"; +import { Address } from "components/common/Address"; +import { TransferWithSeedInfo } from "./types"; + +export function TransferWithSeedDetailsCard(props: { + ix: ParsedInstruction; + index: number; + result: SignatureResult; + info: TransferWithSeedInfo; + innerCards?: JSX.Element[]; + childIndex?: number; +}) { + const { ix, index, result, info, innerCards, childIndex } = props; + + return ( + + + Program + +
+ + + + + From Address + +
+ + + + + Destination Address + +
+ + + + + Base Address + +
+ + + + + Transfer Amount (SOL) + {lamportsToSolString(info.lamports)} + + + + Seed + + + {info.sourceSeed} + + + + + + Source Owner + +
+ + + + ); +} diff --git a/explorer/src/components/instruction/system/types.ts b/explorer/src/components/instruction/system/types.ts index 171fed122b..ee34f5a31e 100644 --- a/explorer/src/components/instruction/system/types.ts +++ b/explorer/src/components/instruction/system/types.ts @@ -111,5 +111,5 @@ export const SystemInstructionType = enums([ "withdrawNonce", "authorizeNonce", "initializeNonce", - // "transferWithSeed", TODO: Add support for transfer with seed + "transferWithSeed", ]);