difftreelog
fix use get_or_insert_with
in: master
1 file changed
pallets/nonfungible/src/property_guard.rsdiffbeforeafterboth1use 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}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}