From a07e65584822a6c8893c24b23ee64552bd5295d9 Mon Sep 17 00:00:00 2001 From: Daniel Shiposha Date: Wed, 18 Oct 2023 15:30:46 +0000 Subject: [PATCH] refactor: create collection with optional payer --- --- a/pallets/common/src/dispatch.rs +++ b/pallets/common/src/dispatch.rs @@ -72,20 +72,11 @@ /// Create a collection. The collection will be created according to the value of [`data.mode`](CreateCollectionData::mode). /// /// * `sender` - The user who will become the owner of the collection. - /// * `payer` - The user who pays the collection creation fee. + /// * `payer` - If set, the user who pays the collection creation deposit. /// * `data` - Description of the created collection. fn create( sender: T::CrossAccountId, - payer: T::CrossAccountId, - data: CreateCollectionData, - ) -> Result; - - /// Create a foreign collection. The collection will be created according to the value of [`data.mode`](CreateCollectionData::mode). - /// - /// * `sender` - The user who will become the owner of the collection. - /// * `data` - Description of the created collection. - fn create_foreign( - sender: T::CrossAccountId, + payer: Option, data: CreateCollectionData, ) -> Result; --- a/pallets/foreign-assets/src/lib.rs +++ b/pallets/foreign-assets/src/lib.rs @@ -152,8 +152,10 @@ .try_into() .expect("description length < max description length; qed"); - let collection_id = T::CollectionDispatch::create_foreign( + let payer = None; + let collection_id = T::CollectionDispatch::create( foreign_collection_owner, + payer, CreateCollectionData { name, description, --- a/pallets/unique/src/eth/mod.rs +++ b/pallets/unique/src/eth/mod.rs @@ -110,8 +110,9 @@ let collection_helpers_address = T::CrossAccountId::from_eth(::ContractAddress::get()); - let collection_id = T::CollectionDispatch::create(caller, collection_helpers_address, data) - .map_err(pallet_evm_coder_substrate::dispatch_to_evm::)?; + let collection_id = + T::CollectionDispatch::create(caller, Some(collection_helpers_address), data) + .map_err(pallet_evm_coder_substrate::dispatch_to_evm::)?; let address = pallet_common::eth::collection_id_to_address(collection_id); Ok(address) } @@ -240,8 +241,9 @@ let collection_helpers_address = T::CrossAccountId::from_eth(::ContractAddress::get()); - let collection_id = T::CollectionDispatch::create(caller, collection_helpers_address, data) - .map_err(dispatch_to_evm::)?; + let collection_id = + T::CollectionDispatch::create(caller, Some(collection_helpers_address), data) + .map_err(dispatch_to_evm::)?; let address = pallet_common::eth::collection_id_to_address(collection_id); Ok(address) @@ -274,8 +276,9 @@ check_sent_amount_equals_collection_creation_price::(value)?; let collection_helpers_address = T::CrossAccountId::from_eth(::ContractAddress::get()); - let collection_id = T::CollectionDispatch::create(caller, collection_helpers_address, data) - .map_err(dispatch_to_evm::)?; + let collection_id = + T::CollectionDispatch::create(caller, Some(collection_helpers_address), data) + .map_err(dispatch_to_evm::)?; let address = pallet_common::eth::collection_id_to_address(collection_id); Ok(address) --- a/pallets/unique/src/lib.rs +++ b/pallets/unique/src/lib.rs @@ -401,7 +401,7 @@ // ========= let sender = T::CrossAccountId::from_sub(sender); - let _id = T::CollectionDispatch::create(sender.clone(), sender, data)?; + let _id = T::CollectionDispatch::create(sender.clone(), Some(sender), data)?; Ok(()) } --- a/runtime/common/dispatch.rs +++ b/runtime/common/dispatch.rs @@ -18,7 +18,7 @@ use pallet_balances_adapter::NativeFungibleHandle; pub use pallet_common::dispatch::CollectionDispatch; use pallet_common::{ - erc::CommonEvmHandler, eth::map_eth_to_id, unsupported, CollectionById, CollectionHandle, + erc::CommonEvmHandler, eth::map_eth_to_id, CollectionById, CollectionHandle, CommonCollectionOperations, Pallet as PalletCommon, }; use pallet_evm::{PrecompileHandle, PrecompileResult}; @@ -68,7 +68,7 @@ fn create( sender: T::CrossAccountId, - payer: T::CrossAccountId, + payer: Option, data: CreateCollectionData, ) -> Result { match data.mode { @@ -85,28 +85,7 @@ _ => {} }; - - >::init_collection(sender, Some(payer), data) - } - fn create_foreign( - sender: ::CrossAccountId, - data: CreateCollectionData<::CrossAccountId>, - ) -> Result { - match data.mode { - CollectionMode::Fungible(decimal_points) => { - // check params - ensure!( - decimal_points <= MAX_DECIMAL_POINTS, - pallet_unique::Error::::CollectionDecimalPointLimitExceeded - ); - } - - CollectionMode::ReFungible => return unsupported!(T), - _ => {} - }; - - let payer = None; >::init_collection(sender, payer, data) } -- gitstuff