File tree 1 file changed +23
-1
lines changed
1 file changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -36,7 +36,7 @@ use frame_support::{
36
36
pallet_prelude:: * ,
37
37
require_transactional,
38
38
traits:: { Contains , Get } ,
39
- Parameter ,
39
+ transactional , Parameter ,
40
40
} ;
41
41
use frame_system:: { ensure_signed, pallet_prelude:: * } ;
42
42
use sp_runtime:: {
@@ -516,6 +516,28 @@ pub mod module {
516
516
}
517
517
518
518
impl < T : Config > Pallet < T > {
519
+ #[ transactional]
520
+ fn transfer_assets_delay_check ( who : & T :: AccountId , assets : Assets ) -> DispatchResult {
521
+ let rate_limiter_id = T :: RateLimiterId :: get ( ) ;
522
+ let asset_len = assets. len ( ) ;
523
+ for i in 0 ..asset_len {
524
+ let asset = assets. get ( i) . ok_or ( Error :: < T > :: AssetIndexNonExistent ) ?;
525
+
526
+ // per asset check
527
+ let amount = match asset. fun {
528
+ Fungibility :: Fungible ( amount) => amount,
529
+ Fungibility :: NonFungible ( _) => 1 ,
530
+ } ;
531
+
532
+ // try consume quota of the rate limiter.
533
+ // NOTE: use AssetId as the key, use AccountId as whitelist filter key.
534
+ T :: RateLimiter :: try_consume ( rate_limiter_id, asset. id . clone ( ) , amount, Some ( who) )
535
+ . map_err ( |_| Error :: < T > :: RateLimited ) ?;
536
+ }
537
+
538
+ Ok ( ( ) )
539
+ }
540
+
519
541
fn do_transfer (
520
542
who : T :: AccountId ,
521
543
currency_id : T :: CurrencyId ,
You can’t perform that action at this time.
0 commit comments