1234567891011121314151617use parity_scale_codec::{Decode, Encode};18use scale_info::TypeInfo;19#[cfg(feature = "governance")]20use sp_runtime::transaction_validity::InvalidTransaction;21use sp_runtime::{22 traits::{DispatchInfoOf, SignedExtension},23 transaction_validity::{TransactionValidity, TransactionValidityError, ValidTransaction},24};25use up_common::types::AccountId;2627use crate::RuntimeCall;2829#[derive(Debug, Encode, Decode, PartialEq, Eq, Clone, TypeInfo)]30pub struct DisableIdentityCalls;3132impl SignedExtension for DisableIdentityCalls {33 type AccountId = AccountId;34 type Call = RuntimeCall;35 type AdditionalSigned = ();36 type Pre = ();3738 const IDENTIFIER: &'static str = "DisableIdentityCalls";3940 fn additional_signed(&self) -> Result<Self::AdditionalSigned, TransactionValidityError> {41 Ok(())42 }4344 fn pre_dispatch(45 self,46 who: &Self::AccountId,47 call: &Self::Call,48 info: &DispatchInfoOf<Self::Call>,49 len: usize,50 ) -> Result<Self::Pre, TransactionValidityError> {51 self.validate(who, call, info, len).map(|_| ())52 }5354 fn validate(55 &self,56 _who: &Self::AccountId,57 call: &Self::Call,58 _info: &DispatchInfoOf<Self::Call>,59 _len: usize,60 ) -> TransactionValidity {61 match call {62 #[cfg(feature = "governance")]63 RuntimeCall::Identity(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),64 _ => Ok(ValidTransaction::default()),65 }66 }67}