--- a/pallets/nonfungible/src/erc.rs +++ b/pallets/nonfungible/src/erc.rs @@ -161,17 +161,21 @@ let key: string = "tokenURI".into(); //TODO: make static let key: up_data_structs::PropertyKey = key.into_bytes().try_into() .map_err(|_| Error::Revert("".into()))?; - let permission = get_permission::(self.id, &key)?; + let permission = get_token_permission::(self.id, &key)?; if !permission.collection_admin { return Err("Operation is not allowed".into()); } self.consume_store_reads(1)?; - let _token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?; - Ok(string::from_utf8_lossy( - todo!() - ) - .into()) + let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?; + + let properties = >::try_get((self.id, token_id)) + .map_err(|_| Error::Revert("Token properties not found".into()))?; + if let Some(property) = properties.get(&key) { + return Ok(string::from_utf8_lossy(property).into()); + } + + Err("Property tokenURI not found".into()) } } @@ -361,7 +365,7 @@ let key: string = "tokenURI".into(); //TODO: make static let key: up_data_structs::PropertyKey = key.into_bytes().try_into() .map_err(|_| Error::Revert("".into()))?; - let permission = get_permission::(self.id, &key)?; + let permission = get_token_permission::(self.id, &key)?; if !permission.collection_admin { return Err("Operation is not allowed".into()); } @@ -407,12 +411,13 @@ } } -fn get_permission(collection_id: CollectionId, key: &PropertyKey) -> Result { +fn get_token_permission(collection_id: CollectionId, key: &PropertyKey) -> Result { let token_property_permissions = CollectionPropertyPermissions::::try_get(collection_id) .map_err(|_| Error::Revert("No permissions for collection".into()))?; - Ok(token_property_permissions.get(key) + let a = token_property_permissions.get(key) .map(|p| p.clone()) - .ok_or_else(|| Error::Revert("No permission for tokenURI".into()))?) + .ok_or_else(|| Error::Revert("No permission for tokenURI".into()))?; + Ok(a) } #[solidity_interface(name = "ERC721UniqueExtensions")] --- a/tests/src/eth/createCollection.test.ts +++ b/tests/src/eth/createCollection.test.ts @@ -187,7 +187,7 @@ .isCollectionExist(collectionAddressForNonexistentCollection).call()) .to.be.false; - const result = await collectionHelper.methods.create721Collection('Const collection', '5', '5').send(); + const result = await collectionHelper.methods.create721Collection('Collection address exist', '7', '7').send(); const {collectionIdAddress} = await getCollectionAddressFromResult(api, result); expect(await collectionHelper.methods .isCollectionExist(collectionIdAddress).call())