difftreelog
feat create_multiple_items chain extension
in: master
2 files changed
pallets/nft/src/lib.rsdiffbeforeafterboth1792 Ok(())1792 Ok(())1793 }1793 }179417941795 pub fn create_multiple_items_internal(1796 sender: T::AccountId,1797 collection: &CollectionHandle<T>,1798 owner: T::AccountId,1799 items_data: Vec<CreateItemData>,1800 ) -> DispatchResult {1801 Self::can_create_items_in_collection(&collection, &sender, &owner, items_data.len() as u32)?;18021803 for data in &items_data {1804 Self::validate_create_item_args(&collection, data)?;1805 }1806 for data in &items_data {1807 Self::create_item_no_validation(&collection, owner.clone(), data.clone())?;1808 }18091810 Ok(())1811 }179518121796 fn is_correct_transfer(collection: &CollectionHandle<T>, recipient: &T::AccountId) -> DispatchResult {1813 fn is_correct_transfer(collection: &CollectionHandle<T>, recipient: &T::AccountId) -> DispatchResult {1797 let collection_id = collection.id;1814 let collection_id = collection.id;runtime/src/chain_extension.rsdiffbeforeafterboth171718extern crate pallet_nft;18extern crate pallet_nft;19pub use pallet_nft::*;19pub use pallet_nft::*;20use crate::Runtime;21use sp_runtime::AccountId32;22use crate::Vec;20use crate::Vec;232124/// Create item parameters22/// Create item parameters38 pub amount: u128,36 pub amount: u128,39}37}3839#[derive(Debug, PartialEq, Encode, Decode)]40pub struct NFTExtCreateMultipleItems<E: Ext> {41 pub owner: <E::T as SysConfig>::AccountId,42 pub collection_id: u32,43 pub data: Vec<CreateItemData>,44}404541/// The chain Extension of NFT pallet46/// The chain Extension of NFT pallet42pub struct NFTExtension;47pub struct NFTExtension;81 _ => Err(DispatchError::Other("CreateItem error"))86 _ => Err(DispatchError::Other("CreateItem error"))82 }87 }83 },88 },89 2 => {90 // Create multiple items91 let mut env = env.buf_in_buf_out();92 let input: NFTExtCreateMultipleItems<E> = env.read_as()?;9394 let collection = pallet_nft::Module::<C>::get_collection(input.collection_id)?;9596 match pallet_nft::Module::<C>::create_multiple_items_internal(97 env.ext().address().clone(),98 &collection,99 input.owner,100 input.data,101 ) {102 Ok(_) => Ok(RetVal::Converging(func_id)),103 _ => Err(DispatchError::Other("CreateMultipleItems error"))104 }105 },84 _ => {106 _ => {85 panic!("Passed unknown func_id to test chain extension: {}", func_id);107 panic!("Passed unknown func_id to test chain extension: {}", func_id);86 }108 }