git.delta.rocks / unique-network / refs/commits / 651e1c77e229

difftreelog

feat support evm calls of data

Yaroslav Bolyukin2021-04-30parent: #683924f.patch.diff
in: master

1 file changed

modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
1339 item_id: TokenId,1339 item_id: TokenId,
1340 data: Vec<u8>1340 data: Vec<u8>
1341 ) -> DispatchResult {1341 ) -> DispatchResult {
1342 let sender = ensure_signed(origin)?;1342 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
1343 1343
1344 let target_collection = Self::get_collection(collection_id)?;1344 let target_collection = Self::get_collection(collection_id)?;
1345 Self::token_exists(&target_collection, item_id)?;1345 Self::set_variable_meta_data_internal(sender, &target_collection, item_id, data)?;
1346
1347 ensure!(ChainLimit::get().custom_data_limit >= data.len() as u32, Error::<T>::TokenVariableDataLimitExceeded);
1348
1349 // Modify permissions check
1350 ensure!(Self::is_item_owner(sender.clone(), &target_collection, item_id) ||
1351 Self::is_owner_or_admin_permissions(&target_collection, sender.clone()),
1352 Error::<T>::NoPermission);
1353
1354 match target_collection.mode
1355 {
1356 CollectionMode::NFT => Self::set_nft_variable_data(&target_collection, item_id, data)?,
1357 CollectionMode::ReFungible => Self::set_re_fungible_variable_data(&target_collection, item_id, data)?,
1358 CollectionMode::Fungible(_) => fail!(Error::<T>::CantStoreMetadataInFungibleTokens),
1359 _ => fail!(Error::<T>::UnexpectedCollectionType)
1360 };
13611346
1362 Ok(())1347 Ok(())
1363 }1348 }
1383 collection_id: CollectionId,1368 collection_id: CollectionId,
1384 version: SchemaVersion1369 version: SchemaVersion
1385 ) -> DispatchResult {1370 ) -> DispatchResult {
1386 let sender = ensure_signed(origin)?;1371 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
1387 let mut target_collection = Self::get_collection(collection_id)?;1372 let mut target_collection = Self::get_collection(collection_id)?;
1388 Self::check_owner_or_admin_permissions(&target_collection, &sender)?;1373 Self::check_owner_or_admin_permissions(&target_collection, &sender)?;
1389 target_collection.schema_version = version;1374 target_collection.schema_version = version;
1854 Ok(())1839 Ok(())
1855 }1840 }
1841
1842 pub fn set_variable_meta_data_internal(
1843 sender: T::CrossAccountId,
1844 collection: &CollectionHandle<T>,
1845 item_id: TokenId,
1846 data: Vec<u8>,
1847 ) -> DispatchResult {
1848 Self::token_exists(&collection, item_id)?;
1849
1850 ensure!(ChainLimit::get().custom_data_limit >= data.len() as u32, Error::<T>::TokenVariableDataLimitExceeded);
1851
1852 // Modify permissions check
1853 ensure!(Self::is_item_owner(&sender, &collection, item_id) ||
1854 Self::is_owner_or_admin_permissions(&collection, &sender),
1855 Error::<T>::NoPermission);
1856
1857 match collection.mode
1858 {
1859 CollectionMode::NFT => Self::set_nft_variable_data(&collection, item_id, data)?,
1860 CollectionMode::ReFungible => Self::set_re_fungible_variable_data(&collection, item_id, data)?,
1861 CollectionMode::Fungible(_) => fail!(Error::<T>::CantStoreMetadataInFungibleTokens),
1862 _ => fail!(Error::<T>::UnexpectedCollectionType)
1863 };
1864
1865 Ok(())
1866 }
18561867
1857 pub fn create_multiple_items_internal(1868 pub fn create_multiple_items_internal(
1858 sender: T::CrossAccountId,1869 sender: T::CrossAccountId,