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::{25 TransactionValidity, ValidTransaction, InvalidTransaction, TransactionValidityError,26 },27};2829#[derive(Debug, Encode, Decode, PartialEq, Eq, Clone, TypeInfo)]30pub struct FilterIdentity;3132impl SignedExtension for FilterIdentity {33 type AccountId = AccountId;34 type Call = RuntimeCall;35 type AdditionalSigned = ();36 type Pre = ();3738 const IDENTIFIER: &'static str = "FilterIdentity";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 = "collator-selection")]63 RuntimeCall::Identity(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),64 _ => Ok(ValidTransaction::default()),65 }66 }67}