--- a/pallets/proxy-rmrk-core/src/lib.rs +++ b/pallets/proxy-rmrk-core/src/lib.rs @@ -912,6 +912,17 @@ Self::get_nft_collection(collection_id) } + pub fn get_typed_nft_collection_mapped( + rmrk_collection_id: RmrkCollectionId, + collection_type: misc::CollectionType, + ) -> Result<(NonfungibleHandle, CollectionId), DispatchError> { + let unique_collection_id = Self::unique_collection_id(rmrk_collection_id)?; + + let collection = Self::get_typed_nft_collection(unique_collection_id, collection_type)?; + + Ok((collection, unique_collection_id)) + } + pub fn get_nft_property( collection_id: CollectionId, nft_id: TokenId, --- a/runtime/common/src/runtime_apis.rs +++ b/runtime/common/src/runtime_apis.rs @@ -147,12 +147,7 @@ use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType}; use pallet_common::CommonCollectionOperations; - let collection_id = match RmrkCore::unique_collection_id(collection_id) { - Ok(id) => id, - Err(_) => return Ok(None) - }; - - let collection = match RmrkCore::get_typed_nft_collection(collection_id, CollectionType::Regular) { + let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) { Ok(c) => c, Err(_) => return Ok(None), }; @@ -173,11 +168,7 @@ use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType}; use pallet_common::CommonCollectionOperations; - let collection_id = match RmrkCore::unique_collection_id(collection_id) { - Ok(id) => id, - Err(_) => return Ok(None) - }; - let collection = match RmrkCore::get_typed_nft_collection(collection_id, CollectionType::Regular) { + let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) { Ok(c) => c, Err(_) => return Ok(None), }; @@ -213,11 +204,11 @@ use pallet_common::CommonCollectionOperations; let cross_account_id = CrossAccountId::from_sub(account_id); - let collection_id = match RmrkCore::unique_collection_id(collection_id) { - Ok(id) => id, - Err(_) => return Ok(Vec::new()) + + let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) { + Ok(c) => c, + Err(_) => return Ok(Vec::new()), }; - if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(Vec::new()); } Ok( collection.account_tokens(cross_account_id) @@ -387,11 +378,7 @@ RmrkProperty, misc::{CollectionType}, }; - let collection_id = match RmrkCore::unique_collection_id(base_id) { - Ok(id) => id, - Err(_) => return Ok(None) - }; - let collection = match RmrkCore::get_typed_nft_collection(collection_id, CollectionType::Base) { + let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) { Ok(c) => c, Err(_) => return Ok(None), }; @@ -407,12 +394,11 @@ use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType}}; use pallet_common::CommonCollectionOperations; - let collection_id = match RmrkCore::unique_collection_id(base_id) { - Ok(id) => id, - Err(_) => return Ok(Vec::new()) + let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) { + Ok(c) => c, + Err(_) => return Ok(Vec::new()), }; - if RmrkCore::ensure_collection_type(collection_id, CollectionType::Base).is_err() { return Ok(Vec::new()); } - + let parts = collection.collection_tokens() .into_iter() .filter_map(|token_id| { @@ -442,14 +428,10 @@ use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType}; use pallet_common::CommonCollectionOperations; - let collection_id = match RmrkCore::unique_collection_id(base_id) { - Ok(id) => id, - Err(_) => return Ok(Vec::new()) + let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) { + Ok(c) => c, + Err(_) => return Ok(Vec::new()), }; - if RmrkCore::ensure_collection_type(collection_id, CollectionType::Base).is_err() { - return Ok(Vec::new()); - } - let theme_names = collection.collection_tokens() .iter() @@ -475,13 +457,10 @@ }; use pallet_common::CommonCollectionOperations; - let collection_id = match RmrkCore::unique_collection_id(base_id) { - Ok(id) => id, - Err(_) => return Ok(None) + let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) { + Ok(c) => c, + Err(_) => return Ok(None), }; - if RmrkCore::ensure_collection_type(collection_id, CollectionType::Base).is_err() { - return Ok(None); - } let theme_info = collection.collection_tokens() .into_iter()