difftreelog
CollectionLimits additional checks added
in: master
1 file changed
pallets/nft/src/lib.rsdiffbeforeafterboth105010501051 let sender = ensure_signed(origin)?;1051 let sender = ensure_signed(origin)?;10521053 // Transfer permissions check1054 let target_collection = <Collection<T>>::get(collection_id);1052 let target_collection = <Collection<T>>::get(collection_id);10531054 // Limits check1055 Self::is_correct_transfer(collection_id, &target_collection, &recipient)?;10561057 // Transfer permissions check1055 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||1058 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||1056 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1059 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1057 Error::<T>::NoPermission);1060 Error::<T>::NoPermission);1162 }1165 }1163 }1166 }116411671165 // Transfer permissions check1166 let target_collection = <Collection<T>>::get(collection_id);1168 let target_collection = <Collection<T>>::get(collection_id);11691170 // Limits check1171 Self::is_correct_transfer(collection_id, &target_collection, &recipient)?;11721173 // Transfer permissions check 1167 ensure!(appoved_transfer || Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1174 ensure!(appoved_transfer || Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1168 Error::<T>::NoPermission);1175 Error::<T>::NoPermission);116911761424 Self::check_owner_permissions(collection_id, sender.clone())?;1431 Self::check_owner_permissions(collection_id, sender.clone())?;14251426 let mut target_collection = <Collection<T>>::get(collection_id);1432 let mut target_collection = <Collection<T>>::get(collection_id);1433 let chain_limits = ChainLimit::get();1427 target_collection.limits = limits;1434 let climits = target_collection.limits;14351436 // token_limit check prev1437 ensure!(climits.token_limit > limits.token_limit && 1438 climits.token_limit <= chain_limits.account_token_ownership_limit, 1439 Error::<T>::AccountTokenLimitExceeded);14401441 target_collection.limits = limits;1428 <Collection<T>>::insert(collection_id, target_collection);1442 <Collection<T>>::insert(collection_id, target_collection);142914431430 Ok(())1444 Ok(())143414481435impl<T: Trait> Module<T> {1449impl<T: Trait> Module<T> {14501451 fn is_correct_transfer(collection_id: CollectionId, collection: &CollectionType<T::AccountId>, recipient: &T::AccountId) -> DispatchResult {14521453 if !Self::is_owner_or_admin_permissions(collection_id, recipient.clone()) {14541455 // check token limit and account token limit1456 let account_items: u32 = <AddressTokens<T>>::get(collection_id, recipient).len() as u32;1457 ensure!(collection.limits.account_token_ownership_limit > account_items, Error::<T>::AccountTokenLimitExceeded);1458 }14591460 Ok(())1461 }143614621437 fn can_create_items_in_collection(collection_id: CollectionId, collection: &CollectionType<T::AccountId>, sender: &T::AccountId, owner: &T::AccountId) -> DispatchResult {1463 fn can_create_items_in_collection(collection_id: CollectionId, collection: &CollectionType<T::AccountId>, sender: &T::AccountId, owner: &T::AccountId) -> DispatchResult {143814641439 if !Self::is_owner_or_admin_permissions(collection_id, sender.clone()) {1465 if !Self::is_owner_or_admin_permissions(collection_id, sender.clone()) {144014661441 // check token limit and account token limit1467 // check token limit and account token limit1442 let total_items: u32 = ItemListIndex::get(collection_id);1468 let total_items: u32 = ItemListIndex::get(collection_id);1443 let account_items: u32 = <AddressTokens<T>>::get(collection_id, owner.clone()).len() as u32;1469 let account_items: u32 = <AddressTokens<T>>::get(collection_id, owner).len() as u32;1444 ensure!(collection.limits.token_limit > total_items, Error::<T>::CollectionTokenLimitExceeded);1470 ensure!(collection.limits.token_limit > total_items, Error::<T>::CollectionTokenLimitExceeded);1445 ensure!(collection.limits.account_token_ownership_limit > account_items, Error::<T>::AccountTokenLimitExceeded);1471 ensure!(collection.limits.account_token_ownership_limit > account_items, Error::<T>::AccountTokenLimitExceeded);1446 ensure!(collection.mint_mode == true, Error::<T>::PublicMintingNotAllowed);1472 ensure!(collection.mint_mode == true, Error::<T>::PublicMintingNotAllowed);