From 4a3a14bb83df85cf5a84165ddc2ecfba48355050 Mon Sep 17 00:00:00 2001 From: devwckd Date: Thu, 19 Dec 2024 17:24:56 -0300 Subject: [PATCH] refac: use data struct on add_global_params_proposal --- pallets/governance/src/lib.rs | 35 ++++------ pallets/governance/src/proposal.rs | 105 +++++++++++++++-------------- 2 files changed, 65 insertions(+), 75 deletions(-) diff --git a/pallets/governance/src/lib.rs b/pallets/governance/src/lib.rs index 9d72122..0f735b9 100644 --- a/pallets/governance/src/lib.rs +++ b/pallets/governance/src/lib.rs @@ -31,6 +31,8 @@ use polkadot_sdk::sp_std::vec::Vec; pub mod pallet { #![allow(clippy::too_many_arguments)] + use proposal::GlobalParamsData; + use super::*; #[pallet::storage] @@ -173,44 +175,31 @@ pub mod pallet { pub fn submit_application( origin: OriginFor, agent_key: AccountIdOf, - data: Vec, + metadata: Vec, ) -> DispatchResult { let payer = ensure_signed(origin)?; - application::submit_application::(payer, agent_key, data) + application::submit_application::(payer, agent_key, metadata) } #[pallet::call_index(8)] #[pallet::weight(0)] pub fn add_global_params_proposal( origin: OriginFor, - min_name_length: u16, - max_name_length: u16, - max_allowed_agents: u16, - max_allowed_weights: u16, - min_weight_stake: BalanceOf, - min_weight_control_fee: u8, - min_staking_fee: u8, - data: Vec, + data: GlobalParamsData, + metadata: Vec, ) -> DispatchResult { let proposer = ensure_signed(origin)?; - proposal::add_global_params_proposal::( - proposer, - min_name_length, - max_name_length, - max_allowed_agents, - max_allowed_weights, - min_weight_stake, - min_weight_control_fee, - min_staking_fee, - data, - ) + proposal::add_global_params_proposal::(proposer, data, metadata) } #[pallet::call_index(9)] #[pallet::weight(0)] - pub fn add_global_custom_proposal(origin: OriginFor, data: Vec) -> DispatchResult { + pub fn add_global_custom_proposal( + origin: OriginFor, + metadata: Vec, + ) -> DispatchResult { let proposer = ensure_signed(origin)?; - proposal::add_global_custom_proposal::(proposer, data) + proposal::add_global_custom_proposal::(proposer, metadata) } #[pallet::call_index(10)] diff --git a/pallets/governance/src/proposal.rs b/pallets/governance/src/proposal.rs index 2b67fc0..3139ba5 100644 --- a/pallets/governance/src/proposal.rs +++ b/pallets/governance/src/proposal.rs @@ -72,15 +72,17 @@ impl Proposal { ::Currency::deposit_creating(&self.proposer, self.proposal_cost); match self.data { - ProposalData::GlobalParams { - min_name_length, - max_name_length, - max_allowed_agents, - max_allowed_weights, - min_weight_stake, - min_weight_control_fee, - min_staking_fee, - } => { + ProposalData::GlobalParams(data) => { + let GlobalParamsData { + min_name_length, + max_name_length, + max_allowed_agents, + max_allowed_weights, + min_weight_stake, + min_weight_control_fee, + min_staking_fee, + } = data; + pallet_torus0::MinNameLength::::set(min_name_length); pallet_torus0::MaxNameLength::::set(max_name_length); pallet_torus0::MaxAllowedAgents::::set(max_allowed_agents); @@ -168,18 +170,49 @@ pub enum ProposalStatus { Expired, } +#[derive(Clone, DebugNoBound, TypeInfo, Decode, Encode, MaxEncodedLen, PartialEq, Eq)] +#[scale_info(skip_type_params(T))] +pub struct GlobalParamsData { + pub min_name_length: u16, + pub max_name_length: u16, + pub max_allowed_agents: u16, + pub max_allowed_weights: u16, + pub min_weight_stake: BalanceOf, + pub min_weight_control_fee: u8, + pub min_staking_fee: u8, +} + +impl GlobalParamsData { + pub fn validate(&self) -> DispatchResult { + ensure!( + self.min_name_length > 1, + crate::Error::::InvalidMinNameLength + ); + ensure!( + (self.max_name_length as u32) < T::MaxAgentNameLengthConstraint::get(), + crate::Error::::InvalidMaxNameLength + ); + ensure!( + self.max_allowed_agents < 2000, + crate::Error::::InvalidMaxAllowedAgents + ); + ensure!( + self.max_allowed_weights < 2000, + crate::Error::::InvalidMaxAllowedWeights + ); + ensure!( + self.min_weight_control_fee > 10, + crate::Error::::InvalidMaxAllowedWeights + ); + + Ok(()) + } +} + #[derive(DebugNoBound, TypeInfo, Decode, Encode, MaxEncodedLen, PartialEq, Eq)] #[scale_info(skip_type_params(T))] pub enum ProposalData { - GlobalParams { - min_name_length: u16, - max_name_length: u16, - max_allowed_agents: u16, - max_allowed_weights: u16, - min_weight_stake: BalanceOf, - min_weight_control_fee: u8, - min_staking_fee: u8, - }, + GlobalParams(GlobalParamsData), GlobalCustom, TransferDaoTreasury { account: AccountIdOf, @@ -208,42 +241,10 @@ pub struct UnrewardedProposal { #[allow(clippy::too_many_arguments)] pub fn add_global_params_proposal( proposer: AccountIdOf, - min_name_length: u16, - max_name_length: u16, - max_allowed_agents: u16, - max_allowed_weights: u16, - min_weight_stake: BalanceOf, - min_weight_control_fee: u8, - min_staking_fee: u8, + data: GlobalParamsData, metadata: Vec, ) -> DispatchResult { - ensure!(min_name_length > 1, crate::Error::::InvalidMinNameLength); - ensure!( - (max_name_length as u32) < T::MaxAgentNameLengthConstraint::get(), - crate::Error::::InvalidMaxNameLength - ); - ensure!( - max_allowed_agents < 2000, - crate::Error::::InvalidMaxAllowedAgents - ); - ensure!( - max_allowed_weights < 2000, - crate::Error::::InvalidMaxAllowedWeights - ); - ensure!( - min_weight_control_fee > 10, - crate::Error::::InvalidMaxAllowedWeights - ); - - let data = ProposalData::::GlobalParams { - min_name_length, - max_name_length, - max_allowed_agents, - max_allowed_weights, - min_weight_stake, - min_weight_control_fee, - min_staking_fee, - }; + let data = ProposalData::::GlobalParams(data); add_proposal::(proposer, data, metadata) }