diff --git a/env.js b/env.js index 6919e551e..f6ffdbd1b 100644 --- a/env.js +++ b/env.js @@ -11,7 +11,7 @@ const sharedEnv = { PROJECT_ID: '2392473d6d98499c7138cd2d705a791f', METAKEEP_APP_ID_NATIVE: 'ad5e05fb-280a-41ae-b186-5a2654567b92', METAKEEP_APP_ID_EVM: 'd190c88f-1bb5-4e16-bc48-96dbf33b77e0', - GOOGLE_APP_ID: '639241197544-kcubenhmti6u7ef3uj360n2lcl5cmn8c.apps.googleusercontent.com', + GOOGLE_APP_ID: '56634824599-ff3iu788c32c3s7ec65cs4bieop9gpgv.apps.googleusercontent.com', }; const TESTNET = { @@ -25,8 +25,6 @@ const TESTNET = { HYPERION_ENDPOINT: 'https://testnet.telos.net', NETWORK_EXPLORER: 'https://explorer-test.telos.net', CHAIN_NAME: 'telos-testnet', - OREID_APP_ID: 't_75a4d9233ec441d18c4221e92b379197', - OREID_APP_ID_NATIVE: 't_a61e9926d5204387a9ac113dfce7cbc5', }; const MAINNET = { @@ -40,8 +38,6 @@ const MAINNET = { HYPERION_ENDPOINT: 'https://mainnet.telos.net', NETWORK_EXPLORER: 'https://explorer.telos.net', CHAIN_NAME: 'telos', - OREID_APP_ID: 'p_e5b81fcc20a04339993b0cc80df7e3fd', - OREID_APP_ID_NATIVE: 'p_751f87258d5b40998b55c626d612fd4e', }; const env = process.env.NETWORK === 'mainnet' ? MAINNET : TESTNET; diff --git a/package.json b/package.json index ec84ad1db..dbf115522 100644 --- a/package.json +++ b/package.json @@ -38,8 +38,6 @@ "mitt": "^3.0.0", "node-polyfill-webpack-plugin": "^2.0.1", "numeral": "^2.0.6", - "oreid-js": "^4.7.1", - "oreid-webpopup": "^2.4.0", "pinia": "^2.0.33", "ptokens": "^0.14.0", "qrcanvas-vue": "^3.0.0", @@ -47,7 +45,6 @@ "quasar": "2", "rxjs": "^7.8.0", "ual-anchor": "^1.1.2", - "ual-oreid": "^1.0.0", "ual-wombat": "^0.3.3", "universal-authenticator-library": "^0.3.0", "vue": "3", diff --git a/src/App.vue b/src/App.vue index 5950ecb07..3ea1b7d4e 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,12 +1,10 @@ diff --git a/src/antelope/chains/chain-constants.ts b/src/antelope/chains/chain-constants.ts index f77fabd88..cada0db55 100644 --- a/src/antelope/chains/chain-constants.ts +++ b/src/antelope/chains/chain-constants.ts @@ -10,8 +10,6 @@ export const TELOS_ANALYTICS_EVENT_IDS = { loginFailedMetamask: 'ZFGE6TFS', loginSuccessfulSafepal: 'LKCBKDU2', loginFailedSafepal: '6PSIWGNV', - loginSuccessfulOreId: 'MSXMDDNK', - loginFailedOreId: 'UFX3JYRJ', loginFailedWalletConnect: '9V4IV1BV', loginSuccessfulWalletConnect: '2EG2OR3H', }; diff --git a/src/antelope/migration.ts b/src/antelope/migration.ts deleted file mode 100644 index 23a7a0b6a..000000000 --- a/src/antelope/migration.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { - CURRENT_CONTEXT, - useAccountStore, - useBalancesStore, - useChainStore, - useNftsStore, -} from 'src/antelope'; -import { metakeepCache } from 'src/antelope/wallets/ual/utils/metakeep-cache'; - -const nftsStore = useNftsStore(); -const balanceStore = useBalancesStore(); - -export const isTodayBeforeTelosCloudDown = new Date().getTime() < new Date('2023-12-31').getTime(); - -// ----- EVM ------ -const ethPubKey = () => { - const emails = metakeepCache.getMails(); - if (emails.length > 0) { - const ethPubKey = metakeepCache.getEthAddress(emails[0]); - if (ethPubKey) { - return ethPubKey; - } - } - return ''; -}; - -const hasAnyTokenBalance = () => balanceStore.currentBalances.some(balance => !balance.amount.isNegative() && !balance.amount.isZero()); -const authenticator = () => useAccountStore().getAccount(CURRENT_CONTEXT).authenticator; -const currentAuthName = () => authenticator()?.getName() || ''; -const hasNfts = () => nftsStore.loggedInventory?.length > 0; -const hasAssets = () => hasAnyTokenBalance() || hasNfts(); -const isMigrationNeeded = () => currentAuthName() === 'OreId' && ethPubKey() !== '' && hasAssets() && isTodayBeforeTelosCloudDown; - -const evm = { - hasNfts, - hasAssets, - ethPubKey, - isMigrationNeeded, -}; - - -// ----- ZERO ------ -const accountNameZero = () => { - const emails = metakeepCache.getMails(); - if (emails.length > 0) { - const chainId = useChainStore().currentChain.settings.getChainId(); - const names = metakeepCache.getAccountNames(emails[0], chainId); - if (names.length > 0) { - return names[0]; - } - } - return ''; -}; - -const currentAuthNameZero = () => localStorage.getItem('autoLogin'); -const isMigrationNeededZero = () => currentAuthNameZero() === 'ual-oreid' && accountNameZero() !== '' && isTodayBeforeTelosCloudDown; - -const zero = { - accountName: accountNameZero, - isMigrationNeeded: isMigrationNeededZero, -}; - - -const update = () => { - metakeepCache.loadCache(); -}; - -const print = () => { - console.log('-- EVM --'); - console.log('ethPubKey', ethPubKey()); - console.log('hasNfts', hasNfts()); - console.log('hasAssets', hasAssets()); - console.log('currentAuthName', currentAuthName()); - console.log('hasAnyTokenBalance', hasAnyTokenBalance()); - console.log('isMigrationNeeded ->', isMigrationNeeded()); - console.log('-- ZERO --'); - console.log('accountName ->', accountNameZero()); - console.log('isMigrationNeeded ->', isMigrationNeededZero); - console.log('currentAuthNameZero ->', currentAuthNameZero()); -}; - -export const migration = { - update, - print, - evm, - zero, -}; diff --git a/src/antelope/stores/account.ts b/src/antelope/stores/account.ts index ab2824ab1..9262bd30d 100644 --- a/src/antelope/stores/account.ts +++ b/src/antelope/stores/account.ts @@ -39,7 +39,6 @@ import { EVMAuthenticator } from 'src/antelope/wallets'; import { truncateAddress } from 'src/antelope/stores/utils/text-utils'; import { toRaw } from 'vue'; import { getAddress } from 'ethers/lib/utils'; -import { OreIdAuthenticator } from 'ual-oreid'; export interface LoginNativeActionData { @@ -123,8 +122,7 @@ export const useAccountStore = defineStore(store_name, { await authenticator.init(); const ualUsers = await authenticator.login(); if (ualUsers?.length) { - // OreId has it's own authorization service, only init fuel service for other ual users - const ualUser = ualUsers[0] instanceof OreIdAuthenticator ? ualUsers[0] : await initFuelUserWrapper(ualUsers[0]); + const ualUser = await initFuelUserWrapper(ualUsers[0]); const permission = (ualUser as unknown as { requestPermission: string }) .requestPermission ?? 'active'; const account = await ualUser.getAccountName(); diff --git a/src/antelope/types/ual-oreid.d.ts b/src/antelope/types/ual-oreid.d.ts deleted file mode 100644 index 9b60e1900..000000000 --- a/src/antelope/types/ual-oreid.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module 'ual-oreid'; diff --git a/src/antelope/wallets/authenticators/OreIdAuth.ts b/src/antelope/wallets/authenticators/OreIdAuth.ts deleted file mode 100644 index 15dff2034..000000000 --- a/src/antelope/wallets/authenticators/OreIdAuth.ts +++ /dev/null @@ -1,309 +0,0 @@ -import { AuthProvider, ChainNetwork, OreId, OreIdOptions, JSONObject, UserChainAccount } from 'oreid-js'; -import { BigNumber, ethers } from 'ethers'; -import { WebPopup } from 'oreid-webpopup'; -import { - EvmABI, - EvmFunctionParam, -} from 'src/antelope/types'; -import { EVMAuthenticator } from 'src/antelope/wallets'; -import { - AntelopeError, - addressString, - EvmTransactionResponse, -} from 'src/antelope/types'; -import { useFeedbackStore } from 'src/antelope/stores/feedback'; -import { useChainStore } from 'src/antelope/stores/chain'; -import { RpcEndpoint } from 'universal-authenticator-library'; -import { TELOS_ANALYTICS_EVENT_IDS } from 'src/antelope/chains/chain-constants'; - -const name = 'OreId'; -export const OreIdAuthName = name; - -// This instance needs to be placed outside to avoid watch function to crash -let oreId: OreId | null = null; - -export interface AuthOreIdOptions extends OreIdOptions { - provider?: string; -} - -export class OreIdAuth extends EVMAuthenticator { - - options: AuthOreIdOptions; - userChainAccount: UserChainAccount | null = null; - // this is just a dummy label to identify the authenticator base class - constructor(options: OreIdOptions, label = name) { - super(label); - this.options = options; - } - - getNetworkNameFromChainNet(chainNetwork: ChainNetwork): string { - this.trace('getNetworkNameFromChainNet', chainNetwork); - switch (chainNetwork) { - case ChainNetwork.TelosEvmTest: - return 'telos-evm-testnet'; - case ChainNetwork.TelosEvmMain: - return 'telos-evm'; - default: - throw new AntelopeError('antelope.evm.error_invalid_chain_network'); - } - } - - getChainNetwork(network: string): ChainNetwork { - this.trace('getChainNetwork', network); - switch (network) { - case 'telos-evm-testnet': - return ChainNetwork.TelosEvmTest; - case 'telos-evm': - return ChainNetwork.TelosEvmMain; - default: - throw new AntelopeError('antelope.evm.error_invalid_chain_network'); - } - } - - async login(network: string): Promise { - this.trace('login', network); - const chainSettings = this.getChainSettings(); - const trackSuccessfulLogin = () => { - this.trace('login', 'trackAnalyticsEvent -> generic login succeeded', TELOS_ANALYTICS_EVENT_IDS.loginSuccessful); - chainSettings.trackAnalyticsEvent( - { id: TELOS_ANALYTICS_EVENT_IDS.loginSuccessful }, - ); - this.trace('login', 'trackAnalyticsEvent -> login succeeded', this.getName(), TELOS_ANALYTICS_EVENT_IDS.loginSuccessfulOreId); - chainSettings.trackAnalyticsEvent( - { id: TELOS_ANALYTICS_EVENT_IDS.loginSuccessfulOreId }, - ); - }; - - useFeedbackStore().setLoading(`${this.getName()}.login`); - const oreIdOptions: OreIdOptions = { - plugins: { popup: WebPopup() }, - ... this.options, - }; - - oreId = new OreId(oreIdOptions); - await oreId.init(); - - if ( - localStorage.getItem('autoLogin') === this.getName() && - typeof localStorage.getItem('rawAddress') === 'string' - ) { - // auto login without the popup - const chainAccount = localStorage.getItem('rawAddress') as addressString; - this.userChainAccount = { chainAccount } as UserChainAccount; - this.trace('login', 'userChainAccount', this.userChainAccount); - // track the login start for auto-login procceess - this.trace('login', 'trackAnalyticsEvent -> login started'); - chainSettings.trackAnalyticsEvent( - { id: TELOS_ANALYTICS_EVENT_IDS.loginStarted }, - ); - // then track the successful login - trackSuccessfulLogin(); - return chainAccount; - } - - this.trace('login', 'trackAnalyticsEvent -> login started'); - chainSettings.trackAnalyticsEvent( - { id: TELOS_ANALYTICS_EVENT_IDS.loginStarted }, - ); - - // launch the login flow - await oreId.popup.auth({ provider: this.provider as AuthProvider }); - const userData = await oreId.auth.user.getData(); - this.trace('login', 'userData', userData); - - this.userChainAccount = userData.chainAccounts.find( - (account: UserChainAccount) => this.getChainNetwork(network) === account.chainNetwork) ?? null; - - if (!this.userChainAccount) { - const appName = this.options.appName; - const networkName = useChainStore().getNetworkSettings(network).getDisplay(); - - this.trace('login', 'trackAnalyticsEvent -> login failed', this.getName(), TELOS_ANALYTICS_EVENT_IDS.loginFailedOreId); - chainSettings.trackAnalyticsEvent( - { id: TELOS_ANALYTICS_EVENT_IDS.loginFailedOreId }, - ); - - throw new AntelopeError('antelope.wallets.error_oreid_no_chain_account', { - networkName, - appName, - }); - } - - const address = (this.userChainAccount?.chainAccount as addressString) ?? null; - this.trace('login', 'userChainAccount', this.userChainAccount); - trackSuccessfulLogin(); - - // now we set autoLogin to this.getName() and rawAddress to the address - // to avoid the auto-login to be triggered again - localStorage.setItem('autoLogin', this.getName()); - localStorage.setItem('rawAddress', address); - - useFeedbackStore().unsetLoading(`${this.getName()}.login`); - return address; - } - - async logout(): Promise { - this.trace('logout'); - if (oreId) { - await oreId.logout(); - } - return Promise.resolve(); - } - - getName(): string { - return name; - } - - // this is the important instance creation where we define a label to assign to this instance of the authenticator - newInstance(label: string): EVMAuthenticator { - this.trace('newInstance', label); - return new OreIdAuth(this.options, label); - } - - get provider(): string { - return this.options.provider ?? ''; - } - - setProvider(provider: string): void { - this.trace('setProvider', provider); - this.options.provider = provider; - } - - - async isConnectedTo(chainId: string): Promise { - this.trace('isConnectedTo', chainId); - return true; - } - - async externalProvider(): Promise { - this.trace('externalProvider'); - return new Promise((resolve) => { - resolve(null as unknown as ethers.providers.ExternalProvider); - }); - } - - async web3Provider(): Promise { - this.trace('web3Provider'); - try { - const p:RpcEndpoint = this.getChainSettings().getRPCEndpoint(); - const url = `${p.protocol}://${p.host}:${p.port}${p.path ?? ''}`; - const jsonRpcProvider = new ethers.providers.JsonRpcProvider(url); - await jsonRpcProvider.ready; - const web3Provider = jsonRpcProvider as ethers.providers.Web3Provider; - return web3Provider; - } catch (e) { - console.error('web3Provider', e); - throw e; - } - } - - // returns the associated account address acording to the label - getAccountAddress(): addressString { - return this.userChainAccount?.chainAccount as addressString; - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - handleCatchError(error: Error): AntelopeError { - this.trace('handleCatchError', error.message); - if ( - error.message === 'Closed by user' || - error.message === 'sign_transaction_cancelled_by_user' - ) { - return new AntelopeError('antelope.evm.error_transaction_canceled'); - } else { - return new AntelopeError('antelope.evm.error_send_transaction', { error }); - } - } - - /** - * utility function to check if the user has a valid chain account and the oreId instance is initialized - */ - checkIntegrity(): boolean { - if (!this.userChainAccount) { - console.error('Inconsistency error: userChainAccount is null'); - throw new AntelopeError('antelope.evm.error_no_provider'); - } - - if (!oreId) { - console.error('Inconsistency error: oreId is null'); - throw new AntelopeError('antelope.evm.error_no_provider'); - } - - return true; - } - - async performOreIdTransaction(from: addressString, json: JSONObject): Promise { - this.trace('performOreIdTransaction', from, json); - const oreIdInstance = oreId as OreId; - - // sign a blockchain transaction - const transaction = await oreIdInstance.createTransaction({ - transaction: json, - chainAccount: from, - chainNetwork: this.getChainNetwork(this.getChainSettings().getNetwork()), - signOptions: { - broadcast: true, - returnSignedTransaction: true, - }, - }); - - // have the user approve signature - const { transactionId } = await oreIdInstance.popup.sign({ transaction }); - - return { - hash: transactionId, - wait: async () => Promise.resolve({} as ethers.providers.TransactionReceipt), - } as EvmTransactionResponse; - } - - async sendSystemToken(to: string, amount: ethers.BigNumber): Promise { - this.trace('sendSystemToken', to, amount.toString()); - const from = this.getAccountAddress(); - const value = amount.toHexString(); - - // Send the transaction - return this.performOreIdTransaction(from, { - from, - to, - value, - }).then( - (transaction: ethers.providers.TransactionResponse) => transaction, - ).catch((error) => { - throw this.handleCatchError(error); - }); - } - - async signCustomTransaction(contract: string, abi: EvmABI, parameters: EvmFunctionParam[], value?: BigNumber): Promise { - this.trace('signCustomTransaction', contract, [abi], parameters, value?.toString()); - this.checkIntegrity(); - - const from = this.getAccountAddress(); - const method = abi[0].name; - - // if the developer is passing more than one function in the abi - // we must warn we asume the first one is the one to be called - if (abi.length > 1) { - console.warn( - `signCustomTransaction: abi contains more than one function, - we asume the first one (${method}) is the one to be called`, - ); - } - - // transaction body: wrap system token - const transactionBody = { - from, - to: contract, - 'contract': { - abi, - parameters, - 'method': abi[0].name, - }, - } as unknown as JSONObject; - - if (value) { - transactionBody.value = value.toHexString(); - } - - return this.performOreIdTransaction(from, transactionBody); - } -} diff --git a/src/antelope/wallets/index.ts b/src/antelope/wallets/index.ts index b7cfadc65..d07c5ff23 100644 --- a/src/antelope/wallets/index.ts +++ b/src/antelope/wallets/index.ts @@ -1,7 +1,6 @@ export * from 'src/antelope/wallets/authenticators/EVMAuthenticator'; export * from 'src/antelope/wallets/authenticators/InjectedProviderAuth'; export * from 'src/antelope/wallets/authenticators/MetamaskAuth'; -export * from 'src/antelope/wallets/authenticators/OreIdAuth'; export * from 'src/antelope/wallets/authenticators/WalletConnectAuth'; export * from 'src/antelope/wallets/authenticators/SafePalAuth'; export * from 'src/antelope/wallets/authenticators/MetaKeepAuth'; diff --git a/src/boot/antelope.ts b/src/boot/antelope.ts index 1d74edabb..5ff2a00dd 100644 --- a/src/boot/antelope.ts +++ b/src/boot/antelope.ts @@ -1,13 +1,11 @@ import { EthereumClient } from '@web3modal/ethereum'; import { Web3ModalConfig } from '@web3modal/html'; -import { OreIdOptions } from 'oreid-js'; import { boot } from 'quasar/wrappers'; import { CURRENT_CONTEXT, installAntelope } from 'src/antelope'; import { AntelopeError } from 'src/antelope/types'; import { MetamaskAuth, WalletConnectAuth, - OreIdAuth, SafePalAuth, MetaKeepAuth, MetakeepOptions, @@ -88,11 +86,6 @@ export default boot(({ app }) => { ant.wallets.addEVMAuthenticator(new MetamaskAuth()); ant.wallets.addEVMAuthenticator(new SafePalAuth()); ant.wallets.addEVMAuthenticator(new BraveAuth()); - const oreIdOptions: OreIdOptions = { - appName: process.env.APP_NAME, - appId: process.env.OREID_APP_ID as string, - }; - ant.wallets.addEVMAuthenticator(new OreIdAuth(oreIdOptions)); const metakeepOptions: MetakeepOptions = { appName: process.env.APP_NAME as string, appId: process.env.METAKEEP_APP_ID_EVM as string, diff --git a/src/boot/ual.js b/src/boot/ual.js index a43ce3e7b..a928ff65f 100644 --- a/src/boot/ual.js +++ b/src/boot/ual.js @@ -3,8 +3,6 @@ import { UAL } from 'universal-authenticator-library'; import { Anchor } from 'ual-anchor'; import { Wombat } from 'ual-wombat'; import { CleosAuthenticator } from '@telosnetwork/ual-cleos'; -import { WebPopup } from 'oreid-webpopup'; -import { OreIdAuthenticator, AuthProvider } from 'ual-oreid'; import { Dialog, Notify, copyToClipboard } from 'quasar'; import { MetakeepAuthenticator } from 'src/antelope/wallets/ual/MetakeepUAL'; @@ -150,11 +148,6 @@ export default boot(async ({ app, store }) => { loginHandler, signHandler, }), - new OreIdAuthenticator([chain], { - appId: process.env.OREID_APP_ID_NATIVE, - plugins: { popup: WebPopup() }, - }, - AuthProvider.Google), new MetakeepAuthenticator([chain], { appName: process.env.APP_NAME, appId: process.env.METAKEEP_APP_ID_NATIVE, diff --git a/src/i18n/en-us/index.js b/src/i18n/en-us/index.js index 63539284a..703b14a9d 100644 --- a/src/i18n/en-us/index.js +++ b/src/i18n/en-us/index.js @@ -30,12 +30,12 @@ export default { wallet_logo_alt: 'Telos Wallet logo', view_any_account: 'View Any Account', connect_with_wallet: 'Connect Your Wallet', - login_with_social_media: 'Telos Cloud Wallet', + telos_cloud_wallet: 'Telos Cloud Wallet', sign_with_google: 'Sign with Google', sign_with_facebook: 'Sign with Facebook', sign_with_x: 'Sign with X', sign_with_email: 'Sign in with Email', - coming_soon: 'Coming soon', + login_with_social_media: 'Login with Social Media', create_new_account: 'Create a New Account', logged_as: 'Connected as {account}', view_wallet: 'View Wallet', @@ -662,7 +662,6 @@ export default { wallets: { error_system_token_transfer_config: 'Error getting Wagmi system token transfer config', error_token_transfer_config: 'Error getting Wagmi token transfer config', - error_oreid_no_chain_account: 'The app {appName} does not have a chain account for the chain {networkName}', network_switch_success: 'Network switched successfully', }, wrap: { @@ -685,25 +684,4 @@ export default { years: 'years', }, }, - temporal: { - telos_cloud_discontinued_title: 'Important', - telos_cloud_discontinued_message_title: 'Attention Users: Telos Cloud Wallet account option will be discontinued.', - telos_cloud_discontinued_message_body:'The Telos Cloud Wallet (ORE ID via Google) account option to connect and sign transactions will be discontinued after December 31st. If you use the Telos Cloud Wallet to access your account, please transfer your assets to another wallet before this deadline. This change does not impact users accessing their accounts via Metamask, WalletConnect, Anchor, or other sign-in methods.', - welcome_new_telos_cloud_title_part_1: 'New Telos Cloud Wallet', - welcome_new_telos_cloud_title_part_2: 'Welcome back', - welcome_new_telos_cloud: 'If you are new to Telos Cloud Wallet, please sign in with your Google account to create a new Telos account.', - warn_old_telos_cloud_users_title: 'Attention Old Users', - warn_old_telos_cloud_users_part_1: 'If you are an old Telos Cloud Wallet user, you need to log in first with the Google button above in order to create your brand-new account. Then log out and come back here to start the migration.', - warn_old_telos_cloud_users_part_2: 'now you can start migrating all your assets to your new account. Please click the button below to start the migration.', - - you_need_to_migrate_title: 'Migrate your assets', - you_need_to_migrate_sub_title: 'The access to this account will be discontinued, therefore you need to migrate your assets to a new account.', - you_need_to_migrate_nfts_first: 'You should transfer all your collectibles to your new account first, and then continue with your tokens.', - you_need_to_migrate_all_tokens: 'You must transfer all your tokens to your new account.', - you_need_to_migrate_nfts_title: 'Migrate your collectibles', - - assisted_migration_title: 'Assisted Migration', - assisted_migration_msg_1: 'We have detected that you had logged in previously with your Google account and you obtained the following account:', - assisted_migration_msg_2: 'This account is going to be suggested for you to facilitate the migration process. However, you are free to choose any other account you want.', - }, }; diff --git a/src/pages/evm/nfts/NftInventoryPage.vue b/src/pages/evm/nfts/NftInventoryPage.vue index 3782bdb4b..c8f9f034c 100644 --- a/src/pages/evm/nfts/NftInventoryPage.vue +++ b/src/pages/evm/nfts/NftInventoryPage.vue @@ -19,7 +19,6 @@ import { truncateText } from 'src/antelope/stores/utils/text-utils'; import EVMChainSettings from 'src/antelope/chains/EVMChainSettings'; import TableControls from 'components/evm/TableControls.vue'; import { truncateAddress } from 'src/antelope/stores/utils/text-utils'; -import { migration } from 'src/antelope/migration'; const nftStore = useNftsStore(); const chainStore = useChainStore(); @@ -317,26 +316,6 @@ onUnmounted(() => { clearInterval(timer); }); -// -- migration -- -const migrationNotified = ref(false); -watch(nftsToShow, (nfts) => { - if (migration.evm.isMigrationNeeded() && nftsToShow.value.length > 0 && !migrationNotified.value) { - migrationNotified.value = true; - const ant = getAntelope(); - ant.config.notifyRememberInfoHandler( - $t('temporal.you_need_to_migrate_title'), - [{ - tag: 'p', - class: '', - text: $t('temporal.you_need_to_migrate_nfts_first'), - }], - '', - 'telos-cloud-migration-nfts', - ); - } -}); -// -------------- -