From 97eee524259494aff4ef6815db5c303c9d1a4c97 Mon Sep 17 00:00:00 2001 From: Bobo Date: Fri, 13 Oct 2023 08:29:41 +0200 Subject: [PATCH 01/16] useNft hook --- .../header/modals/ModalAccountUnification.vue | 7 +++++ .../modals/account-unification/AuStep3.vue | 9 ++++-- .../modals/account-unification/SelectNft.vue | 17 +++++++++-- src/hooks/useNft.ts | 28 +++++++++++++++++++ 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 src/hooks/useNft.ts diff --git a/src/components/header/modals/ModalAccountUnification.vue b/src/components/header/modals/ModalAccountUnification.vue index 5bb23852a..dfbda9341 100644 --- a/src/components/header/modals/ModalAccountUnification.vue +++ b/src/components/header/modals/ModalAccountUnification.vue @@ -31,6 +31,7 @@ :is-fetching-xc20-tokens="isFetchingXc20Tokens" :is-edit="false" @next="updateSteps(transferXc20Tokens.length > 0 ? 4 : 5)" + @on-select-nft="updateSteps(200)" />
@@ -68,6 +69,9 @@
+
+ +
-
@@ -78,12 +78,16 @@ export default defineComponent({ default: false, }, }, - emits: ['next'], + emits: ['next', 'onSelectNft'], setup(props, { emit }) { const next = () => { emit('next'); }; + const selectNft = () => { + emit('onSelectNft'); + }; + const { currentAccount } = useAccount(); const accountNameSet = ref(false); @@ -102,6 +106,7 @@ export default defineComponent({ accountNameSet, next, updateAccountName, + selectNft, }; }, }); diff --git a/src/components/header/modals/account-unification/SelectNft.vue b/src/components/header/modals/account-unification/SelectNft.vue index f0d5d3dfd..ca32742ba 100644 --- a/src/components/header/modals/account-unification/SelectNft.vue +++ b/src/components/header/modals/account-unification/SelectNft.vue @@ -13,22 +13,35 @@
- Next + Next
+ + diff --git a/src/components/header/modals/account-unification/AuStep3.vue b/src/components/header/modals/account-unification/AuStep3.vue index 822b7c0af..d68ff835d 100644 --- a/src/components/header/modals/account-unification/AuStep3.vue +++ b/src/components/header/modals/account-unification/AuStep3.vue @@ -41,7 +41,7 @@
{{ isEdit ? $t('wallet.unifiedAccount.save') : $t('next') }} @@ -74,6 +74,10 @@ export default defineComponent({ type: Boolean, required: true, }, + isBusy: { + type: Boolean, + required: true, + }, isEdit: { type: Boolean, default: false, diff --git a/src/components/header/modals/account-unification/SelectNft.vue b/src/components/header/modals/account-unification/SelectNft.vue index 94a881421..0bcc5433e 100644 --- a/src/components/header/modals/account-unification/SelectNft.vue +++ b/src/components/header/modals/account-unification/SelectNft.vue @@ -10,10 +10,10 @@ >
-
- You don't have NFTs minted at the moment. When you mint some you will be able to update your - unified account with a NFT. For the moment default icon will be used. -
+ +
+ You don't have NFTs minted at the moment. When you mint some you will be able to update your + unified account with a NFT. For the moment default icon will be used.
@@ -25,7 +25,8 @@ - - diff --git a/src/components/assets/styles/account.scss b/src/components/assets/styles/account.scss index e6f5f60a9..416f84489 100644 --- a/src/components/assets/styles/account.scss +++ b/src/components/assets/styles/account.scss @@ -127,12 +127,6 @@ cursor: pointer; } -.container--lockdrop-warning { - background: $warning-yellow; - border-radius: 6px; - padding: 16px 24px; -} - .text--warning-bold { color: $navy-1; font-weight: 700; diff --git a/src/components/assets/styles/modal-lockdrop-warning.scss b/src/components/assets/styles/modal-lockdrop-warning.scss deleted file mode 100644 index fff9e5b9b..000000000 --- a/src/components/assets/styles/modal-lockdrop-warning.scss +++ /dev/null @@ -1,65 +0,0 @@ -@import 'src/css/quasar.variables.scss'; - -.wrapper__row--button { - display: flex; - justify-content: center; -} - -.button--confirm { - width: 344px; - font-size: 22px; - font-weight: 600; - height: 44px; - @media (min-width: $sm) { - width: 412px; - } -} - -.row--title { - display: flex; - justify-content: center; - column-gap: 8px; - margin-bottom: 28px; - width: 100%; - color: $warning-yellow; - font-size: 32px; - font-weight: 700; -} - -.box--list { - margin-bottom: 24px; - padding: 0px 14px; - @media (min-width: $sm) { - padding: 0; - } -} - -.row--end-date { - width: 100%; - text-align: center; - padding: 24px; - background-color: $warning-yellow; - margin-bottom: 32px; - color: $navy-1; - font-weight: 800; - font-size: 20px; -} - -.icon--warning { - margin-top: -4px; -} - -.text--message { - font-weight: 600; -} - -.row--message { - margin-bottom: 32px; - padding: 0px 14px; - @media (min-width: $sm) { - padding: 0; - } -} - -.body--dark { -} diff --git a/src/config/chainEndpoints.ts b/src/config/chainEndpoints.ts index fbe5cffbc..bc74e522d 100644 --- a/src/config/chainEndpoints.ts +++ b/src/config/chainEndpoints.ts @@ -39,7 +39,7 @@ export const providerEndpoints: ChainProvider[] = [ info: 'Smart contract platform for decentralized applications (dapps) on the Polkadot network', endpoints: [ { name: 'Astar', endpoint: 'wss://rpc.astar.network' }, - // { name: 'Dwellir', endpoint: 'wss://astar-rpc.dwellir.com' }, + { name: 'Dwellir', endpoint: 'wss://astar-rpc.dwellir.com' }, { name: 'Blast', endpoint: 'wss://astar.public.blastapi.io' }, { name: 'OnFinality', endpoint: 'wss://astar.api.onfinality.io/public-ws' }, { name: 'RadiumBlock', endpoint: 'wss://astar.public.curie.radiumblock.co/ws' }, @@ -68,7 +68,7 @@ export const providerEndpoints: ChainProvider[] = [ info: 'Smart contract platform for decentralized applications (dapps) on the Kusama network', endpoints: [ { name: 'Shiden', endpoint: 'wss://rpc.shiden.astar.network' }, - // { name: 'Dwellir', endpoint: 'wss://shiden-rpc.dwellir.com' }, + { name: 'Dwellir', endpoint: 'wss://shiden-rpc.dwellir.com' }, { name: 'Blast', endpoint: 'wss://shiden.public.blastapi.io' }, { name: 'OnFinality', endpoint: 'wss://shiden.api.onfinality.io/public-ws' }, { name: 'Light Client (experimental)', endpoint: 'light://substrate-connect/kusama/shiden' }, @@ -96,7 +96,7 @@ export const providerEndpoints: ChainProvider[] = [ info: 'The test network of the layer 2 scaling blockchain', endpoints: [ { name: 'Shibuya', endpoint: 'wss://rpc.shibuya.astar.network' }, - // { name: 'Dwellir', endpoint: 'wss://shibuya-rpc.dwellir.com' }, + { name: 'Dwellir', endpoint: 'wss://shibuya-rpc.dwellir.com' }, { name: 'Blast', endpoint: 'wss://shibuya.public.blastapi.io/' }, { name: 'Light Client (experimental)', endpoint: 'light://substrate-connect/tokyo/shibuya' }, ], diff --git a/src/i18n/en-US/index.ts b/src/i18n/en-US/index.ts index 71ca21b7c..d0f1fcedd 100644 --- a/src/i18n/en-US/index.ts +++ b/src/i18n/en-US/index.ts @@ -94,7 +94,6 @@ export default { staking: 'Staking', contract: 'Contract', ecosystem: 'Ecosystem', - plasmLockdrop: 'Plasm Lockdrop', closeSidebar: 'Close sidebar', twitter: 'Twitter', telegram: 'Telegram', @@ -440,7 +439,6 @@ export default { xvmAssets: 'XVM (Cross Virtual Machine) ERC-20 Assets', nativeAccount: 'Native Account', evmAccount: 'EVM Account', - switchToNative: 'Switch to Lockdrop', switchToEvm: 'Switch to EVM', totalBalance: 'Total Balance', transfer: 'Transfer', @@ -460,8 +458,6 @@ export default { yourEvmDeposit: 'Your EVM deposit', yourVestingInfo: 'Your Vesting Info', yourStaking: 'Your Staking', - lockdropAccount: 'Lockdrop Account', - inLockdropAccount: 'You are in a Lockdrop account', cantTransferToExcahges: "You can't transfer to Exchanges", noHash: 'Your transaction will not have a hash', addToWallet: 'Add to wallet', @@ -562,16 +558,6 @@ export default { tooltip: 'We keep {amount} {symbol} in origin chain account to avoid losing the funds. When depositing from origin chain, only tokens that are above the minimum balance are transferable.', }, - lockdropWarning: { - message: - 'The Lockdrop account will be deprecated in the upcoming update, as its purpose has been fulfilled. Please transfer your funds to another substrate wallet immediately.', - list1: - "Please transfer your funds from this account by the specified date. Retrieval won't be possible after that.", - list2: - 'Please note that unstaking in dApp staking will require 10 eras (approximately 10 days).', - closeTime: 'UTC 23:59 12th September 2023', - gotIt: 'Got it', - }, }, }, dashboard: { diff --git a/src/i18n/fr/index.ts b/src/i18n/fr/index.ts index 6d6f4a3f7..1d5b09139 100644 --- a/src/i18n/fr/index.ts +++ b/src/i18n/fr/index.ts @@ -74,7 +74,6 @@ export default { dappStaking: 'dApp Staking', staking: 'Mise en jeu', contract: 'Contrat', - plasmLockdrop: 'Plasm Lockdrop', closeSidebar: 'Fermer la barre latérale', twitter: 'Twitter', telegram: 'Telegram', @@ -317,7 +316,6 @@ export default { xvmAssets: 'Actifs XVM ERC20', nativeAccount: 'Compte natif', evmAccount: 'Compte EVM', - switchToNative: 'Basculer vers le Lockdrop', switchToEvm: 'Basculer vers EVM', totalBalance: 'Solde total', transfer: 'Transférer', @@ -333,8 +331,6 @@ export default { yourEvmDeposit: 'Votre dépôt EVM', yourVestingInfo: 'Vos informations de Vesting', yourStaking: 'Votre mise en jeu', - lockdropAccount: 'Compte de Lockdrop', - inLockdropAccount: 'Vous vous trouvez sur un compte Lockdrop', cantTransferToExcahges: 'Vous ne pouvez pas transférer vers des exchanges', noHash: "Votre transaction n'aura pas de hash", addToWallet: 'Ajouter au portefeuille', diff --git a/src/i18n/it/index.ts b/src/i18n/it/index.ts index ccb8e076d..4d249d641 100644 --- a/src/i18n/it/index.ts +++ b/src/i18n/it/index.ts @@ -71,7 +71,6 @@ export default { dappStaking: 'dApp Staking', staking: 'Staking', contract: 'Contratto', - plasmLockdrop: 'Plasm Lockdrop', closeSidebar: 'Chiudi barra laterale', twitter: 'Twitter', telegram: 'Telegram', @@ -313,7 +312,7 @@ export default { xvmAssets: 'Asset XVM ERC20', nativeAccount: 'Account Nativo', evmAccount: 'Account EVM', - switchToNative: 'Passa al Lockdrop', + switchToEvm: 'Passa a EVM', totalBalance: 'Bilancio Totale', transfer: 'Trasferisci', @@ -329,8 +328,6 @@ export default { yourEvmDeposit: 'Il tuo deposito EVM', yourVestingInfo: 'Informazioni Vesting', yourStaking: 'Il tuo Staking', - lockdropAccount: 'Account Lockdrop', - inLockdropAccount: 'Sei in un account Lockdrop', cantTransferToExcahges: 'Non puoi trasferire agli Exchange', noHash: 'La tua transazione non avrà un hash', addToWallet: 'Aggiungi al wallet', diff --git a/src/i18n/ja/index.ts b/src/i18n/ja/index.ts index a12de357c..d0a3ff7c3 100644 --- a/src/i18n/ja/index.ts +++ b/src/i18n/ja/index.ts @@ -70,7 +70,6 @@ export default { dappStaking: 'dApp Staking', staking: 'Staking', contract: 'Contract', - plasmLockdrop: 'Plasm Lockdrop', closeSidebar: 'Close sidebar', twitter: 'Twitter', telegram: 'Telegram', @@ -311,7 +310,6 @@ export default { xvmAssets: 'XVM ERC-20 Assets', nativeAccount: 'Native Account', evmAccount: 'EVM Account', - switchToNative: 'Switch to Lockdrop', switchToEvm: 'Switch to EVM', totalBalance: 'Total Balance', transfer: 'Transfer', @@ -327,8 +325,6 @@ export default { yourEvmDeposit: 'Your EVM deposit', yourVestingInfo: 'Your Vesting Info', yourStaking: 'Your Staking', - lockdropAccount: 'Lockdrop Account', - inLockdropAccount: 'You are in a Lockdrop account', cantTransferToExcahges: '取引所には送金できません。', noHash: 'このトランザクションにハッシュはつきません。', addToWallet: 'Add to wallet', diff --git a/src/i18n/kr/index.ts b/src/i18n/kr/index.ts index 7ff2b2ed0..6a5672fe3 100644 --- a/src/i18n/kr/index.ts +++ b/src/i18n/kr/index.ts @@ -70,7 +70,6 @@ export default { dappStaking: '디앱 스테이킹', staking: '스테이킹', contract: '컨트랙트', - plasmLockdrop: '플라즘 락드롭', closeSidebar: '사이드바 닫기', twitter: '트위터', telegram: '텔레그램', @@ -325,8 +324,6 @@ export default { yourEvmDeposit: 'EVM 예치금', yourVestingInfo: '베스팅 정보', yourStaking: '스테이킹 수량', - lockdropAccount: '락드롭 계정', - inLockdropAccount: '락드롭 계정에 연결', cantTransferToExcahges: '거래소로 전송 불가', noHash: '거래 해시 없음', addToWallet: '지갑에 추가', diff --git a/src/i18n/pt/index.ts b/src/i18n/pt/index.ts index 05f21b972..64e58d815 100644 --- a/src/i18n/pt/index.ts +++ b/src/i18n/pt/index.ts @@ -70,7 +70,6 @@ export default { dappStaking: 'dApp Staking', staking: 'Staking', contract: 'Contrato', - plasmLockdrop: 'Plasm Lockdrop', closeSidebar: 'Fechar barra lateral', twitter: 'Twitter', telegram: 'Telegram', @@ -310,7 +309,6 @@ export default { xvmAssets: 'Ativos XVM ERC20', nativeAccount: 'Conta Nativa', evmAccount: 'Conta EVM', - switchToNative: 'Alternar para Lockdrop', switchToEvm: 'Alternar para EVM', totalBalance: 'Saldo Total', transfer: 'Transferir', @@ -326,8 +324,6 @@ export default { yourEvmDeposit: 'Seu Depósito EVM', yourVestingInfo: 'Suas Infos de Vesting', yourStaking: 'Seu Stake', - lockdropAccount: 'Conta Lockdrop', - inLockdropAccount: 'Você está em uma conta Lockdrop', cantTransferToExcahges: 'Você não pode transferir para Corretoras', noHash: 'Sua transação não terá um hash', addToWallet: 'Adicionar à carteira', diff --git a/src/i18n/zh-TW/index.ts b/src/i18n/zh-TW/index.ts index 63688b9b1..8af8af1ef 100644 --- a/src/i18n/zh-TW/index.ts +++ b/src/i18n/zh-TW/index.ts @@ -14,7 +14,6 @@ export default { darkMode: '夜間模式', dApps: 'dApps', store: 'Store', - plasmLockdrop: 'Plasm 鎖倉空投', closeSidebar: '關閉側邊欄', twitter: 'Twitter', telegram: 'Telegram', diff --git a/src/i18n/zh/index.ts b/src/i18n/zh/index.ts index 07b2b5b77..e7263398c 100644 --- a/src/i18n/zh/index.ts +++ b/src/i18n/zh/index.ts @@ -14,7 +14,6 @@ export default { darkMode: '夜间模式', dApps: 'dApps', store: 'Store', - plasmLockdrop: 'Plasm 锁仓空投', closeSidebar: '关闭侧边栏', twitter: 'Twitter', telegram: 'Telegram', diff --git a/src/v2/app.container.ts b/src/v2/app.container.ts index 940687064..01cd9d704 100644 --- a/src/v2/app.container.ts +++ b/src/v2/app.container.ts @@ -71,21 +71,14 @@ import { IdentityRepository } from './repositories/implementations/IdentityRepos let currentWalletType = WalletType.Polkadot; let currentWalletName = ''; -// Todo: delete after we remove the lockdrop service -let isLockdropAccount = false; - -export function setCurrentWallet( - isEthWallet: boolean, - currentWallet: string, - isLockdrop: boolean -): void { + +export function setCurrentWallet(isEthWallet: boolean, currentWallet: string): void { if (!currentWallet) { return; } currentWalletType = isEthWallet ? WalletType.Metamask : WalletType.Polkadot; currentWalletName = currentWallet; - isLockdropAccount = isLockdrop; container.removeConstant(Symbols.CurrentWallet); container.addConstant(Symbols.CurrentWallet, currentWalletName); @@ -116,7 +109,7 @@ export default function buildDependencyContainer(network: endpointKey): void { .toFactory(() => { return () => container.get( - currentWalletType === WalletType.Polkadot || isLockdropAccount + currentWalletType === WalletType.Polkadot ? Symbols.DappStakingService : Symbols.EvmDappStakingService ); From 29f1bdc82a9194a19d252c5b025cacf5d22c28c9 Mon Sep 17 00:00:00 2001 From: Gregory Luneau Date: Mon, 16 Oct 2023 08:07:33 -0500 Subject: [PATCH 10/16] feat: Add Metamask Astar Snap to native wallet options (#933) * add snap to native wallet options * Compilation errors fix * Fix for compilation errors fix * snap utils * no extra line * inject * extension listed * 3rd time is the charm * feat: updated UI logic for the MetaMask snap (#941) * fix: connect to metamask snap smoothly * fix: allow the snap only on Shibuya, moved snapUtils to the snap module * fix: updated loading animation * fix: display accounts after users add Astar and Polkadot Snap (#949) * fix: enable MetaMask snap only in dev mode (#952) * remove console logs * remove unused code * remove unused ethereum provider * Update ModalConnectWallet.vue * Update useAccount.ts * fix: enable snap in staging * fix: build error * using astar npm * correct snapId --------- Co-authored-by: Bobo Co-authored-by: impelcrypto <92044428+impelcrypto@users.noreply.github.com> Co-authored-by: impelcrypto --- package.json | 2 + src/boot/api.ts | 10 +- .../header/modals/ModalConnectWallet.vue | 63 +++++++++--- src/config/wallets.ts | 13 +++ src/hooks/types/CustomSignature.ts | 8 -- src/hooks/useAccount.ts | 15 ++- src/hooks/useConnectWallet.ts | 3 +- src/hooks/wallet/useAccountUnification.ts | 2 +- src/modules/snap/index.ts | 98 +++++++++++++++++++ .../implementations/PolkadotWalletService.ts | 12 ++- yarn.lock | 20 +++- 11 files changed, 214 insertions(+), 32 deletions(-) create mode 100644 src/modules/snap/index.ts diff --git a/package.json b/package.json index 2ed9608a0..07f632d7a 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,8 @@ "dependencies": { "@astar-network/astar-sdk-core": "^0.2.5", "@astar-network/astar-ui": "^0.0.104", + "@astar-network/metamask-astar-adapter": "^0.5.4", + "@astar-network/metamask-astar-types": "^0.6.1", "@ethersproject/bignumber": "^5.5.0", "@polkadot/api": "^10.9.1", "@polkadot/api-contract": "^10.9.1", diff --git a/src/boot/api.ts b/src/boot/api.ts index 4b22434ab..cb831f385 100644 --- a/src/boot/api.ts +++ b/src/boot/api.ts @@ -16,7 +16,9 @@ import { useExtensions } from 'src/hooks/useExtensions'; import { useMetaExtensions } from 'src/hooks/useMetaExtensions'; import { computed, ref, watchPostEffect } from 'vue'; import Web3 from 'web3'; -import { supportWalletObj } from 'src/config/wallets'; +import { SupportWallet, supportWalletObj } from 'src/config/wallets'; +import { initiatePolkdatodSnap } from 'src/modules/snap'; +import { initPolkadotSnap } from '@astar-network/metamask-astar-adapter'; let $api: ApiPromise | undefined; const $web3 = ref(); @@ -131,6 +133,12 @@ export default boot(async ({ store }) => { // execute extension process automatically if selectedAddress is linked or mobile device const wallet = String(localStorage.getItem(SELECTED_WALLET)); const isSubstrateWallet = supportWalletObj.hasOwnProperty(wallet); + + if (wallet === SupportWallet.Snap) { + const isSnapInstalled = await initiatePolkdatodSnap(); + isSnapInstalled && (await initPolkadotSnap()); + } + if (isSubstrateWallet) { if (selectedAddress !== null || isMobileDevice) { const { extensions } = useExtensions(api, store); diff --git a/src/components/header/modals/ModalConnectWallet.vue b/src/components/header/modals/ModalConnectWallet.vue index 40e8ba992..a6ed57270 100644 --- a/src/components/header/modals/ModalConnectWallet.vue +++ b/src/components/header/modals/ModalConnectWallet.vue @@ -13,7 +13,7 @@
-
-
+
@@ -39,12 +39,13 @@
-
@@ -54,7 +55,7 @@ {{ castWalletName(wallet.name) }}
-
+
@@ -108,7 +109,7 @@
-
PolkaSafe
-
+
@@ -151,22 +152,27 @@