From 61eec5188c6b9e5571d4e79d6907825eea10422c Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Wed, 11 Jan 2023 09:18:27 +0000 Subject: [PATCH 01/11] refactor: add Statemine adapter and handle switching from chains --- src/config/relay-chains.tsx | 4 +++- src/pages/Transfer/CrossChainTransferForm/index.tsx | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/config/relay-chains.tsx b/src/config/relay-chains.tsx index 96f593b3f5..24f3df3361 100644 --- a/src/config/relay-chains.tsx +++ b/src/config/relay-chains.tsx @@ -1,5 +1,6 @@ import { InterlayAdapter, KintsugiAdapter } from '@interlay/bridge/build/adapters/interlay'; import { KusamaAdapter, PolkadotAdapter } from '@interlay/bridge/build/adapters/polkadot'; +import { StatemineAdapter } from '@interlay/bridge/build/adapters/statemint'; import { BaseCrossChainAdapter } from '@interlay/bridge/build/base-chain-adapter'; import { CurrencyExt, @@ -193,7 +194,8 @@ switch (process.env.REACT_APP_RELAY_CHAIN_NAME) { TRANSACTION_FEE_AMOUNT = newMonetaryAmount(0.01, GOVERNANCE_TOKEN, true); XCM_ADAPTERS = { kintsugi: new KintsugiAdapter(), - kusama: new KusamaAdapter() + kusama: new KusamaAdapter(), + statemine: new StatemineAdapter() }; break; } diff --git a/src/pages/Transfer/CrossChainTransferForm/index.tsx b/src/pages/Transfer/CrossChainTransferForm/index.tsx index 598726edf6..38e3d380eb 100644 --- a/src/pages/Transfer/CrossChainTransferForm/index.tsx +++ b/src/pages/Transfer/CrossChainTransferForm/index.tsx @@ -265,6 +265,10 @@ const CrossChainTransferForm = (): JSX.Element => { }; const handleSetFromChain = (chain: ChainOption) => { + // Note: this is a around but ok for now. Component will be refactored + // when we introduce support for multiple currencies per channel + setCurrency(undefined); + setToChain(undefined); setFromChain(chain); }; From 2ef28b6143a024a3f9e14c3bdbc4583a9e24f335 Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Wed, 11 Jan 2023 13:16:02 +0000 Subject: [PATCH 02/11] refactor: set toChain value on change --- src/pages/Transfer/CrossChainTransferForm/index.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pages/Transfer/CrossChainTransferForm/index.tsx b/src/pages/Transfer/CrossChainTransferForm/index.tsx index 38e3d380eb..83042a4330 100644 --- a/src/pages/Transfer/CrossChainTransferForm/index.tsx +++ b/src/pages/Transfer/CrossChainTransferForm/index.tsx @@ -265,13 +265,20 @@ const CrossChainTransferForm = (): JSX.Element => { }; const handleSetFromChain = (chain: ChainOption) => { - // Note: this is a around but ok for now. Component will be refactored + // Note: this is a workaround but ok for now. Component will be refactored // when we introduce support for multiple currencies per channel setCurrency(undefined); setToChain(undefined); setFromChain(chain); }; + const handleSetToChain = (chain: ChainOption) => { + // Note: this is a workaround but ok for now. Component will be refactored + // when we introduce support for multiple currencies per channel + setCurrency(undefined); + setToChain(chain); + }; + const handleClickBalance = () => { setValue(TRANSFER_AMOUNT, transferableBalance); handleUpdateUsdAmount(transferableBalance); @@ -331,6 +338,7 @@ const CrossChainTransferForm = (): JSX.Element => { chainOptions={toChains} label={t('transfer_page.cross_chain_transfer_form.to_chain')} selectedChain={toChain} + onChange={handleSetToChain} /> Date: Wed, 11 Jan 2023 14:32:22 +0000 Subject: [PATCH 03/11] fix: clear value on change. fix maxTransferableBalance click handler --- src/pages/Transfer/CrossChainTransferForm/index.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/Transfer/CrossChainTransferForm/index.tsx b/src/pages/Transfer/CrossChainTransferForm/index.tsx index 83042a4330..d8e85fd4bf 100644 --- a/src/pages/Transfer/CrossChainTransferForm/index.tsx +++ b/src/pages/Transfer/CrossChainTransferForm/index.tsx @@ -269,6 +269,7 @@ const CrossChainTransferForm = (): JSX.Element => { // when we introduce support for multiple currencies per channel setCurrency(undefined); setToChain(undefined); + setValue(TRANSFER_AMOUNT, '0'); setFromChain(chain); }; @@ -276,11 +277,12 @@ const CrossChainTransferForm = (): JSX.Element => { // Note: this is a workaround but ok for now. Component will be refactored // when we introduce support for multiple currencies per channel setCurrency(undefined); + setValue(TRANSFER_AMOUNT, '0'); setToChain(chain); }; const handleClickBalance = () => { - setValue(TRANSFER_AMOUNT, transferableBalance); + setValue(TRANSFER_AMOUNT, transferableBalance.toString()); handleUpdateUsdAmount(transferableBalance); trigger(TRANSFER_AMOUNT); }; From 7641e033d8d26800451c618444fdf6e2488e0671 Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Wed, 11 Jan 2023 15:02:57 +0000 Subject: [PATCH 04/11] chore: configure endpoints --- src/utils/hooks/api/xcm/use-xcm-bridge.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/utils/hooks/api/xcm/use-xcm-bridge.ts b/src/utils/hooks/api/xcm/use-xcm-bridge.ts index 6dd0fe6c17..ad19667e71 100644 --- a/src/utils/hooks/api/xcm/use-xcm-bridge.ts +++ b/src/utils/hooks/api/xcm/use-xcm-bridge.ts @@ -24,12 +24,22 @@ const getEndpoints = (chains: ChainName[]) => { 'wss://kusama.api.onfinality.io/public-ws', 'wss://kusama-rpc.dwellir.com' ], - kintsugi: ['wss://api-kusama.interlay.io/parachain', 'wss://kintsugi.api.onfinality.io/public-ws'] + kintsugi: ['wss://api-kusama.interlay.io/parachain', 'wss://kintsugi.api.onfinality.io/public-ws'], + statemine: [ + 'wss://statemine-rpc.polkadot.io', + 'wss://statemine.api.onfinality.io/public-ws', + 'wss://statemine-rpc.dwellir.com' + ] }; case chains.includes('polkadot'): return { polkadot: ['wss://rpc.polkadot.io', 'wss://polkadot.api.onfinality.io/public-ws'], - interlay: ['wss://api.interlay.io/parachain', 'wss://interlay.api.onfinality.io/public-ws'] + interlay: ['wss://api.interlay.io/parachain', 'wss://interlay.api.onfinality.io/public-ws'], + statemint: [ + 'wss://statemint-rpc.polkadot.io', + 'wss://statemint.api.onfinality.io/public-ws', + 'wss://statemint-rpc.dwellir.com' + ] }; default: From 531bbfe0fee3bee34ce2d2af5953b06e2d5476e4 Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Fri, 13 Jan 2023 12:16:35 +0000 Subject: [PATCH 05/11] refactor: interlay config --- src/config/relay-chains.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/config/relay-chains.tsx b/src/config/relay-chains.tsx index 24f3df3361..7f5ae39d16 100644 --- a/src/config/relay-chains.tsx +++ b/src/config/relay-chains.tsx @@ -1,6 +1,6 @@ import { InterlayAdapter, KintsugiAdapter } from '@interlay/bridge/build/adapters/interlay'; import { KusamaAdapter, PolkadotAdapter } from '@interlay/bridge/build/adapters/polkadot'; -import { StatemineAdapter } from '@interlay/bridge/build/adapters/statemint'; +import { StatemineAdapter, StatemintAdapter } from '@interlay/bridge/build/adapters/statemint'; import { BaseCrossChainAdapter } from '@interlay/bridge/build/base-chain-adapter'; import { CurrencyExt, @@ -154,7 +154,8 @@ switch (process.env.REACT_APP_RELAY_CHAIN_NAME) { TRANSACTION_FEE_AMOUNT = newMonetaryAmount(0.2, GOVERNANCE_TOKEN, true); XCM_ADAPTERS = { interlay: new InterlayAdapter(), - polkadot: new PolkadotAdapter() + polkadot: new PolkadotAdapter(), + statemint: new StatemintAdapter() }; break; From c74f5ce82ea38f7f98f1c3b179e69a2266cbfe9b Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Fri, 13 Jan 2023 12:21:01 +0000 Subject: [PATCH 06/11] refactor: use only parity and onfinality endpoints --- src/utils/hooks/api/xcm/use-xcm-bridge.ts | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/src/utils/hooks/api/xcm/use-xcm-bridge.ts b/src/utils/hooks/api/xcm/use-xcm-bridge.ts index ad19667e71..390d10958f 100644 --- a/src/utils/hooks/api/xcm/use-xcm-bridge.ts +++ b/src/utils/hooks/api/xcm/use-xcm-bridge.ts @@ -19,27 +19,15 @@ const getEndpoints = (chains: ChainName[]) => { switch (true) { case chains.includes('kusama'): return { - kusama: [ - 'wss://kusama-rpc.polkadot.io', - 'wss://kusama.api.onfinality.io/public-ws', - 'wss://kusama-rpc.dwellir.com' - ], + kusama: ['wss://kusama-rpc.polkadot.io', 'wss://kusama.api.onfinality.io/public-ws'], kintsugi: ['wss://api-kusama.interlay.io/parachain', 'wss://kintsugi.api.onfinality.io/public-ws'], - statemine: [ - 'wss://statemine-rpc.polkadot.io', - 'wss://statemine.api.onfinality.io/public-ws', - 'wss://statemine-rpc.dwellir.com' - ] + statemine: ['wss://statemine-rpc.polkadot.io', 'wss://statemine.api.onfinality.io/public-ws'] }; case chains.includes('polkadot'): return { polkadot: ['wss://rpc.polkadot.io', 'wss://polkadot.api.onfinality.io/public-ws'], interlay: ['wss://api.interlay.io/parachain', 'wss://interlay.api.onfinality.io/public-ws'], - statemint: [ - 'wss://statemint-rpc.polkadot.io', - 'wss://statemint.api.onfinality.io/public-ws', - 'wss://statemint-rpc.dwellir.com' - ] + statemint: ['wss://statemint-rpc.polkadot.io', 'wss://statemint.api.onfinality.io/public-ws'] }; default: From 07903334a2a6d8da5a475c80a13d90e4f24a5dd9 Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Mon, 16 Jan 2023 13:13:18 +0000 Subject: [PATCH 07/11] chore: bump bridge version --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 41a415e701..37f6424064 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@headlessui/react": "^1.1.1", "@heroicons/react": "^2.0.0", "@hookform/resolvers": "^2.9.7", - "@interlay/bridge": "^0.1.12", + "@interlay/bridge": "^0.1.13", "@interlay/interbtc-api": "1.19.0", "@material-icons/svg": "^1.0.28", "@polkadot/api": "9.8.1", diff --git a/yarn.lock b/yarn.lock index 9ded67cb73..4415e14958 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3070,10 +3070,10 @@ dependencies: browser-headers "^0.4.1" -"@interlay/bridge@^0.1.12": - version "0.1.12" - resolved "https://registry.yarnpkg.com/@interlay/bridge/-/bridge-0.1.12.tgz#74f00bd735eb5771220751d015bb4e1157bbe22b" - integrity sha512-yClLq+8xuVWnzybZET4hf+ZLVhQtmhuyBb7McgECaQX0bo6Twq1cDUO4yHvkcbZ/ykZQR8K2lLCa8uQfgcZuiA== +"@interlay/bridge@^0.1.13": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@interlay/bridge/-/bridge-0.1.13.tgz#f17974ef6b65aa541943494d682be33b9b303dce" + integrity sha512-sqh+8fTPZarLYmeCejaxOi0M/2ral4E26ViVQREt8MWFEUg1hEkaUi9AFWpqKrbHOEj8GTrI8ipNMFdqwVUMew== dependencies: "@acala-network/api" "4.1.6-23" "@acala-network/sdk" "4.1.6-23" From 745cc4e395c70cfaa98938567d71f7badc3ac7d8 Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Mon, 16 Jan 2023 13:40:42 +0000 Subject: [PATCH 08/11] fix: set transfer amount to empty string, not '0' on from chain change --- src/pages/Transfer/CrossChainTransferForm/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Transfer/CrossChainTransferForm/index.tsx b/src/pages/Transfer/CrossChainTransferForm/index.tsx index d8e85fd4bf..2bed43a03c 100644 --- a/src/pages/Transfer/CrossChainTransferForm/index.tsx +++ b/src/pages/Transfer/CrossChainTransferForm/index.tsx @@ -269,7 +269,7 @@ const CrossChainTransferForm = (): JSX.Element => { // when we introduce support for multiple currencies per channel setCurrency(undefined); setToChain(undefined); - setValue(TRANSFER_AMOUNT, '0'); + setValue(TRANSFER_AMOUNT, ''); setFromChain(chain); }; From 245bf0ce31a5420ee380495b86d25f20d2313b1f Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Mon, 16 Jan 2023 14:14:56 +0000 Subject: [PATCH 09/11] fix: state is not reset if user selects the currently selected from or to chain --- src/pages/Transfer/CrossChainTransferForm/index.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pages/Transfer/CrossChainTransferForm/index.tsx b/src/pages/Transfer/CrossChainTransferForm/index.tsx index 2bed43a03c..91221b57d8 100644 --- a/src/pages/Transfer/CrossChainTransferForm/index.tsx +++ b/src/pages/Transfer/CrossChainTransferForm/index.tsx @@ -265,6 +265,9 @@ const CrossChainTransferForm = (): JSX.Element => { }; const handleSetFromChain = (chain: ChainOption) => { + // Return from function is user clicks on current chain option + if (chain === fromChain) return; + // Note: this is a workaround but ok for now. Component will be refactored // when we introduce support for multiple currencies per channel setCurrency(undefined); @@ -274,6 +277,9 @@ const CrossChainTransferForm = (): JSX.Element => { }; const handleSetToChain = (chain: ChainOption) => { + // Return from function is user clicks on current chain option + if (chain === toChain) return; + // Note: this is a workaround but ok for now. Component will be refactored // when we introduce support for multiple currencies per channel setCurrency(undefined); From a5f278e27b9f48113d4faf11adccdd4e3f43c8be Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Mon, 16 Jan 2023 14:26:22 +0000 Subject: [PATCH 10/11] fix: reset transfer amount to empty string (which is the default, not 0) --- src/pages/Transfer/CrossChainTransferForm/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Transfer/CrossChainTransferForm/index.tsx b/src/pages/Transfer/CrossChainTransferForm/index.tsx index 91221b57d8..0ac7bba14f 100644 --- a/src/pages/Transfer/CrossChainTransferForm/index.tsx +++ b/src/pages/Transfer/CrossChainTransferForm/index.tsx @@ -283,7 +283,7 @@ const CrossChainTransferForm = (): JSX.Element => { // Note: this is a workaround but ok for now. Component will be refactored // when we introduce support for multiple currencies per channel setCurrency(undefined); - setValue(TRANSFER_AMOUNT, '0'); + setValue(TRANSFER_AMOUNT, ''); setToChain(chain); }; From f539d13ec6352a098ff9fb8521b30e0dd61695e8 Mon Sep 17 00:00:00 2001 From: Thomas Jeatt Date: Fri, 20 Jan 2023 14:11:18 +0000 Subject: [PATCH 11/11] chore: bump bridge version --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9d20fccf70..663e8f9c94 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@headlessui/react": "^1.1.1", "@heroicons/react": "^2.0.0", "@hookform/resolvers": "^2.9.7", - "@interlay/bridge": "^0.1.13", + "@interlay/bridge": "^0.1.14", "@interlay/interbtc-api": "1.19.0", "@material-icons/svg": "^1.0.28", "@polkadot/api": "9.8.1", diff --git a/yarn.lock b/yarn.lock index 4415e14958..fd3f9fbe97 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3070,10 +3070,10 @@ dependencies: browser-headers "^0.4.1" -"@interlay/bridge@^0.1.13": - version "0.1.13" - resolved "https://registry.yarnpkg.com/@interlay/bridge/-/bridge-0.1.13.tgz#f17974ef6b65aa541943494d682be33b9b303dce" - integrity sha512-sqh+8fTPZarLYmeCejaxOi0M/2ral4E26ViVQREt8MWFEUg1hEkaUi9AFWpqKrbHOEj8GTrI8ipNMFdqwVUMew== +"@interlay/bridge@^0.1.14": + version "0.1.14" + resolved "https://registry.yarnpkg.com/@interlay/bridge/-/bridge-0.1.14.tgz#5b46aa15fbe430a4e99a5b135745d8d6b9b62553" + integrity sha512-FgfkfWjRooyEAONgK6rutmUanFVYfyLL3poWeGI/dDfbr0JhLcQBRRQXg7HY37hemJXnl2+BBMyeTDxoRK0D/w== dependencies: "@acala-network/api" "4.1.6-23" "@acala-network/sdk" "4.1.6-23"