difftreelog
refactor modify_token_properties
in: master
1 file changed
pallets/nonfungible/src/lib.rsdiffbeforeafterboth86 NonfungibleItemsHaveNoAmount,86 NonfungibleItemsHaveNoAmount,87 /// Unable to burn NFT with children87 /// Unable to burn NFT with children88 CantBurnNftWithChildren,88 CantBurnNftWithChildren,89 /// Unable to create an empty property90 UnableToCreateEmptyProperty,91 }89 }929093 #[pallet::config]91 #[pallet::config]496 is_token_create: bool,494 is_token_create: bool,497 nesting_budget: &dyn Budget,495 nesting_budget: &dyn Budget,498 ) -> DispatchResult {496 ) -> DispatchResult {499 let mut collection_admin_result = None;497 let mut collection_admin_status = None;500 let mut token_owner_result = None;498 let mut token_owner_result = None;501499502 let mut check_collection_admin = || {500 let mut is_collection_admin = || {503 *collection_admin_result501 *collection_admin_status504 .get_or_insert_with(|| collection.check_is_owner_or_admin(sender))502 .get_or_insert_with(|| collection.is_owner_or_admin(sender))505 };503 };506504507 let mut check_token_owner = || {505 let mut is_token_owner = || {508 *token_owner_result.get_or_insert_with(|| {506 *token_owner_result.get_or_insert_with(|| -> Result<bool, DispatchError> {509 let is_owned = <PalletStructure<T>>::check_indirectly_owned(507 let is_owned = <PalletStructure<T>>::check_indirectly_owned(510 sender.clone(),508 sender.clone(),511 collection.id,509 collection.id,514 nesting_budget,512 nesting_budget,515 )?;513 )?;516514517 if is_owned {518 Ok(())515 Ok(is_owned)519 } else {520 Err(<CommonError<T>>::NoPermission.into())521 }522 })516 })523 };517 };524518543 ..537 ..544 } => {538 } => {545 //TODO: investigate threats during public minting.539 //TODO: investigate threats during public minting.546 if is_token_create && (collection_admin || token_owner) {540 if is_token_create && (collection_admin || token_owner) && value.is_some() {541 // Pass547 if value.is_some() {542 } else if collection_admin && is_collection_admin() {548 return Ok(());543 // Pass549 } else {544 } else if token_owner && is_token_owner()? {545 // Pass546 } else {550 return Err(<Error<T>>::UnableToCreateEmptyProperty.into());547 return Err(<CommonError<T>>::NoPermission.into());551 }548 }552 }553554 let mut check_result = Err(<CommonError<T>>::NoPermission.into());555556 if collection_admin {557 check_result = check_collection_admin();558 }559560 if token_owner {561 check_result = check_result.or_else(|_| check_token_owner())562 }563564 check_result?;565 }549 }566 }550 }567551596 Ok(())580 Ok(())597 }581 }598582599 #[transactional]600 pub fn set_token_properties(583 pub fn set_token_properties(601 collection: &NonfungibleHandle<T>,584 collection: &NonfungibleHandle<T>,602 sender: &T::CrossAccountId,585 sender: &T::CrossAccountId,634 )617 )635 }618 }636619637 #[transactional]638 pub fn delete_token_properties(620 pub fn delete_token_properties(639 collection: &NonfungibleHandle<T>,621 collection: &NonfungibleHandle<T>,640 sender: &T::CrossAccountId,622 sender: &T::CrossAccountId,