From 790d2f0e58ad9417d8dda6c47023405b8b3fb182 Mon Sep 17 00:00:00 2001 From: Trubnikov Sergey Date: Mon, 11 Apr 2022 12:59:33 +0000 Subject: [PATCH] CORE-325 Fix PR --- --- 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 { - 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( - &>::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( + &>::get((self.id, token_id)) + .ok_or("token not found")? + .const_data, + ) + .into()) } } @@ -285,34 +285,34 @@ token_id: uint256, token_uri: string, ) -> Result { - 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 >::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()); + } - >::create_item( - self, - &caller, - CreateItemData:: { - const_data: Vec::::from(token_uri) - .try_into() - .map_err(|_| "token uri is too long")?, - variable_data: BoundedVec::default(), - owner: to, - }, - ) - .map_err(dispatch_to_evm::)?; - 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 >::get(self.id) + .checked_add(1) + .ok_or("item id overflow")? + != token_id + { + return Err("item id should be next".into()); } + + >::create_item( + self, + &caller, + CreateItemData:: { + const_data: Vec::::from(token_uri) + .try_into() + .map_err(|_| "token uri is too long")?, + variable_data: BoundedVec::default(), + owner: to, + }, + ) + .map_err(dispatch_to_evm::)?; + Ok(true) } /// Not implemented @@ -430,36 +430,36 @@ to: address, tokens: Vec<(uint256, string)>, ) -> Result { - 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 = >::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 = >::get(self.id) + .checked_add(1) + .ok_or("item id overflow")?; - data.push(CreateItemData:: { - const_data: Vec::::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")?; - >::create_multiple_items(self, &caller, data) - .map_err(dispatch_to_evm::)?; - Ok(true) - } else { - Err(error_unsupported_shema_version()) + data.push(CreateItemData:: { + const_data: Vec::::from(token_uri) + .try_into() + .map_err(|_| "token uri is too long")?, + variable_data: vec![].try_into().unwrap(), + owner: to.clone(), + }); } + + >::create_multiple_items(self, &caller, data) + .map_err(dispatch_to_evm::)?; + Ok(true) } } --- a/tests/src/eth/metadata.test.ts +++ b/tests/src/eth/metadata.test.ts @@ -98,7 +98,7 @@ receiver, nextTokenId, 'Test URI', - ).send({from: caller})).to.be.rejected; + ).call({from: caller})).to.be.rejectedWith('Unsupported shema version! Support only ImageURL'); await expect(contract.methods.mintBulkWithTokenURI( receiver, @@ -107,7 +107,7 @@ [+nextTokenId + 1, 'Test URI 1'], [+nextTokenId + 2, 'Test URI 2'], ], - ).send({from: caller})).to.be.rejected; + ).call({from: caller})).to.be.rejectedWith('Unsupported shema version! Support only ImageURL'); }); itWeb3('Check support ERC721Metadata for ShemaVersion::ImageURL', async ({web3, api}) => { -- gitstuff