From 8e195240f35d4e00cf83a3b7c2b696a21f077113 Mon Sep 17 00:00:00 2001 From: FroVolod Date: Thu, 29 Jun 2023 22:09:14 +0300 Subject: [PATCH] refactored ManageStorageDeposit --- src/commands/account/storage_management/mod.rs | 14 ++++++++++++++ .../account/storage_management/storage_deposit.rs | 15 ++++++++------- .../storage_management/storage_withdraw.rs | 14 ++++++++++++++ .../storage_management/view_storage_balance.rs | 14 ++++++++++++++ src/main.rs | 6 +++--- 5 files changed, 53 insertions(+), 10 deletions(-) diff --git a/src/commands/account/storage_management/mod.rs b/src/commands/account/storage_management/mod.rs index af2e9f1e0..b3faa6bf2 100644 --- a/src/commands/account/storage_management/mod.rs +++ b/src/commands/account/storage_management/mod.rs @@ -8,6 +8,7 @@ mod view_storage_balance; #[interactive_clap(input_context = crate::GlobalContext)] #[interactive_clap(output_context = ContractContext)] pub struct Contract { + #[interactive_clap(skip_default_input_arg)] /// Which contract account ID do you want to manage the storage deposit for? contract_account_id: crate::types::account_id::AccountId, #[interactive_clap(subcommand)] @@ -41,6 +42,19 @@ pub type GetContractAccountId = std::sync::Arc< ) -> color_eyre::eyre::Result, >; +impl Contract { + pub fn input_contract_account_id( + context: &crate::GlobalContext, + ) -> color_eyre::eyre::Result> { + Ok(Some( + crate::common::input_account_id_from_used_account_list( + context, + "Which contract account ID do you want to manage the storage deposit for?", + )?, + )) + } +} + #[derive(Debug, EnumDiscriminants, Clone, interactive_clap::InteractiveClap)] #[interactive_clap(context = ContractContext)] #[strum_discriminants(derive(EnumMessage, EnumIter))] diff --git a/src/commands/account/storage_management/storage_deposit.rs b/src/commands/account/storage_management/storage_deposit.rs index c6e5b7322..c5d633143 100644 --- a/src/commands/account/storage_management/storage_deposit.rs +++ b/src/commands/account/storage_management/storage_deposit.rs @@ -1,6 +1,6 @@ use std::str::FromStr; -use inquire::{CustomType, Select}; +use inquire::Select; #[derive(Debug, Clone, interactive_clap::InteractiveClap)] #[interactive_clap(input_context = super::ContractContext)] @@ -43,8 +43,10 @@ impl DepositArgs { context: &super::ContractContext, ) -> color_eyre::eyre::Result> { loop { - let receiver_account_id: crate::types::account_id::AccountId = - CustomType::new("Which account ID do you want to add a deposit to?").prompt()?; + let receiver_account_id = crate::common::input_account_id_from_used_account_list( + &context.global_context, + "Which account ID do you want to add a deposit to?", + )?; if context.global_context.offline { return Ok(Some(receiver_account_id)); @@ -163,11 +165,10 @@ impl SignerAccountId { context: &DepositArgsContext, ) -> color_eyre::eyre::Result> { Ok(Some( - CustomType::::new( + crate::common::input_account_id_from_used_account_list( + &context.global_context, "What is the signer account ID?", - ) - .with_default(context.receiver_account_id.clone().into()) - .prompt()?, + )?, )) } } diff --git a/src/commands/account/storage_management/storage_withdraw.rs b/src/commands/account/storage_management/storage_withdraw.rs index 473d81c97..ebd250e33 100644 --- a/src/commands/account/storage_management/storage_withdraw.rs +++ b/src/commands/account/storage_management/storage_withdraw.rs @@ -35,6 +35,7 @@ impl WithdrawArgsContext { #[interactive_clap(input_context = WithdrawArgsContext)] #[interactive_clap(output_context = SignerAccountIdContext)] pub struct SignerAccountId { + #[interactive_clap(skip_default_input_arg)] /// What is the signer account ID? signer_account_id: crate::types::account_id::AccountId, #[interactive_clap(named_arg)] @@ -108,3 +109,16 @@ impl From for crate::commands::ActionContext { item.0 } } + +impl SignerAccountId { + pub fn input_signer_account_id( + context: &WithdrawArgsContext, + ) -> color_eyre::eyre::Result> { + Ok(Some( + crate::common::input_account_id_from_used_account_list( + &context.global_context, + "What is the signer account ID?", + )?, + )) + } +} diff --git a/src/commands/account/storage_management/view_storage_balance.rs b/src/commands/account/storage_management/view_storage_balance.rs index 569fc277f..4c12d27c8 100644 --- a/src/commands/account/storage_management/view_storage_balance.rs +++ b/src/commands/account/storage_management/view_storage_balance.rs @@ -7,6 +7,7 @@ const STORAGE_COST_PER_BYTE: u128 = 10u128.pow(19); #[interactive_clap(input_context = super::ContractContext)] #[interactive_clap(output_context = AccountContext)] pub struct Account { + #[interactive_clap(skip_default_input_arg)] /// What is your account ID? account_id: crate::types::account_id::AccountId, #[interactive_clap(named_arg)] @@ -78,3 +79,16 @@ impl From for crate::network_view_at_block::ArgsForViewContext { item.0 } } + +impl Account { + pub fn input_account_id( + context: &super::ContractContext, + ) -> color_eyre::eyre::Result> { + Ok(Some( + crate::common::input_account_id_from_used_account_list( + &context.global_context, + "What is your account ID?", + )?, + )) + } +} diff --git a/src/main.rs b/src/main.rs index 476e234a3..f7a088cf3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -54,9 +54,9 @@ impl From for crate::GlobalContext { fn main() -> crate::common::CliResult { let config = crate::common::get_config_toml()?; - if !crate::common::is_used_account_list_exist(&config.credentials_home_dir) { - crate::common::create_used_account_list_from_keychain(&config.credentials_home_dir)?; - } + // if !crate::common::is_used_account_list_exist(&config.credentials_home_dir) { + // crate::common::create_used_account_list_from_keychain(&config.credentials_home_dir)?; + // } color_eyre::install()?;