git.delta.rocks / unique-network / refs/commits / 2360ffd96d6f

difftreelog

feat add property_guard

Daniel Shiposha2022-06-30parent: #66c5541.patch.diff
in: master

1 file changed

addedpallets/nonfungible/src/property_guard.rsdiffbeforeafterboth
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: None31        }32    }3334    pub fn check_collection_admin(&mut self) -> DispatchResult {35        if self.collection_admin_result.is_none() {36            self.collection_admin_result = Some(self.collection.check_is_owner_or_admin(self.sender));37        }3839        self.collection_admin_result.unwrap()40    }4142    pub fn check_token_owner(&mut self) -> DispatchResult {43        if self.token_owner_result.is_none() {44            let is_owned = <PalletStructure<T>>::check_indirectly_owned(45                self.sender.clone(),46                self.collection.id,47                self.token,48                None,49                self.budget,50            )?;5152            let result = if is_owned {53                Ok(())54            } else {55                Err(<CommonError<T>>::NoPermission.into())56            };5758            self.token_owner_result = Some(result);59        }6061        self.token_owner_result.unwrap()62    }63}