From 59d3ddeed175873ab33917310e3cc54fab1af369 Mon Sep 17 00:00:00 2001 From: Daniel Shiposha Date: Fri, 06 May 2022 11:09:10 +0000 Subject: [PATCH] Add properties to create item(s) --- --- a/pallets/nonfungible/src/common.rs +++ b/pallets/nonfungible/src/common.rs @@ -100,6 +100,7 @@ up_data_structs::CreateItemData::NFT(data) => Ok(CreateItemData:: { const_data: data.const_data, variable_data: data.variable_data, + properties: data.properties, owner: to.clone(), }), _ => fail!(>::NotNonfungibleDataUsedToMintFungibleCollectionToken), --- a/pallets/nonfungible/src/erc.rs +++ b/pallets/nonfungible/src/erc.rs @@ -274,6 +274,7 @@ CreateItemData:: { const_data: BoundedVec::default(), variable_data: BoundedVec::default(), + properties: BoundedVec::default(), owner: to, }, &budget, @@ -321,6 +322,7 @@ .try_into() .map_err(|_| "token uri is too long")?, variable_data: BoundedVec::default(), + properties: BoundedVec::default(), owner: to, }, &budget, @@ -438,6 +440,7 @@ .map(|_| CreateItemData:: { const_data: BoundedVec::default(), variable_data: BoundedVec::default(), + properties: BoundedVec::default(), owner: to.clone(), }) .collect(); @@ -481,6 +484,7 @@ .try_into() .map_err(|_| "token uri is too long")?, variable_data: vec![].try_into().unwrap(), + properties: BoundedVec::default(), owner: to.clone(), }); } --- a/pallets/nonfungible/src/lib.rs +++ b/pallets/nonfungible/src/lib.rs @@ -21,7 +21,7 @@ use up_data_structs::{ AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData, mapping::TokenAddressMapping, NestingRule, budget::Budget, Property, PropertyPermission, - PropertyKey, PropertyKeyPermission, + PropertyKey, PropertyKeyPermission, Properties, }; use pallet_evm::account::CrossAccountId; use pallet_common::{ @@ -99,7 +99,7 @@ #[pallet::getter(fn token_properties)] pub type TokenProperties = StorageNMap< Key = (Key, Key), - Value = up_data_structs::Properties, + Value = Properties, QueryKind = ValueQuery, OnEmpty = up_data_structs::TokenProperties, >; @@ -571,6 +571,13 @@ ); >::insert((collection.id, &data.owner, token), true); + Self::set_token_properties( + collection, + sender, + TokenId(token), + data.properties.into_inner(), + )?; + collection.log_mirrored(ERC721Events::Transfer { from: H160::default(), to: *data.owner.as_eth(), --- a/primitives/data-structs/src/lib.rs +++ b/primitives/data-structs/src/lib.rs @@ -29,7 +29,7 @@ use serde::{Serialize, Deserialize}; use sp_core::U256; -use sp_runtime::{ArithmeticError, sp_std::prelude::Vec, DispatchError}; +use sp_runtime::{ArithmeticError, sp_std::prelude::Vec}; use codec::{Decode, Encode, EncodeLike, MaxEncodedLen}; use frame_support::{BoundedVec, traits::ConstU32}; use derivative::Derivative; @@ -486,6 +486,10 @@ #[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))] #[derivative(Debug(format_with = "bounded::vec_debug"))] pub variable_data: BoundedVec, + + #[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))] + #[derivative(Debug(format_with = "bounded::vec_debug"))] + pub properties: CollectionPropertiesVec, } #[derive(Encode, Decode, MaxEncodedLen, Default, Debug, Clone, PartialEq, TypeInfo)] @@ -536,6 +540,8 @@ pub const_data: BoundedVec, #[derivative(Debug(format_with = "bounded::vec_debug"))] pub variable_data: BoundedVec, + #[derivative(Debug(format_with = "bounded::vec_debug"))] + pub properties: CollectionPropertiesVec, pub owner: CrossAccountId, } -- gitstuff