From 2fb4a9d0d310b68c665b5f4b947420b4bf9d41cb Mon Sep 17 00:00:00 2001 From: Prochmi99 <152851523+MiroslavProchazka@users.noreply.github.com> Date: Sat, 25 Jan 2025 23:23:39 +0100 Subject: [PATCH 1/5] chore(suite): basic deprecation on suite level --- .../src/components/CoinLogo/coins.ts | 11 ++- packages/theme/src/coinsColors.ts | 5 - suite-common/suite-constants/src/protocol.ts | 14 --- .../wallet-config/src/networksConfig.ts | 94 ------------------- suite-common/wallet-config/src/types.ts | 5 - 5 files changed, 10 insertions(+), 119 deletions(-) diff --git a/packages/product-components/src/components/CoinLogo/coins.ts b/packages/product-components/src/components/CoinLogo/coins.ts index 787c4329ce5..e7ab82c7396 100644 --- a/packages/product-components/src/components/CoinLogo/coins.ts +++ b/packages/product-components/src/components/CoinLogo/coins.ts @@ -1,7 +1,16 @@ import { NetworkSymbol } from '@suite-common/wallet-config'; // These coins are not supported in Suite, but exist in Trezor Connect -export type LegacyNetworkSymbol = 'eos' | 'nem' | 'xlm' | 'xtz'; +export type LegacyNetworkSymbol = + | 'eos' + | 'nem' + | 'xlm' + | 'xtz' + | 'dash' + | 'dgb' + | 'nmc' + | 'vtc' + | 'btg'; export const COINS: Record = { ada: require('../../images/coins/ada.svg'), diff --git a/packages/theme/src/coinsColors.ts b/packages/theme/src/coinsColors.ts index 88d6c33b6ba..b9532c8059e 100644 --- a/packages/theme/src/coinsColors.ts +++ b/packages/theme/src/coinsColors.ts @@ -11,9 +11,6 @@ export const coinsColors: CoinsColors = { bch: '#0ac18e', bsc: '#f0b90b', btc: '#f29937', - btg: '#3b5185', - dash: '#1796e4', - dgb: '#3a75c9', doge: '#c8af47', dsol: '#9945ff', etc: '#60c67e', @@ -21,7 +18,6 @@ export const coinsColors: CoinsColors = { ltc: '#a6a8a9', op: '#ff0720', pol: '#7b3fe4', - nmc: '#186c9d', regtest: '#e75f5f', sol: '#9945ff', tada: '#3468d1', @@ -29,7 +25,6 @@ export const coinsColors: CoinsColors = { thol: '#454a75', tsep: '#454a75', txrp: '#e75f5f', - vtc: '#1b9065', xrp: '#24292e', zec: '#f5b300', }; diff --git a/suite-common/suite-constants/src/protocol.ts b/suite-common/suite-constants/src/protocol.ts index 425f53eff97..858688f0df8 100644 --- a/suite-common/suite-constants/src/protocol.ts +++ b/suite-common/suite-constants/src/protocol.ts @@ -5,12 +5,7 @@ export type Protocol = | 'btc' | 'litecoin' | 'bitcoincash' - | 'bitcoingold' - | 'dash' - | 'digibyte' | 'dogecoin' - | 'namecoin' - | 'vertcoin' | 'zcash' | 'ethereum' | 'ethclassic' @@ -27,11 +22,7 @@ export type Protocol = | 'bch' | 'bsc' | 'bnb' - | 'btg' - | 'dgb' | 'doge' - | 'nmc' - | 'vtc' | 'zec' | 'eth' | 'etc' @@ -58,12 +49,7 @@ export const NETWORK_TO_PROTOCOLS: Record = { btc: ['bitcoin', 'btc'], ltc: ['litecoin', 'ltc'], bch: ['bitcoincash', 'bch'], - btg: ['bitcoingold', 'btg'], - dash: ['dash'], - dgb: ['digibyte', 'dgb'], doge: ['dogecoin', 'doge'], - nmc: ['namecoin', 'nmc'], - vtc: ['vertcoin', 'vtc'], zec: ['zcash', 'zec'], eth: ['ethereum', 'eth'], etc: ['ethclassic', 'etc'], diff --git a/suite-common/wallet-config/src/networksConfig.ts b/suite-common/wallet-config/src/networksConfig.ts index c5a67e78c20..013a7bf307d 100644 --- a/suite-common/wallet-config/src/networksConfig.ts +++ b/suite-common/wallet-config/src/networksConfig.ts @@ -361,100 +361,6 @@ export const networks = { coingeckoId: 'zcash', tradeCryptoId: 'zcash', }, - dash: { - symbol: 'dash', - displaySymbol: 'DASH', - name: 'Dash', - networkType: 'bitcoin', - bip43Path: "m/44'/5'/i'", - decimals: 8, - testnet: false, - explorer: getExplorerUrls('https://dash1.trezor.io', 'bitcoin'), - features: ['sign-verify'], - backendTypes: ['blockbook'], - accountTypes: {}, - coingeckoId: 'dash', - tradeCryptoId: 'dash', - }, - btg: { - symbol: 'btg', - displaySymbol: 'BTG', - name: 'Bitcoin Gold', - networkType: 'bitcoin', - bip43Path: "m/49'/156'/i'", - decimals: 8, - testnet: false, - explorer: getExplorerUrls('https://btg1.trezor.io', 'bitcoin'), - features: ['sign-verify'], - backendTypes: ['blockbook'], - accountTypes: { - legacy: { - accountType: 'legacy', - bip43Path: "m/44'/156'/i'", - }, - }, - coingeckoId: 'bitcoin-gold', - tradeCryptoId: 'bitcoin-gold', - }, - dgb: { - symbol: 'dgb', - displaySymbol: 'DGB', - name: 'DigiByte', - networkType: 'bitcoin', - bip43Path: "m/49'/20'/i'", - decimals: 8, - testnet: false, - explorer: getExplorerUrls('https://dgb1.trezor.io', 'bitcoin'), - features: ['sign-verify'], - backendTypes: ['blockbook'], - accountTypes: { - legacy: { - accountType: 'legacy', - bip43Path: "m/44'/20'/i'", - }, - }, - coingeckoId: 'digibyte', - tradeCryptoId: 'digibyte', - }, - nmc: { - symbol: 'nmc', - displaySymbol: 'NMC', - name: 'Namecoin', - networkType: 'bitcoin', - bip43Path: "m/44'/7'/i'", - decimals: 8, - testnet: false, - explorer: getExplorerUrls('https://nmc1.trezor.io', 'bitcoin'), - features: ['sign-verify'], - backendTypes: ['blockbook'], - accountTypes: {}, - coingeckoId: 'namecoin', - tradeCryptoId: 'namecoin', - }, - vtc: { - symbol: 'vtc', - displaySymbol: 'VTC', - name: 'Vertcoin', - networkType: 'bitcoin', - bip43Path: "m/84'/28'/i'", - decimals: 8, - testnet: false, - explorer: getExplorerUrls('https://vtc1.trezor.io', 'bitcoin'), - features: ['sign-verify'], - backendTypes: ['blockbook'], - accountTypes: { - segwit: { - accountType: 'segwit', - bip43Path: "m/49'/28'/i'", - }, - legacy: { - accountType: 'legacy', - bip43Path: "m/44'/28'/i'", - }, - }, - coingeckoId: 'vertcoin', - tradeCryptoId: 'vertcoin', - }, // testnets test: { symbol: 'test', diff --git a/suite-common/wallet-config/src/types.ts b/suite-common/wallet-config/src/types.ts index 296d69b534d..3038ce36355 100644 --- a/suite-common/wallet-config/src/types.ts +++ b/suite-common/wallet-config/src/types.ts @@ -8,12 +8,7 @@ export type NetworkSymbol = | 'etc' | 'xrp' | 'bch' - | 'btg' - | 'dash' - | 'dgb' | 'doge' - | 'nmc' - | 'vtc' | 'zec' | 'ada' | 'sol' From 8f04ea5b769469af693533899e918911956aa755 Mon Sep 17 00:00:00 2001 From: Prochmi99 <152851523+MiroslavProchazka@users.noreply.github.com> Date: Fri, 3 Jan 2025 09:36:05 +0100 Subject: [PATCH 2/5] chore(suite-native): basic deprecation on suite lite level chore(suite-native): basic deprecation on suite lite level --- suite-native/config/src/supportedNetworks.ts | 27 ++----------------- suite-native/discovery/src/discoveryThunks.ts | 5 ---- .../src/components/DevXpub.tsx | 2 -- 3 files changed, 2 insertions(+), 32 deletions(-) diff --git a/suite-native/config/src/supportedNetworks.ts b/suite-native/config/src/supportedNetworks.ts index b1a5ba4504c..d53b232df9a 100644 --- a/suite-native/config/src/supportedNetworks.ts +++ b/suite-native/config/src/supportedNetworks.ts @@ -22,31 +22,10 @@ const discoveryBlacklist: NetworkSymbol[] = ['op', 'base', 'arb']; // All supported coins for device discovery export const networkSymbolsWhitelistMap: Record<'mainnet' | 'testnet', readonly NetworkSymbol[]> = { - mainnet: [ - 'btc', - 'eth', - 'pol', - 'sol', - 'bsc', - 'ltc', - 'etc', - 'ada', - 'xrp', - 'bch', - 'btg', - 'dash', - 'dgb', - 'doge', - 'nmc', - 'vtc', - 'zec', - ], + mainnet: ['btc', 'eth', 'pol', 'sol', 'bsc', 'ltc', 'etc', 'ada', 'xrp', 'bch', 'doge', 'zec'], testnet: ['test', 'regtest', 'tsep', 'thol', 'dsol', 'tada', 'txrp'], }; -// Blacklisting coins that are allowed inside `networkSymbolsWhitelistMap` so that we don't have to configs and just filter these out -const portfolioTrackerBlacklist: readonly NetworkSymbol[] = ['btg', 'dash', 'dgb', 'nmc', 'vtc']; - export const discoverySupportedNetworks = [ ...networkSymbolsWhitelistMap.mainnet, ...networkSymbolsWhitelistMap.testnet, @@ -79,9 +58,7 @@ export const filterBlacklistedNetworks = ( ); export const portfolioTrackerMainnets = sortNetworks( - getMainnets() - .filter(network => networkSymbolsWhitelistMap.mainnet.includes(network.symbol)) - .filter(network => !portfolioTrackerBlacklist.includes(network.symbol)), + getMainnets().filter(network => networkSymbolsWhitelistMap.mainnet.includes(network.symbol)), ).map(network => network.symbol); const getPortfolioTrackerTestnets = () => diff --git a/suite-native/discovery/src/discoveryThunks.ts b/suite-native/discovery/src/discoveryThunks.ts index edfa0efd449..78abc6b436a 100644 --- a/suite-native/discovery/src/discoveryThunks.ts +++ b/suite-native/discovery/src/discoveryThunks.ts @@ -58,11 +58,6 @@ const DISCOVERY_DEFAULT_BATCH_SIZE = 2; const DISCOVERY_BATCH_SIZE_PER_SYMBOL: Partial> = { bch: 1, - dash: 1, - btg: 1, - dgb: 1, - nmc: 1, - vtc: 1, zec: 1, etc: 1, }; diff --git a/suite-native/module-accounts-import/src/components/DevXpub.tsx b/suite-native/module-accounts-import/src/components/DevXpub.tsx index a0e2d987ee2..2562ac4f7df 100644 --- a/suite-native/module-accounts-import/src/components/DevXpub.tsx +++ b/suite-native/module-accounts-import/src/components/DevXpub.tsx @@ -26,8 +26,6 @@ const devXpubs: Partial> = { doge: 'dgub8sbe5Mi8LA4dXB9zPfLZW8armvaRkaqT37y6xfT1QA12ErATDf8iGEG8y7kamAnjLuEk9AMpTMMp6EK9Vjp2HHx91xdDEmWYpmD49fpoUYF', ltc: 'zpub6qhzAgn63nQAJZiY829GUUb1eXFDqpLbeShTdAbTEKyZa8n2VbkLwbRhq9xqPyj5Yet5TBdbCZDgiw53NQ2qwib4mygybFq66i7ZcXUcwgU', bch: 'xpub6DFYZ2FZwJHL4WULnRKTyMAaE9sM5Vi3QoWW9kYWGzR4HxDJ42Gbbdj7bpBAtATpaNeSVqSD3gdFFmZZYK9BVo96rhxPY7SWZWsfmdHpZ7e', - btg: 'ypub6WVGAPrpnuTJN8AULEnWNNpvFR5Xcckn66fp8sL4FgEy5Z4oig1CbwySvj8v4iFVSANcHJVWzK211Bb8u71bCTVW9vY1PbAn59KmCzq99YW', - dgb: 'ypub6X7pNV6ouYFiDGHjxCtbnV9EaCdq5uyVysMbR5Q79LHa3SWV93J7ubun37EJhfFQqsSGQBfz3UrAzNtYNhb5JsoPJbNKvbF9wKxBjgxfXkH', zec: 'xpub6DNsg962rV1MeqmathySUG2oKso9MfT2hMXCsMp6qemGWwD9xssVM61DfcAUUEaX2G8tjaaoKKppoKtFcSK8KVaMFHmZjAgyqod4DwXopPE', eth: [ { title: 'balance, few tokens', address: '0x62270860B9a5337e46bE8563c512c9137AFa0384' }, From 0d95d725cd80e3ca5ad9b52670d9be16eef34145 Mon Sep 17 00:00:00 2001 From: Prochmi99 <152851523+MiroslavProchazka@users.noreply.github.com> Date: Thu, 9 Jan 2025 15:11:39 +0100 Subject: [PATCH 3/5] chore(suite): add migration for deprecated coins chore(suite): add migration for deprecated coins --- packages/suite/src/storage/CHANGELOG.md | 4 ++ packages/suite/src/storage/index.ts | 2 +- .../suite/src/storage/migrations/index.ts | 50 +++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/packages/suite/src/storage/CHANGELOG.md b/packages/suite/src/storage/CHANGELOG.md index 90027c4218d..76b81cc880c 100644 --- a/packages/suite/src/storage/CHANGELOG.md +++ b/packages/suite/src/storage/CHANGELOG.md @@ -1,5 +1,9 @@ # Storage changelog +## 52 + +- Deprecated Vertcoin (VTC), Bitcoin Gold (BTG), Namecoin (NMC), DigiByte (DGB), and Dash (DASH) networks. Removed related transactions, accounts, and settings. + ## 51 - Changed `metadata.key` on non-eth EVM networks accounts to be `descriptor-chainId` diff --git a/packages/suite/src/storage/index.ts b/packages/suite/src/storage/index.ts index 8db8d304aa0..ffb721a2109 100644 --- a/packages/suite/src/storage/index.ts +++ b/packages/suite/src/storage/index.ts @@ -5,7 +5,7 @@ import { reloadApp } from 'src/utils/suite/reload'; import { migrate } from './migrations'; import type { SuiteDBSchema } from './definitions'; -const VERSION = 51; // don't forget to add migration and CHANGELOG when changing versions! +const VERSION = 52; // don't forget to add migration and CHANGELOG when changing versions! /** * If the object stores don't already exist then creates them. diff --git a/packages/suite/src/storage/migrations/index.ts b/packages/suite/src/storage/migrations/index.ts index 66c21faeb98..88cb45c88bb 100644 --- a/packages/suite/src/storage/migrations/index.ts +++ b/packages/suite/src/storage/migrations/index.ts @@ -270,6 +270,7 @@ export const migrate: OnUpgradeFunc = async ( if (oldVersion < 26) { await updateAll(transaction, 'accounts', account => { + // @ts-expect-error if (account.symbol === 'vtc' && account.accountType === 'normal') { // change account type from normal to segwit account.accountType = 'segwit'; @@ -280,6 +281,7 @@ export const migrate: OnUpgradeFunc = async ( await updateAll(transaction, 'discovery', d => { // reset discovery + // @ts-expect-error if (d.networks.includes('vtc')) { d.index = 0; d.loaded = 0; @@ -1176,4 +1178,52 @@ export const migrate: OnUpgradeFunc = async ( return account; }); } + + // Deprecate Vertcoin (VTC) and other networks + if (oldVersion < 52) { + const deprecatedNetworks = ['vtc', 'btg', 'nmc', 'dgb', 'dash']; + + // Remove transactions related to deprecated networks + await updateAll(transaction, 'txs', tx => { + if (deprecatedNetworks.includes(tx.tx.symbol)) { + return null; // Delete transaction + } + + return tx; + }); + + // Remove accounts related to deprecated networks + await updateAll(transaction, 'accounts', account => { + if (deprecatedNetworks.includes(account.symbol)) { + return null; // Delete account + } + + return account; + }); + + // Remove deprecated networks from enabled networks in wallet settings + await updateAll(transaction, 'walletSettings', walletSettings => { + walletSettings.enabledNetworks = walletSettings.enabledNetworks.filter( + network => !deprecatedNetworks.includes(network), // Exclude deprecated networks from enabled networks + ); + + return walletSettings; + }); + + // Remove deprecated networks from discovery networks + await updateAll(transaction, 'discovery', discovery => { + discovery.networks = discovery.networks.filter( + network => !deprecatedNetworks.includes(network), // Exclude deprecated networks from discovery + ); + discovery.failed = []; // Clear failed discovery attempts + + return discovery; + }); + + // Remove deprecated networks from backend settings + const backendSettings = transaction.objectStore('backendSettings'); + for (const network of deprecatedNetworks) { + await backendSettings.delete(network as NetworkSymbol); // Delete backend settings for each deprecated network + } + } }; From ca5d50c44737210aad12f63d33451339cfe2e932 Mon Sep 17 00:00:00 2001 From: Prochmi99 <152851523+MiroslavProchazka@users.noreply.github.com> Date: Thu, 9 Jan 2025 17:01:28 +0100 Subject: [PATCH 4/5] chore(e2e): adjust e2e test for deprecated coins --- .../suite-web/e2e/tests/wallet/discovery.test.ts | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/packages/suite-web/e2e/tests/wallet/discovery.test.ts b/packages/suite-web/e2e/tests/wallet/discovery.test.ts index b260558bfdc..f0ee800cf5c 100644 --- a/packages/suite-web/e2e/tests/wallet/discovery.test.ts +++ b/packages/suite-web/e2e/tests/wallet/discovery.test.ts @@ -6,21 +6,7 @@ import { onNavBar } from '../../support/pageObjects/topBarObject'; // discovery should end within this time frame const DISCOVERY_LIMIT = 1000 * 60 * 2; -const coinsToActivate = [ - 'ltc', - 'eth', - 'etc', - 'dash', - 'btg', - 'bch', - 'doge', - 'vtc', - 'ada', - 'xrp', - 'dgb', - 'zec', - 'nmc', -]; +const coinsToActivate = ['ltc', 'eth', 'etc', 'bch', 'doge', 'ada', 'xrp', 'zec']; describe('Discovery', () => { beforeEach(() => { cy.task('startEmu', { wipe: true }); From 666f142ac2f4601603b67fec735f621b620c560a Mon Sep 17 00:00:00 2001 From: Prochmi99 <152851523+MiroslavProchazka@users.noreply.github.com> Date: Fri, 3 Jan 2025 16:47:06 +0100 Subject: [PATCH 5/5] chore(suite-native): add migration for suite-native --- suite-native/state/src/reducers.ts | 38 ++++++++++++++++++- suite-native/storage/src/index.ts | 3 ++ .../storage/src/migrations/discovery/v3.ts | 10 +++++ .../src/migrations/wallet/accounts/v3.ts | 11 ++++++ .../src/migrations/wallet/transactions/v3.ts | 26 +++++++++++++ 5 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 suite-native/storage/src/migrations/discovery/v3.ts create mode 100644 suite-native/storage/src/migrations/wallet/accounts/v3.ts create mode 100644 suite-native/storage/src/migrations/wallet/transactions/v3.ts diff --git a/suite-native/state/src/reducers.ts b/suite-native/state/src/reducers.ts index 252f7c5074c..187353bd4d2 100644 --- a/suite-native/state/src/reducers.ts +++ b/suite-native/state/src/reducers.ts @@ -26,6 +26,9 @@ import { migrateEnabledDiscoveryNetworkSymbols, migrateAccountBnbToBsc, migrateTransactionsBnbToBsc, + migrateDiscoveryDeprecateNetworks, + migrateAccountsDeprecateNetworks, + migrateTransactionsDeprecateNetworks, } from '@suite-native/storage'; import { prepareAnalyticsReducer } from '@suite-common/analytics'; import { @@ -144,7 +147,7 @@ export const prepareRootReducers = async () => { reducer: discoveryConfigReducer, persistedKeys: discoveryConfigPersistWhitelist, key: 'discoveryConfig', - version: 2, + version: 3, migrations: { 2: (oldState: DiscoveryConfigState) => { if (!oldState.enabledDiscoveryNetworkSymbols) return oldState; @@ -158,6 +161,20 @@ export const prepareRootReducers = async () => { enabledDiscoveryNetworkSymbols: migrateNetworkSymbols, }; + return migratedState; + }, + 3: (oldState: DiscoveryConfigState) => { + if (!oldState.enabledDiscoveryNetworkSymbols) return oldState; + + const { enabledDiscoveryNetworkSymbols } = oldState; + const migratedNetworkSymbols = migrateDiscoveryDeprecateNetworks( + enabledDiscoveryNetworkSymbols, + ); + const migratedState = { + ...oldState, + enabledDiscoveryNetworkSymbols: migratedNetworkSymbols, + }; + return migratedState; }, }, @@ -201,7 +218,7 @@ export const prepareRootReducers = async () => { transforms: [walletPersistTransform, graphPersistTransform], mergeLevel: 2, key: 'root', - version: 2, + version: 3, migrations: { 2: (oldState: { wallet: { accounts: any; transactions: { transactions: any } } }) => { const oldStateWallet = oldState.wallet; @@ -219,6 +236,23 @@ export const prepareRootReducers = async () => { }, }; + return migratedState; + }, + 3: (oldState: { wallet: { accounts: any; transactions: { transactions: any } } }) => { + const oldStateWallet = oldState.wallet; + const migratedAccounts = migrateAccountsDeprecateNetworks(oldStateWallet.accounts); + const migratedTransactions = migrateTransactionsDeprecateNetworks( + oldStateWallet.transactions?.transactions, + ); + const migratedState = { + ...oldState, + wallet: { + ...oldStateWallet, + accounts: migratedAccounts, + transactions: { transactions: migratedTransactions }, + }, + }; + return migratedState; }, }, diff --git a/suite-native/storage/src/index.ts b/suite-native/storage/src/index.ts index 7ac6b1485eb..5ae1aaa337d 100644 --- a/suite-native/storage/src/index.ts +++ b/suite-native/storage/src/index.ts @@ -9,8 +9,11 @@ export * from './migrations/account/v2'; export * from './migrations/account/v3'; export * from './migrations/device/v2'; export * from './migrations/discovery/v2'; +export * from './migrations/discovery/v3'; export * from './migrations/wallet/transactions/v2'; export * from './migrations/wallet/accounts/v2'; +export * from './migrations/wallet/accounts/v3'; +export * from './migrations/wallet/transactions/v3'; export * from './transforms/deviceTransforms'; export * from './transforms/walletTransforms'; diff --git a/suite-native/storage/src/migrations/discovery/v3.ts b/suite-native/storage/src/migrations/discovery/v3.ts new file mode 100644 index 00000000000..09926650cc1 --- /dev/null +++ b/suite-native/storage/src/migrations/discovery/v3.ts @@ -0,0 +1,10 @@ +import { NetworkSymbol } from '@suite-common/wallet-config'; +// @ts-expect-error +const deprecatedNetworks: NetworkSymbol[] = ['dash', 'btg', 'nmc', 'vtc', 'dgb']; + +export const migrateDiscoveryDeprecateNetworks = ( + oldEnabledDiscoveryNetworkSymbols: NetworkSymbol[], +): NetworkSymbol[] => + oldEnabledDiscoveryNetworkSymbols.filter( + networkSymbol => !deprecatedNetworks.includes(networkSymbol), + ); diff --git a/suite-native/storage/src/migrations/wallet/accounts/v3.ts b/suite-native/storage/src/migrations/wallet/accounts/v3.ts new file mode 100644 index 00000000000..17793e2667a --- /dev/null +++ b/suite-native/storage/src/migrations/wallet/accounts/v3.ts @@ -0,0 +1,11 @@ +type Account = { + symbol: string; + key: string; +}; + +const deprecatedNetworks: string[] = ['dash', 'btg', 'nmc', 'vtc', 'dgb']; + +export const migrateAccountsDeprecateNetworks = ( + oldAccounts: Account[] | undefined, +): Account[] | undefined => + oldAccounts?.filter(account => !deprecatedNetworks.includes(account.symbol)); diff --git a/suite-native/storage/src/migrations/wallet/transactions/v3.ts b/suite-native/storage/src/migrations/wallet/transactions/v3.ts new file mode 100644 index 00000000000..1be4ec49104 --- /dev/null +++ b/suite-native/storage/src/migrations/wallet/transactions/v3.ts @@ -0,0 +1,26 @@ +type TransactionStub = { + symbol: string; +}; + +type AccountTransactionsType = { + [x: string]: TransactionStub[]; +}; + +const deprecatedNetworks: string[] = ['dash', 'btg', 'nmc', 'vtc', 'dgb']; + +export const migrateTransactionsDeprecateNetworks = ( + oldTransactions: AccountTransactionsType | undefined, +): AccountTransactionsType | undefined => { + const newTransactions: AccountTransactionsType = {}; + + for (const oldKey in oldTransactions) { + const oldTxns = oldTransactions[oldKey]; + + const newTxns = oldTxns.filter(txn => !deprecatedNetworks.includes(txn.symbol)); + if (newTxns.length > 0) { + newTransactions[oldKey] = newTxns; + } + } + + return newTransactions; +};