Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions cli/src/command/initiate_transfer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use clap::Args;
use colored::Colorize;
use dialoguer::Confirm;
use indicatif::ProgressBar;
use solana_sdk::commitment_config::CommitmentConfig;
use solana_sdk::compute_budget::ComputeBudgetInstruction;
use solana_sdk::instruction::Instruction;
use solana_sdk::message::v0::Message;
Expand All @@ -20,6 +21,7 @@ use squads_multisig::anchor_lang::{AnchorSerialize, InstructionData};
use squads_multisig::client::get_multisig;
use squads_multisig::pda::{get_proposal_pda, get_transaction_pda, get_vault_pda};
use squads_multisig::solana_rpc_client::nonblocking::rpc_client::RpcClient;
use squads_multisig::solana_rpc_client_api::request::RpcError;
use squads_multisig::squads_multisig_program::accounts::ProposalCreate as ProposalCreateAccounts;
use squads_multisig::squads_multisig_program::accounts::VaultTransactionCreate as VaultTransactionCreateAccounts;
use squads_multisig::squads_multisig_program::anchor_lang::ToAccountMetas;
Expand Down Expand Up @@ -365,8 +367,12 @@ async fn resolve_recipient_token_account(
token_mint: &Pubkey,
token_program_id: &Pubkey,
) -> eyre::Result<ResolvedRecipient> {
match rpc_client.get_account(recipient_pubkey).await {
Ok(account_info) => {
match rpc_client
.get_account_with_commitment(recipient_pubkey, CommitmentConfig::confirmed())
.await
.map(|resp| resp.value)
{
Ok(Some(account_info)) => {
// Check if the account is owned by the token program
if account_info.owner == *token_program_id {
// Try to deserialize as a token account to validate it's for the correct mint
Expand Down Expand Up @@ -409,7 +415,7 @@ async fn resolve_recipient_token_account(
})
}
}
Err(_) => {
Ok(None) => {
// Account doesn't exist, derive the ATA
Ok(ResolvedRecipient {
token_account: get_associated_token_address_with_program_id(
Expand All @@ -420,5 +426,11 @@ async fn resolve_recipient_token_account(
authority: *recipient_pubkey,
})
}

Err(e) => Err(eyre::eyre!(
"Failed to get account {}: {}",
recipient_pubkey,
e
)),
}
}
Loading