From df2c45b6152d62ade70cc8b02322e0fff9daeafb Mon Sep 17 00:00:00 2001 From: skylarbarrera Date: Thu, 15 Feb 2024 12:33:45 -0500 Subject: [PATCH] chore: migrate pinned + hidden tokens --- src/migrations/index.ts | 2 + .../migratePinnedAndHiddenTokenUniqueIds.ts | 43 +++++++++++++++++++ src/migrations/types.ts | 1 + 3 files changed, 46 insertions(+) create mode 100644 src/migrations/migrations/migratePinnedAndHiddenTokenUniqueIds.ts diff --git a/src/migrations/index.ts b/src/migrations/index.ts index 82c07422503..38b51f2e81d 100644 --- a/src/migrations/index.ts +++ b/src/migrations/index.ts @@ -11,6 +11,7 @@ import { prepareDefaultNotificationGroupSettingsState } from '@/migrations/migra import { changeLanguageKeys } from './migrations/changeLanguageKeys'; import { fixHiddenUSDC } from './migrations/fixHiddenUSDC'; import { purgeWcConnectionsWithoutAccounts } from './migrations/purgeWcConnectionsWithoutAccounts'; +import { migratePinnedAndHiddenTokenUniqueIds } from './migrations/migratePinnedAndHiddenTokenUniqueIds'; /** * Local storage for migrations only. Should not be exported. @@ -33,6 +34,7 @@ const migrations: Migration[] = [ changeLanguageKeys(), fixHiddenUSDC(), purgeWcConnectionsWithoutAccounts(), + migratePinnedAndHiddenTokenUniqueIds(), ]; /** diff --git a/src/migrations/migrations/migratePinnedAndHiddenTokenUniqueIds.ts b/src/migrations/migrations/migratePinnedAndHiddenTokenUniqueIds.ts new file mode 100644 index 00000000000..5bd8fe4a2a9 --- /dev/null +++ b/src/migrations/migrations/migratePinnedAndHiddenTokenUniqueIds.ts @@ -0,0 +1,43 @@ +import { BooleanMap } from '@/hooks/useCoinListEditOptions'; +import { Migration, MigrationName } from '@/migrations/types'; +import { loadAddress } from '@/model/wallet'; +import { Network } from '@/networks/types'; +import { getUniqueId } from '@/utils/ethereumUtils'; +import { MMKV } from 'react-native-mmkv'; + +const mmkv = new MMKV(); + +export function migratePinnedAndHiddenTokenUniqueIds(): Migration { + return { + name: MigrationName.migratePinnedAndHiddenTokenUniqueIds, + async defer() { + const address = await loadAddress(); + const hiddenCoinsKey = 'hidden-coins-obj-' + address; + const pinnedCoinsKey = 'pinned-coins-obj-' + address; + const hiddenCoinsString = mmkv.getString(hiddenCoinsKey); + const pinnedCoinsString = mmkv.getString(pinnedCoinsKey); + const hiddenCoinsKeys = Object.keys(hiddenCoinsString ? JSON.parse(hiddenCoinsString) : {}); + const pinnedCoinsKeys = Object.keys(pinnedCoinsString ? JSON.parse(pinnedCoinsString) : {}); + const newHiddenCoins = hiddenCoinsKeys.reduce((acc, curr) => { + if (!curr.includes('_')) { + acc[getUniqueId(curr, Network.mainnet)] = true; + return acc; + } + acc[curr] = true; + return acc; + }, {} as BooleanMap); + + const newPinnedCoins = pinnedCoinsKeys.reduce((acc, curr) => { + if (!curr.includes('_')) { + acc[getUniqueId(curr, Network.mainnet)] = true; + return acc; + } + acc[curr] = true; + return acc; + }, {} as BooleanMap); + + mmkv.set('hidden-coins-obj-' + address, JSON.stringify(newHiddenCoins)); + mmkv.set('pinned-coins-obj-' + address, JSON.stringify(newPinnedCoins)); + }, + }; +} diff --git a/src/migrations/types.ts b/src/migrations/types.ts index 7239317c195..e1072762196 100644 --- a/src/migrations/types.ts +++ b/src/migrations/types.ts @@ -14,6 +14,7 @@ export enum MigrationName { changeLanguageKeys = 'migration_changeLanguageKeys', fixHiddenUSDC = 'migration_fixHiddenUSDC', purgeWcConnectionsWithoutAccounts = 'migration_purgeWcConnectionsWithoutAccounts', + migratePinnedAndHiddenTokenUniqueIds = 'migration_migratePinnedAndHiddenTokenUniqueIds', } export type Migration = {