From 8f51c2d985ef6a751ece6900264134b32926ba49 Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Thu, 16 Jun 2022 15:51:45 +0100 Subject: [PATCH] explorer: add support for upgrade nonce ix (#26007) --- .../instruction/system/SystemDetailsCard.tsx | 6 +++ .../system/UpgradeNonceDetailsCard.tsx | 45 +++++++++++++++++++ .../components/instruction/system/types.ts | 6 +++ 3 files changed, 57 insertions(+) create mode 100644 explorer/src/components/instruction/system/UpgradeNonceDetailsCard.tsx diff --git a/explorer/src/components/instruction/system/SystemDetailsCard.tsx b/explorer/src/components/instruction/system/SystemDetailsCard.tsx index aa508159e3..1be4d2c714 100644 --- a/explorer/src/components/instruction/system/SystemDetailsCard.tsx +++ b/explorer/src/components/instruction/system/SystemDetailsCard.tsx @@ -18,6 +18,7 @@ import { NonceAdvanceDetailsCard } from "./NonceAdvanceDetailsCard"; import { NonceWithdrawDetailsCard } from "./NonceWithdrawDetailsCard"; import { NonceAuthorizeDetailsCard } from "./NonceAuthorizeDetailsCard"; import { TransferWithSeedDetailsCard } from "./TransferWithSeedDetailsCard"; +import { UpgradeNonceDetailsCard } from "./UpgradeNonceDetailsCard"; import { ParsedInfo } from "validators"; import { create } from "superstruct"; import { reportError } from "utils/sentry"; @@ -34,6 +35,7 @@ import { InitializeNonceInfo, WithdrawNonceInfo, TransferWithSeedInfo, + UpgradeNonceInfo, } from "./types"; type DetailsProps = { @@ -97,6 +99,10 @@ export function SystemDetailsCard(props: DetailsProps) { const info = create(parsed.info, TransferWithSeedInfo); return ; } + case "upgradeNonce": { + const info = create(parsed.info, UpgradeNonceInfo); + return ; + } default: return ; } diff --git a/explorer/src/components/instruction/system/UpgradeNonceDetailsCard.tsx b/explorer/src/components/instruction/system/UpgradeNonceDetailsCard.tsx new file mode 100644 index 0000000000..5e4ef09826 --- /dev/null +++ b/explorer/src/components/instruction/system/UpgradeNonceDetailsCard.tsx @@ -0,0 +1,45 @@ +import React from "react"; +import { + SystemProgram, + SignatureResult, + ParsedInstruction, +} from "@solana/web3.js"; +import { InstructionCard } from "../InstructionCard"; +import { Address } from "components/common/Address"; +import { UpgradeNonceInfo } from "./types"; + +export function UpgradeNonceDetailsCard(props: { + ix: ParsedInstruction; + index: number; + result: SignatureResult; + info: UpgradeNonceInfo; + innerCards?: JSX.Element[]; + childIndex?: number; +}) { + const { ix, index, result, info, innerCards, childIndex } = props; + + return ( + + + Program + +
+ + + + + Nonce Address + +
+ + + + ); +} diff --git a/explorer/src/components/instruction/system/types.ts b/explorer/src/components/instruction/system/types.ts index e503630351..17042c8d4f 100644 --- a/explorer/src/components/instruction/system/types.ts +++ b/explorer/src/components/instruction/system/types.ts @@ -96,6 +96,11 @@ export const TransferWithSeedInfo = type({ sourceOwner: PublicKeyFromString, }); +export type UpgradeNonceInfo = Infer; +export const UpgradeNonceInfo = type({ + nonceAccount: PublicKeyFromString, +}); + export type SystemInstructionType = Infer; export const SystemInstructionType = enums([ "createAccount", @@ -110,4 +115,5 @@ export const SystemInstructionType = enums([ "authorizeNonce", "initializeNonce", "transferWithSeed", + "upgradeNonce", ]);