git.delta.rocks / unique-network / refs/commits / 361b516d69f6

difftreelog

feat dispatch call to Native fingible

Trubnikov Sergey2023-04-24parent: #dfdf994.patch.diff
in: master

6 files changed

modifiedpallets/common/src/dispatch.rsdiffbeforeafterboth
--- a/pallets/common/src/dispatch.rs
+++ b/pallets/common/src/dispatch.rs
@@ -94,9 +94,6 @@
 	/// * `handle` - Collection handle.
 	fn dispatch(handle: CollectionHandle<T>) -> Self;
 
-	/// Get the collection handle for the corresponding implementation.
-	fn into_inner(self) -> CollectionHandle<T>;
-
 	/// Get the implementation of [`CommonCollectionOperations`].
 	fn as_dyn(&self) -> &dyn CommonCollectionOperations<T>;
 }
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -125,11 +125,7 @@
 impl<T: Config> CollectionHandle<T> {
 	/// Same as [CollectionHandle::new] but with an explicit gas limit.
 	pub fn new_with_gas_limit(id: CollectionId, gas_limit: u64) -> Option<Self> {
-		<CollectionById<T>>::get(id).map(|collection| Self {
-			id,
-			collection,
-			recorder: SubstrateRecorder::new(gas_limit),
-		})
+		Self::new_with_recorder(id, SubstrateRecorder::new(gas_limit))
 	}
 
 	/// Same as [CollectionHandle::new] but with an existed [`SubstrateRecorder`].
modifiedruntime/common/dispatch.rsdiffbeforeafterboth
--- a/runtime/common/dispatch.rs
+++ b/runtime/common/dispatch.rs
@@ -118,15 +118,6 @@
 		}
 	}
 
-	fn into_inner(self) -> CollectionHandle<T> {
-		match self {
-			Self::Fungible(f) => f.into_inner(),
-			Self::Nonfungible(f) => f.into_inner(),
-			Self::Refungible(f) => f.into_inner(),
-			Self::NativeFungible(f) => f.into_inner(),
-		}
-	}
-
 	fn as_dyn(&self) -> &dyn CommonCollectionOperations<T> {
 		match self {
 			Self::Fungible(h) => h,
@@ -189,7 +180,7 @@
 				Self::Fungible(h) => h.call(handle),
 				Self::Nonfungible(h) => h.call(handle),
 				Self::Refungible(h) => h.call(handle),
-				Self::NativeFungible(f) => todo!(),
+				Self::NativeFungible(h) => h.call(handle),
 			}
 		} else if let Some((collection_id, token_id)) =
 			<T as pallet_common::Config>::EvmTokenAddressMapping::address_to_token(
modifiedtests/src/eth/fungible.test.tsdiffbeforeafterboth
--- a/tests/src/eth/fungible.test.ts
+++ b/tests/src/eth/fungible.test.ts
@@ -33,7 +33,7 @@
     'substrate' as const,
     'ethereum' as const,
   ].map(testCase => {
-    itEth(`Can perform mintCross() for ${testCase} address`, async ({helper}) => {
+    itEth.only(`Can perform mintCross() for ${testCase} address`, async ({helper}) => {
       // 1. Create receiver depending on the test case:
       const receiverEth = helper.eth.createAccount();
       const receiverCrossEth = helper.ethCrossAccount.fromAddress(receiverEth);
modifiedtests/src/eth/nativeFungible.test.tsdiffbeforeafterboth
before · tests/src/eth/nativeFungible.test.ts
1// Copyright 2019-2023 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import {IKeyringPair} from '@polkadot/types/types';18import {itEth, usingEthPlaygrounds} from './util';1920describe('NativeFungible: Plain calls', () => {21  let donor: IKeyringPair;22  let alice: IKeyringPair;23  let owner: IKeyringPair;2425  before(async function() {26    await usingEthPlaygrounds(async (helper, privateKey) => {27      donor = await privateKey({url: import.meta.url});28      [alice, owner] = await helper.arrange.createAccounts([30n, 20n], donor);29    });30  });3132  itEth.only('Can perform approve()', async ({helper}) => {33    const owner = await helper.eth.createAccountWithBalance(donor);34    const spender = helper.eth.createAccount();35    const collection = await helper.ft.mintCollection(alice);36    await collection.mint(alice, 200n, {Ethereum: owner});3738    const collectionAddress = helper.ethAddress.fromCollectionId(0);39    const contract = await helper.ethNativeContract.collection(collectionAddress, 'ft', owner);404142    await contract.methods.approve(spender, 100).send({from: owner});43  });44});
after · tests/src/eth/nativeFungible.test.ts
1// Copyright 2019-2023 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import {IKeyringPair} from '@polkadot/types/types';18import {itEth, usingEthPlaygrounds} from './util';1920describe('NativeFungible: Plain calls', () => {21  let donor: IKeyringPair;22  let alice: IKeyringPair;23  let owner: IKeyringPair;2425  before(async function() {26    await usingEthPlaygrounds(async (helper, privateKey) => {27      donor = await privateKey({url: import.meta.url});28      [alice, owner] = await helper.arrange.createAccounts([30n, 20n], donor);29    });30  });3132  itEth.only('Can perform approve()', async ({helper}) => {33    const owner = await helper.eth.createAccountWithBalance(donor);34    const spender = helper.eth.createAccount();35    const collection = await helper.ft.mintCollection(alice);36    await collection.mint(alice, 200n, {Ethereum: owner});3738    const collectionAddress = helper.ethAddress.fromCollectionId(0);39    const contract = await helper.ethNativeContract.collection(collectionAddress, 'ft', owner);4041    await contract.methods.approve(spender, 100).send({from: owner});42  });43});
modifiedtests/src/eth/util/playgrounds/unique.dev.tsdiffbeforeafterboth
--- a/tests/src/eth/util/playgrounds/unique.dev.ts
+++ b/tests/src/eth/util/playgrounds/unique.dev.ts
@@ -142,7 +142,7 @@
 
   async collection(address: string, mode: TCollectionMode, caller?: string, mergeDeprecated = false) {
     let abi;
-    if (address === '0' && mode === 'ft') {
+    if (address === '0x17C4e6453cC49aaAAEaCA894E6d9683e00000000' && mode === 'ft') {
       abi = nativeFungibleAbi;
     } else {
       abi ={