difftreelog
CORE-325 Fix PR
in: master
2 files changed
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -94,18 +94,18 @@
/// Returns token's const_metadata
#[solidity(rename_selector = "tokenURI")]
fn token_uri(&self, token_id: uint256) -> Result<string> {
- if let SchemaVersion::ImageURL = self.schema_version {
- self.consume_store_reads(1)?;
- let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
- Ok(string::from_utf8_lossy(
- &<TokenData<T>>::get((self.id, token_id))
- .ok_or("token not found")?
- .const_data,
- )
- .into())
- } else {
- Err(error_unsupported_shema_version())
+ if !matches!(self.schema_version, SchemaVersion::ImageURL) {
+ return Err(error_unsupported_shema_version());
}
+
+ self.consume_store_reads(1)?;
+ let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
+ Ok(string::from_utf8_lossy(
+ &<TokenData<T>>::get((self.id, token_id))
+ .ok_or("token not found")?
+ .const_data,
+ )
+ .into())
}
}
@@ -285,34 +285,34 @@
token_id: uint256,
token_uri: string,
) -> Result<bool> {
- if let SchemaVersion::ImageURL = self.schema_version {
- let caller = T::CrossAccountId::from_eth(caller);
- let to = T::CrossAccountId::from_eth(to);
- let token_id: u32 = token_id.try_into().map_err(|_| "amount overflow")?;
- if <TokensMinted<T>>::get(self.id)
- .checked_add(1)
- .ok_or("item id overflow")?
- != token_id
- {
- return Err("item id should be next".into());
- }
+ if !matches!(self.schema_version, SchemaVersion::ImageURL) {
+ return Err(error_unsupported_shema_version());
+ }
- <Pallet<T>>::create_item(
- self,
- &caller,
- CreateItemData::<T> {
- const_data: Vec::<u8>::from(token_uri)
- .try_into()
- .map_err(|_| "token uri is too long")?,
- variable_data: BoundedVec::default(),
- owner: to,
- },
- )
- .map_err(dispatch_to_evm::<T>)?;
- Ok(true)
- } else {
- Err(error_unsupported_shema_version())
+ let caller = T::CrossAccountId::from_eth(caller);
+ let to = T::CrossAccountId::from_eth(to);
+ let token_id: u32 = token_id.try_into().map_err(|_| "amount overflow")?;
+ if <TokensMinted<T>>::get(self.id)
+ .checked_add(1)
+ .ok_or("item id overflow")?
+ != token_id
+ {
+ return Err("item id should be next".into());
}
+
+ <Pallet<T>>::create_item(
+ self,
+ &caller,
+ CreateItemData::<T> {
+ const_data: Vec::<u8>::from(token_uri)
+ .try_into()
+ .map_err(|_| "token uri is too long")?,
+ variable_data: BoundedVec::default(),
+ owner: to,
+ },
+ )
+ .map_err(dispatch_to_evm::<T>)?;
+ Ok(true)
}
/// Not implemented
@@ -430,36 +430,36 @@
to: address,
tokens: Vec<(uint256, string)>,
) -> Result<bool> {
- if let SchemaVersion::ImageURL = self.schema_version {
- let caller = T::CrossAccountId::from_eth(caller);
- let to = T::CrossAccountId::from_eth(to);
- let mut expected_index = <TokensMinted<T>>::get(self.id)
- .checked_add(1)
- .ok_or("item id overflow")?;
+ if !matches!(self.schema_version, SchemaVersion::ImageURL) {
+ return Err(error_unsupported_shema_version());
+ }
- let mut data = Vec::with_capacity(tokens.len());
- for (id, token_uri) in tokens {
- let id: u32 = id.try_into().map_err(|_| "token id overflow")?;
- if id != expected_index {
- panic!("item id should be next ({}) but got {}", expected_index, id);
- }
- expected_index = expected_index.checked_add(1).ok_or("item id overflow")?;
+ let caller = T::CrossAccountId::from_eth(caller);
+ let to = T::CrossAccountId::from_eth(to);
+ let mut expected_index = <TokensMinted<T>>::get(self.id)
+ .checked_add(1)
+ .ok_or("item id overflow")?;
- data.push(CreateItemData::<T> {
- const_data: Vec::<u8>::from(token_uri)
- .try_into()
- .map_err(|_| "token uri is too long")?,
- variable_data: vec![].try_into().unwrap(),
- owner: to.clone(),
- });
+ let mut data = Vec::with_capacity(tokens.len());
+ for (id, token_uri) in tokens {
+ let id: u32 = id.try_into().map_err(|_| "token id overflow")?;
+ if id != expected_index {
+ panic!("item id should be next ({}) but got {}", expected_index, id);
}
+ expected_index = expected_index.checked_add(1).ok_or("item id overflow")?;
- <Pallet<T>>::create_multiple_items(self, &caller, data)
- .map_err(dispatch_to_evm::<T>)?;
- Ok(true)
- } else {
- Err(error_unsupported_shema_version())
+ data.push(CreateItemData::<T> {
+ const_data: Vec::<u8>::from(token_uri)
+ .try_into()
+ .map_err(|_| "token uri is too long")?,
+ variable_data: vec![].try_into().unwrap(),
+ owner: to.clone(),
+ });
}
+
+ <Pallet<T>>::create_multiple_items(self, &caller, data)
+ .map_err(dispatch_to_evm::<T>)?;
+ Ok(true)
}
}
tests/src/eth/metadata.test.tsdiffbeforeafterboth98 receiver,98 receiver,99 nextTokenId,99 nextTokenId,100 'Test URI',100 'Test URI',101 ).send({from: caller})).to.be.rejected;101 ).call({from: caller})).to.be.rejectedWith('Unsupported shema version! Support only ImageURL');102102103 await expect(contract.methods.mintBulkWithTokenURI(103 await expect(contract.methods.mintBulkWithTokenURI(104 receiver,104 receiver,107 [+nextTokenId + 1, 'Test URI 1'],107 [+nextTokenId + 1, 'Test URI 1'],108 [+nextTokenId + 2, 'Test URI 2'],108 [+nextTokenId + 2, 'Test URI 2'],109 ],109 ],110 ).send({from: caller})).to.be.rejected;110 ).call({from: caller})).to.be.rejectedWith('Unsupported shema version! Support only ImageURL');111 });111 });112112113 itWeb3('Check support ERC721Metadata for ShemaVersion::ImageURL', async ({web3, api}) => {113 itWeb3('Check support ERC721Metadata for ShemaVersion::ImageURL', async ({web3, api}) => {