From e6a1e9d5a84f593992e2611c434139fe321d577c Mon Sep 17 00:00:00 2001 From: samkim-crypto Date: Sat, 27 Jan 2024 16:36:58 +0900 Subject: [PATCH] add display for the group extensions --- token/cli/src/output.rs | 83 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/token/cli/src/output.rs b/token/cli/src/output.rs index a5cb902b23a..97964c3b51f 100644 --- a/token/cli/src/output.rs +++ b/token/cli/src/output.rs @@ -8,8 +8,9 @@ use { parse_token_extension::{ UiConfidentialTransferAccount, UiConfidentialTransferFeeAmount, UiConfidentialTransferFeeConfig, UiConfidentialTransferMint, UiCpiGuard, - UiDefaultAccountState, UiExtension, UiInterestBearingConfig, UiMemoTransfer, - UiMetadataPointer, UiMintCloseAuthority, UiPermanentDelegate, UiTokenMetadata, + UiDefaultAccountState, UiExtension, UiGroupMemberPointer, UiGroupPointer, + UiInterestBearingConfig, UiMemoTransfer, UiMetadataPointer, UiMintCloseAuthority, + UiPermanentDelegate, UiTokenGroup, UiTokenGroupMember, UiTokenMetadata, UiTransferFeeAmount, UiTransferFeeConfig, UiTransferHook, UiTransferHookAccount, }, }, @@ -906,6 +907,84 @@ fn display_ui_extension( } Ok(()) } + UiExtension::GroupPointer(UiGroupPointer { + authority, + group_address, + }) => { + writeln!(f, " {}", style("Group Pointer:").bold())?; + writeln_name_value( + f, + " Authority:", + if let Some(pubkey) = authority { + pubkey + } else { + "Disabled" + }, + )?; + writeln_name_value( + f, + " Group address:", + if let Some(pubkey) = group_address { + pubkey + } else { + "Disabled" + }, + ) + } + UiExtension::GroupMemberPointer(UiGroupMemberPointer { + authority, + member_address, + }) => { + writeln!(f, " {}", style("Group Member Pointer:").bold())?; + writeln_name_value( + f, + " Authority:", + if let Some(pubkey) = authority { + pubkey + } else { + "Disabled" + }, + )?; + writeln_name_value( + f, + " Member address:", + if let Some(pubkey) = member_address { + pubkey + } else { + "Disabled" + }, + ) + } + UiExtension::TokenGroup(UiTokenGroup { + update_authority, + mint, + size, + max_size, + }) => { + writeln!(f, " {}", style("Token Group:").bold())?; + writeln_name_value( + f, + " Update Authority:", + if let Some(pubkey) = update_authority { + pubkey + } else { + "Disabled" + }, + )?; + writeln_name_value(f, " Mint:", mint)?; + writeln_name_value(f, " Size:", &format!("{size}"))?; + writeln_name_value(f, " Max Size:", &format!("{max_size}")) + } + UiExtension::TokenGroupMember(UiTokenGroupMember { + mint, + group, + member_number, + }) => { + writeln!(f, " {}", style("Token Group Member:").bold())?; + writeln_name_value(f, " Mint:", mint)?; + writeln_name_value(f, " Group:", group)?; + writeln_name_value(f, " Member Number:", &format!("{member_number}")) + } // ExtensionType::Uninitialized is a hack to ensure a mint/account is never the same length // as a multisig UiExtension::Uninitialized => Ok(()),