From 64965b2ec4664b16760c35889b52aabe3d3c58a6 Mon Sep 17 00:00:00 2001 From: Daniel Shiposha Date: Mon, 04 Jul 2022 08:53:32 +0000 Subject: [PATCH] fix: add PropertyGuardData --- --- a/pallets/nonfungible/src/erc.rs +++ b/pallets/nonfungible/src/erc.rs @@ -37,7 +37,7 @@ use crate::{ AccountBalance, Config, CreateItemData, NonfungibleHandle, Pallet, TokenData, TokensMinted, - SelfWeightOf, weights::WeightInfo, TokenProperties, property_guard::PropertyGuard, + SelfWeightOf, weights::WeightInfo, TokenProperties, property_guard::*, }; #[solidity_interface(name = "TokenProperties")] @@ -83,12 +83,18 @@ let value = value.try_into().map_err(|_| "value too long")?; let is_token_create = false; - let budget = self + let nesting_budget = self .recorder .weight_calls_budget(>::find_parent()); let mut guard = - PropertyGuard::new(&caller, self, TokenId(token_id), is_token_create, &budget); + PropertyGuard::new(PropertyGuardData { + sender: &caller, + collection: self, + token_id: TokenId(token_id), + is_token_create, + nesting_budget: &nesting_budget + }); >::set_token_property(Property { key, value }, &mut guard) .map_err(dispatch_to_evm::) @@ -102,12 +108,18 @@ .map_err(|_| "key too long")?; let is_token_create = false; - let budget = self + let nesting_budget = self .recorder .weight_calls_budget(>::find_parent()); let mut guard = - PropertyGuard::new(&caller, self, TokenId(token_id), is_token_create, &budget); + PropertyGuard::new(PropertyGuardData { + sender: &caller, + collection: self, + token_id: TokenId(token_id), + is_token_create, + nesting_budget: &nesting_budget + }); >::delete_token_property(key, &mut guard).map_err(dispatch_to_evm::) } --- a/pallets/nonfungible/src/lib.rs +++ b/pallets/nonfungible/src/lib.rs @@ -494,7 +494,7 @@ ) -> DispatchResult { Self::check_token_change_permission(&property.key, guard)?; - >::try_mutate((guard.collection.id, guard.token), |properties| { + >::try_mutate((guard.collection.id, guard.token_id), |properties| { let property = property.clone(); properties.try_set(property.key, property.value) }) @@ -502,7 +502,7 @@ >::deposit_event(CommonEvent::TokenPropertySet( guard.collection.id, - guard.token, + guard.token_id, property.key, )); @@ -518,13 +518,13 @@ is_token_create: bool, nesting_budget: &dyn Budget, ) -> DispatchResult { - let mut guard = PropertyGuard::new( + let mut guard = PropertyGuard::new(PropertyGuardData { sender, collection, token_id, is_token_create, nesting_budget, - ); + }); for property in properties { Self::set_token_property(property, &mut guard)?; @@ -539,14 +539,14 @@ ) -> DispatchResult { Self::check_token_change_permission(&property_key, guard)?; - >::try_mutate((guard.collection.id, guard.token), |properties| { + >::try_mutate((guard.collection.id, guard.token_id), |properties| { properties.remove(&property_key) }) .map_err(>::from)?; >::deposit_event(CommonEvent::TokenPropertyDeleted( guard.collection.id, - guard.token, + guard.token_id, property_key, )); @@ -562,7 +562,7 @@ .cloned() .unwrap_or_else(PropertyPermission::none); - let is_property_exists = TokenProperties::::get((guard.collection.id, guard.token)) + let is_property_exists = TokenProperties::::get((guard.collection.id, guard.token_id)) .get(property_key) .is_some(); @@ -606,13 +606,13 @@ ) -> DispatchResult { let is_token_create = false; - let mut guard = PropertyGuard::new( + let mut guard = PropertyGuard::new(PropertyGuardData { sender, collection, token_id, is_token_create, nesting_budget, - ); + }); for key in property_keys { Self::delete_token_property(key, &mut guard)?; --- a/pallets/nonfungible/src/property_guard.rs +++ b/pallets/nonfungible/src/property_guard.rs @@ -3,28 +3,30 @@ pub struct PropertyGuard<'a, T: Config> { pub sender: &'a T::CrossAccountId, pub collection: &'a NonfungibleHandle, - pub token: TokenId, + pub token_id: TokenId, pub is_token_create: bool, - budget: &'a dyn Budget, + nesting_budget: &'a dyn Budget, collection_admin_result: Option, token_owner_result: Option, } +pub struct PropertyGuardData<'a, T: Config> { + pub sender: &'a T::CrossAccountId, + pub collection: &'a NonfungibleHandle, + pub token_id: TokenId, + pub is_token_create: bool, + pub nesting_budget: &'a dyn Budget, +} + impl<'a, T: Config> PropertyGuard<'a, T> { - pub fn new( - sender: &'a T::CrossAccountId, - collection: &'a NonfungibleHandle, - token: TokenId, - is_token_create: bool, - budget: &'a dyn Budget, - ) -> Self { + pub fn new(data: PropertyGuardData<'a, T>) -> Self { Self { - sender, - collection, - token, - is_token_create, - budget, + sender: data.sender, + collection: data.collection, + token_id: data.token_id, + is_token_create: data.is_token_create, + nesting_budget: data.nesting_budget, collection_admin_result: None, token_owner_result: None, @@ -42,9 +44,9 @@ let is_owned = >::check_indirectly_owned( self.sender.clone(), self.collection.id, - self.token, + self.token_id, None, - self.budget, + self.nesting_budget, )?; if is_owned { -- gitstuff