git.delta.rocks / unique-network / refs/commits / 1946e45ceb05

difftreelog

feat(rmrk) add resource at minting

Daniel Shiposha2022-06-14parent: #dacc78c.patch.diff
in: master

2 files changed

modifiedpallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth
353 royalty_amount: Option<Permill>,353 royalty_amount: Option<Permill>,
354 metadata: RmrkString,354 metadata: RmrkString,
355 transferable: bool,355 transferable: bool,
356 resources: Option<BoundedVec<RmrkResourceTypes, MaxResourcesOnMint>>
356 ) -> DispatchResult {357 ) -> DispatchResult {
357 let sender = ensure_signed(origin)?;358 let sender = ensure_signed(origin)?;
358 let sender = T::CrossAccountId::from_sub(sender);359 let cross_sender = T::CrossAccountId::from_sub(sender.clone());
359 let cross_owner = T::CrossAccountId::from_sub(owner.clone());360 let cross_owner = T::CrossAccountId::from_sub(owner.clone());
360361
361 let collection = Self::get_typed_nft_collection(362 let collection = Self::get_typed_nft_collection(
370 });371 });
371372
372 let nft_id = Self::create_nft(373 let nft_id = Self::create_nft(
373 &sender,374 &cross_sender,
374 &cross_owner,375 &cross_owner,
375 &collection,376 &collection,
376 [377 [
390 err => Self::map_unique_err_to_proxy(err),391 err => Self::map_unique_err_to_proxy(err),
391 })?;392 })?;
393
394 if let Some(resources) = resources {
395 for resource in resources {
396 Self::resource_add(
397 sender.clone(),
398 collection.id,
399 nft_id,
400 resource
401 )?;
402 }
403 }
392404
393 Self::deposit_event(Event::NftMinted {405 Self::deposit_event(Event::NftMinted {
394 owner,406 owner,
921 sender,933 sender,
922 collection_id,934 collection_id,
923 nft_id.into(),935 nft_id.into(),
924 [
925 Self::rmrk_property(TokenType, &NftType::Resource)?,
926 Self::rmrk_property(ResourceType, &misc::ResourceType::Basic)?,936 RmrkResourceTypes::Basic(resource),
927 Self::rmrk_property(Src, &resource.src)?,
928 Self::rmrk_property(Metadata, &resource.metadata)?,
929 Self::rmrk_property(License, &resource.license)?,
930 Self::rmrk_property(Thumb, &resource.thumb)?,
931 ]
932 .into_iter(),
933 )?;937 )?;
934938
935 Self::deposit_event(Event::ResourceAdded {939 Self::deposit_event(Event::ResourceAdded {
959 sender,963 sender,
960 collection_id,964 collection_id,
961 nft_id.into(),965 nft_id.into(),
962 [
963 Self::rmrk_property(TokenType, &NftType::Resource)?,
964 Self::rmrk_property(ResourceType, &misc::ResourceType::Composable)?,966 RmrkResourceTypes::Composable(resource)
965 Self::rmrk_property(Parts, &resource.parts)?,
966 Self::rmrk_property(Base, &resource.base)?,
967 Self::rmrk_property(Src, &resource.src)?,
968 Self::rmrk_property(Metadata, &resource.metadata)?,
969 Self::rmrk_property(License, &resource.license)?,
970 Self::rmrk_property(Thumb, &resource.thumb)?,
971 ]
972 .into_iter(),
973 )?;967 )?;
974968
975 Self::deposit_event(Event::ResourceAdded {969 Self::deposit_event(Event::ResourceAdded {
999 sender,993 sender,
1000 collection_id,994 collection_id,
1001 nft_id.into(),995 nft_id.into(),
1002 [
1003 Self::rmrk_property(TokenType, &NftType::Resource)?,
1004 Self::rmrk_property(ResourceType, &misc::ResourceType::Slot)?,
1005 Self::rmrk_property(Base, &resource.base)?,
1006 Self::rmrk_property(Src, &resource.src)?,
1007 Self::rmrk_property(Metadata, &resource.metadata)?,
1008 Self::rmrk_property(Slot, &resource.slot)?,996 RmrkResourceTypes::Slot(resource),
1009 Self::rmrk_property(License, &resource.license)?,
1010 Self::rmrk_property(Thumb, &resource.thumb)?,
1011 ]
1012 .into_iter(),
1013 )?;997 )?;
1014998
1015 Self::deposit_event(Event::ResourceAdded {999 Self::deposit_event(Event::ResourceAdded {
1174 )1158 )
1175 }1159 }
11761160
1177 fn resource_add(1161 fn resource_add(
1162 sender: T::AccountId,
1163 collection_id: CollectionId,
1164 nft_id: TokenId,
1165 resource: RmrkResourceTypes
1166 ) -> Result<RmrkResourceId, DispatchError> {
1167 match resource {
1168 RmrkResourceTypes::Basic(resource) => {
1169 Self::resource_add_helper(
1170 sender,
1171 collection_id,
1172 nft_id,
1173 [
1174 Self::rmrk_property(TokenType, &NftType::Resource)?,
1175 Self::rmrk_property(ResourceType, &misc::ResourceType::Basic)?,
1176 Self::rmrk_property(Src, &resource.src)?,
1177 Self::rmrk_property(Metadata, &resource.metadata)?,
1178 Self::rmrk_property(License, &resource.license)?,
1179 Self::rmrk_property(Thumb, &resource.thumb)?,
1180 ]
1181 .into_iter(),
1182 )
1183 },
1184 RmrkResourceTypes::Composable(resource) => {
1185 Self::resource_add_helper(
1186 sender,
1187 collection_id,
1188 nft_id.into(),
1189 [
1190 Self::rmrk_property(TokenType, &NftType::Resource)?,
1191 Self::rmrk_property(ResourceType, &misc::ResourceType::Composable)?,
1192 Self::rmrk_property(Parts, &resource.parts)?,
1193 Self::rmrk_property(Base, &resource.base)?,
1194 Self::rmrk_property(Src, &resource.src)?,
1195 Self::rmrk_property(Metadata, &resource.metadata)?,
1196 Self::rmrk_property(License, &resource.license)?,
1197 Self::rmrk_property(Thumb, &resource.thumb)?,
1198 ]
1199 .into_iter(),
1200 )
1201 },
1202 RmrkResourceTypes::Slot(resource) => {
1203 Self::resource_add_helper(
1204 sender,
1205 collection_id,
1206 nft_id.into(),
1207 [
1208 Self::rmrk_property(TokenType, &NftType::Resource)?,
1209 Self::rmrk_property(ResourceType, &misc::ResourceType::Slot)?,
1210 Self::rmrk_property(Base, &resource.base)?,
1211 Self::rmrk_property(Src, &resource.src)?,
1212 Self::rmrk_property(Metadata, &resource.metadata)?,
1213 Self::rmrk_property(Slot, &resource.slot)?,
1214 Self::rmrk_property(License, &resource.license)?,
1215 Self::rmrk_property(Thumb, &resource.thumb)?,
1216 ]
1217 .into_iter(),
1218 )
1219 }
1220 }
1221 }
1222
1223 fn resource_add_helper(
1178 sender: T::AccountId,1224 sender: T::AccountId,
1179 collection_id: CollectionId,1225 collection_id: CollectionId,
1180 token_id: TokenId,1226 token_id: TokenId,
modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
952 pub const RmrkPartsLimit: u32 = 25;952 pub const RmrkPartsLimit: u32 = 25;
953 #[derive(PartialEq)]953 #[derive(PartialEq)]
954 pub const RmrkMaxPriorities: u32 = 25;954 pub const RmrkMaxPriorities: u32 = 25;
955 #[derive(PartialEq)]
956 pub const MaxResourcesOnMint: u32 = 100;
955}957}
956958
957impl From<RmrkCollectionId> for CollectionId {959impl From<RmrkCollectionId> for CollectionId {