git.delta.rocks / unique-network / refs/commits / eac070494702

difftreelog

fix use get_or_insert_with

Daniel Shiposha2022-06-30parent: #50f8d1b.patch.diff
in: master

1 file changed

modifiedpallets/nonfungible/src/property_guard.rsdiffbeforeafterboth
before · pallets/nonfungible/src/property_guard.rs
1use super::*;23pub struct PropertyGuard<'a, T: Config> {4	pub sender: &'a T::CrossAccountId,5	pub collection: &'a NonfungibleHandle<T>,6	pub token: TokenId,7	pub is_token_create: bool,8	budget: &'a dyn Budget,910	collection_admin_result: Option<DispatchResult>,11	token_owner_result: Option<DispatchResult>,12}1314impl<'a, T: Config> PropertyGuard<'a, T> {15	pub fn new(16		sender: &'a T::CrossAccountId,17		collection: &'a NonfungibleHandle<T>,18		token: TokenId,19		is_token_create: bool,20		budget: &'a dyn Budget,21	) -> Self {22		Self {23			sender,24			collection,25			token,26			is_token_create,27			budget,2829			collection_admin_result: None,30			token_owner_result: None,31		}32	}3334	pub fn check_collection_admin(&mut self) -> DispatchResult {35		if self.collection_admin_result.is_none() {36			self.collection_admin_result =37				Some(self.collection.check_is_owner_or_admin(self.sender));38		}3940		self.collection_admin_result.unwrap()41	}4243	pub fn check_token_owner(&mut self) -> DispatchResult {44		if self.token_owner_result.is_none() {45			let is_owned = <PalletStructure<T>>::check_indirectly_owned(46				self.sender.clone(),47				self.collection.id,48				self.token,49				None,50				self.budget,51			)?;5253			let result = if is_owned {54				Ok(())55			} else {56				Err(<CommonError<T>>::NoPermission.into())57			};5859			self.token_owner_result = Some(result);60		}6162		self.token_owner_result.unwrap()63	}64}
after · pallets/nonfungible/src/property_guard.rs
1use super::*;23pub struct PropertyGuard<'a, T: Config> {4	pub sender: &'a T::CrossAccountId,5	pub collection: &'a NonfungibleHandle<T>,6	pub token: TokenId,7	pub is_token_create: bool,8	budget: &'a dyn Budget,910	collection_admin_result: Option<DispatchResult>,11	token_owner_result: Option<DispatchResult>,12}1314impl<'a, T: Config> PropertyGuard<'a, T> {15	pub fn new(16		sender: &'a T::CrossAccountId,17		collection: &'a NonfungibleHandle<T>,18		token: TokenId,19		is_token_create: bool,20		budget: &'a dyn Budget,21	) -> Self {22		Self {23			sender,24			collection,25			token,26			is_token_create,27			budget,2829			collection_admin_result: None,30			token_owner_result: None,31		}32	}3334	pub fn check_collection_admin(&mut self) -> DispatchResult {35		*self.collection_admin_result.get_or_insert_with(|| {36			self.collection.check_is_owner_or_admin(self.sender)37		})38	}3940	pub fn check_token_owner(&mut self) -> DispatchResult {41		*self.token_owner_result.get_or_insert_with(|| {42			let is_owned = <PalletStructure<T>>::check_indirectly_owned(43				self.sender.clone(),44				self.collection.id,45				self.token,46				None,47				self.budget,48			)?;4950			if is_owned {51				Ok(())52			} else {53				Err(<CommonError<T>>::NoPermission.into())54			}55		})56	}57}