1234567891011121314151617use scale_info::TypeInfo;18use codec::{Encode, Decode};19use up_common::types::AccountId;20use crate::RuntimeCall;2122use sp_runtime::{23 traits::{DispatchInfoOf, SignedExtension},24 transaction_validity::{TransactionValidity, ValidTransaction, TransactionValidityError},25};2627#[cfg(feature = "collator-selection")]28use sp_runtime::transaction_validity::InvalidTransaction;2930#[derive(Debug, Encode, Decode, PartialEq, Eq, Clone, TypeInfo)]31pub struct DisableIdentityCalls;3233impl SignedExtension for DisableIdentityCalls {34 type AccountId = AccountId;35 type Call = RuntimeCall;36 type AdditionalSigned = ();37 type Pre = ();3839 const IDENTIFIER: &'static str = "DisableIdentityCalls";4041 fn additional_signed(&self) -> Result<Self::AdditionalSigned, TransactionValidityError> {42 Ok(())43 }4445 fn pre_dispatch(46 self,47 who: &Self::AccountId,48 call: &Self::Call,49 info: &DispatchInfoOf<Self::Call>,50 len: usize,51 ) -> Result<Self::Pre, TransactionValidityError> {52 self.validate(who, call, info, len).map(|_| ())53 }5455 fn validate(56 &self,57 _who: &Self::AccountId,58 call: &Self::Call,59 _info: &DispatchInfoOf<Self::Call>,60 _len: usize,61 ) -> TransactionValidity {62 match call {63 #[cfg(feature = "collator-selection")]64 RuntimeCall::Identity(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),65 _ => Ok(ValidTransaction::default()),66 }67 }68}