From 2163417da2b9d4cbe87ffff9e89d4e765567de31 Mon Sep 17 00:00:00 2001 From: Bruno Barbieri <1247834+brunobar79@users.noreply.github.com> Date: Tue, 17 Dec 2024 16:56:44 -0500 Subject: [PATCH 01/19] icons hotfix pt 2 (#6345) * added migration to reset icon handled flag * ignore old icon sheets temporarilly --- .../unlockableAppIconCheck.ts | 20 +++++++++++++++++++ src/model/migrations.ts | 16 +++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/featuresToUnlock/unlockableAppIconCheck.ts b/src/featuresToUnlock/unlockableAppIconCheck.ts index ddab655a722..0eaef6b9514 100644 --- a/src/featuresToUnlock/unlockableAppIconCheck.ts +++ b/src/featuresToUnlock/unlockableAppIconCheck.ts @@ -70,6 +70,26 @@ export const unlockableAppIconCheck = async (appIconKey: UnlockableAppIconKey, w unlockableAppIconStorage.set(appIconKey, true); logger.debug(`[unlockableAppIconCheck]: Feature check ${appIconKey} set to true. Wont show up anymore!`); + // Temporarily ignore some icons + // We can get rid of this in 2025! + const iconsToIgnore = [ + 'optimism', + 'smol', + 'zora', + 'golddoge', + 'raindoge', + 'pooly', + 'finiliar', + 'zorb', + 'poolboy', + 'adworld', + 'farcaster', + ]; + + if (iconsToIgnore.includes(appIconKey)) { + return false; + } + Navigation.handleAction(Routes.APP_ICON_UNLOCK_SHEET, { appIconKey }); return true; } diff --git a/src/model/migrations.ts b/src/model/migrations.ts index c4d2c706db7..68625a0686a 100644 --- a/src/model/migrations.ts +++ b/src/model/migrations.ts @@ -41,6 +41,8 @@ import { useLegacyFavoriteDappsStore } from '@/state/legacyFavoriteDapps'; import { getAddressAndChainIdFromUniqueId, getUniqueId, getUniqueIdNetwork } from '@/utils/ethereumUtils'; import { UniqueId } from '@/__swaps__/types/assets'; import { userAssetsStore } from '@/state/assets/userAssets'; +import { UnlockableAppIconKey, unlockableAppIcons } from '@/appIcons/appIcons'; +import { unlockableAppIconStorage } from '@/featuresToUnlock/unlockableAppIconCheck'; export default async function runMigrations() { // get current version @@ -696,6 +698,20 @@ export default async function runMigrations() { migrations.push(v21); + /** + *************** Migration v22 ****************** + * Reset icon checks + */ + const v22 = async () => { + // For each appIcon, delete the handled flag + (Object.keys(unlockableAppIcons) as UnlockableAppIconKey[]).map(appIconKey => { + unlockableAppIconStorage.delete(appIconKey); + logger.debug('Resetting icon status for ' + appIconKey); + }); + }; + + migrations.push(v22); + logger.debug(`[runMigrations]: ready to run migrations starting on number ${currentVersion}`); // await setMigrationVersion(17); if (migrations.length === currentVersion) { From 29ec1a06018fb2806c788e26966ead348b64bebf Mon Sep 17 00:00:00 2001 From: Ibrahim Taveras Date: Tue, 17 Dec 2024 21:22:18 -0500 Subject: [PATCH 02/19] Update iOS and Android to v1.9.51 (#6346) --- CHANGELOG.md | 6 ++++++ android/app/build.gradle | 4 ++-- ios/Rainbow.xcodeproj/project.pbxproj | 8 ++++---- package.json | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4569b2c3837..946a7d3dbb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/) ### Fixed +## [1.9.50] (https://github.com/rainbow-me/rainbow/releases/tag/v1.9.50) + +### Fixed + +- Fixed an issue with unlocking app icons (#6342, #6345) + ## [1.9.49] (https://github.com/rainbow-me/rainbow/releases/tag/v1.9.49) ### Added diff --git a/android/app/build.gradle b/android/app/build.gradle index d335045ad7b..9007b06bd09 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -135,8 +135,8 @@ android { applicationId "me.rainbow" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 243 - versionName "1.9.50" + versionCode 244 + versionName "1.9.51" missingDimensionStrategy 'react-native-camera', 'general' renderscriptTargetApi 23 renderscriptSupportModeEnabled true diff --git a/ios/Rainbow.xcodeproj/project.pbxproj b/ios/Rainbow.xcodeproj/project.pbxproj index 35371be0d3b..b1df86d0d36 100644 --- a/ios/Rainbow.xcodeproj/project.pbxproj +++ b/ios/Rainbow.xcodeproj/project.pbxproj @@ -1883,7 +1883,7 @@ "$(PROJECT_DIR)", ); LLVM_LTO = YES; - MARKETING_VERSION = 1.9.50; + MARKETING_VERSION = 1.9.51; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( "$(inherited)", @@ -1951,7 +1951,7 @@ "$(PROJECT_DIR)", ); LLVM_LTO = YES; - MARKETING_VERSION = 1.9.50; + MARKETING_VERSION = 1.9.51; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( "$(inherited)", @@ -2072,7 +2072,7 @@ "$(PROJECT_DIR)", ); LLVM_LTO = YES; - MARKETING_VERSION = 1.9.50; + MARKETING_VERSION = 1.9.51; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( "$(inherited)", @@ -2192,7 +2192,7 @@ "$(PROJECT_DIR)", ); LLVM_LTO = YES; - MARKETING_VERSION = 1.9.50; + MARKETING_VERSION = 1.9.51; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( "$(inherited)", diff --git a/package.json b/package.json index 2e6e6e933ac..c7bd68d69cf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Rainbow", - "version": "1.9.50-1", + "version": "1.9.51-1", "private": true, "scripts": { "setup": "yarn graphql-codegen:install && yarn ds:install && yarn allow-scripts && yarn graphql-codegen && yarn fetch:networks", From a3547f34131b2238a5815121318a9baf4d345e00 Mon Sep 17 00:00:00 2001 From: Ben Goldberg Date: Wed, 18 Dec 2024 17:53:59 -0800 Subject: [PATCH 03/19] User assets migration (#6038) --- .../SyncSwapStateAndSharedValues.tsx | 11 +- .../screens/Swap/providers/swap-provider.tsx | 12 +- .../Swap/resources/assets/userAssets.ts | 21 +- .../resources/assets/userAssetsByChain.ts | 2 +- src/__swaps__/types/assets.ts | 1 + src/__swaps__/utils/assets.ts | 31 --- src/components/asset-list/AssetListHeader.js | 4 +- src/components/list/NoResults.tsx | 4 +- .../check-fns/hasNonZeroTotalBalance.ts | 14 +- src/helpers/buildWalletSections.tsx | 2 +- src/hooks/useAccountAsset.ts | 4 +- src/hooks/useColorForAsset.ts | 4 + src/hooks/useRefreshAccountData.ts | 6 +- src/hooks/useWalletSectionsData.ts | 10 +- src/hooks/useWalletsHiddenBalances.ts | 54 ++--- src/hooks/useWatchPendingTxs.ts | 14 +- src/model/migrations.ts | 35 ++- src/resources/assets/UserAssetsQuery.ts | 222 ------------------ src/resources/assets/assetSelectors.ts | 63 ----- src/resources/assets/assets.ts | 4 +- src/resources/assets/useSortedUserAssets.ts | 20 -- src/resources/assets/useUserAsset.ts | 30 --- src/resources/assets/useUserAssetCount.ts | 22 -- src/screens/SendSheet.tsx | 5 +- .../context/TransactionClaimableContext.tsx | 17 +- src/state/assets/userAssets.ts | 139 ++++++++--- src/state/sync/UserAssetsSync.tsx | 8 +- src/utils/ethereumUtils.ts | 26 +- 28 files changed, 228 insertions(+), 557 deletions(-) delete mode 100644 src/resources/assets/UserAssetsQuery.ts delete mode 100644 src/resources/assets/assetSelectors.ts delete mode 100644 src/resources/assets/useSortedUserAssets.ts delete mode 100644 src/resources/assets/useUserAsset.ts delete mode 100644 src/resources/assets/useUserAssetCount.ts diff --git a/src/__swaps__/screens/Swap/providers/SyncSwapStateAndSharedValues.tsx b/src/__swaps__/screens/Swap/providers/SyncSwapStateAndSharedValues.tsx index beee83e8b3e..715ff149768 100644 --- a/src/__swaps__/screens/Swap/providers/SyncSwapStateAndSharedValues.tsx +++ b/src/__swaps__/screens/Swap/providers/SyncSwapStateAndSharedValues.tsx @@ -15,7 +15,6 @@ import { import { ExtendedAnimatedAssetWithColors } from '@/__swaps__/types/assets'; import { ChainId } from '@/state/backendNetworks/types'; import { ParsedAddressAsset } from '@/entities'; -import { useUserNativeNetworkAsset } from '@/resources/assets/useUserAsset'; import { CrosschainQuote, Quote, QuoteError } from '@rainbow-me/swaps'; import { deepEqualWorklet } from '@/worklets/comparisons'; import { debounce } from 'lodash'; @@ -26,7 +25,10 @@ import { GasSettings } from '../hooks/useCustomGas'; import { useSelectedGas } from '../hooks/useSelectedGas'; import { useSwapEstimatedGasLimit } from '../hooks/useSwapEstimatedGasLimit'; import { useSwapContext } from './swap-provider'; +import { useUserAssetsStore } from '@/state/assets/userAssets'; +import { getUniqueId } from '@/utils/ethereumUtils'; import { useSwapsStore } from '@/state/swaps/swapsStore'; +import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; const BUFFER_RATIO = 0.5; @@ -143,7 +145,12 @@ export function SyncGasStateToSharedValues() { const { assetToSell, chainId = initialChainId, quote } = useSyncedSwapQuoteStore(); const gasSettings = useSelectedGas(chainId); - const { data: userNativeNetworkAsset, isLoading: isLoadingNativeNetworkAsset } = useUserNativeNetworkAsset(chainId); + + const { userNativeNetworkAsset, isLoadingNativeNetworkAsset } = useUserAssetsStore(state => { + const { address: nativeCurrencyAddress } = useBackendNetworksStore.getState().getChainsNativeAsset()[chainId]; + const uniqueId = getUniqueId(nativeCurrencyAddress, chainId); + return { userNativeNetworkAsset: state.getLegacyUserAsset(uniqueId), isLoadingNativeNetworkAsset: state.isLoadingUserAssets }; + }); const { data: estimatedGasLimit } = useSwapEstimatedGasLimit({ chainId, assetToSell, quote }); const gasFeeRange = useSharedValue<[string, string] | null>(null); diff --git a/src/__swaps__/screens/Swap/providers/swap-provider.tsx b/src/__swaps__/screens/Swap/providers/swap-provider.tsx index da16527c726..4d1f66ae1c4 100644 --- a/src/__swaps__/screens/Swap/providers/swap-provider.tsx +++ b/src/__swaps__/screens/Swap/providers/swap-provider.tsx @@ -22,7 +22,7 @@ import { NavigationSteps, useSwapNavigation } from '@/__swaps__/screens/Swap/hoo import { useSwapSettings } from '@/__swaps__/screens/Swap/hooks/useSwapSettings'; import { useSwapTextStyles } from '@/__swaps__/screens/Swap/hooks/useSwapTextStyles'; import { SwapWarningType, useSwapWarning } from '@/__swaps__/screens/Swap/hooks/useSwapWarning'; -import { userAssetsQueryKey as swapsUserAssetsQueryKey } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; +import { userAssetsQueryKey } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; import { AddressOrEth, ExtendedAnimatedAssetWithColors, ParsedSearchAsset } from '@/__swaps__/types/assets'; import { ChainId } from '@/state/backendNetworks/types'; import { SwapAssetType, inputKeys } from '@/__swaps__/types/swap'; @@ -41,7 +41,6 @@ import Routes from '@/navigation/routesNames'; import { walletExecuteRap } from '@/raps/execute'; import { QuoteTypeMap, RapSwapActionParameters } from '@/raps/references'; import { queryClient } from '@/react-query'; -import { userAssetsQueryKey } from '@/resources/assets/UserAssetsQuery'; import { userAssetsStore } from '@/state/assets/userAssets'; import { swapsStore } from '@/state/swaps/swapsStore'; import { getNextNonce } from '@/state/nonces'; @@ -342,14 +341,7 @@ export const SwapProvider = ({ children }: SwapProviderProps) => { userAssetsQueryKey({ address: parameters.quote.from, currency: nativeCurrency, - connectedToHardhat, - }) - ); - queryClient.invalidateQueries( - swapsUserAssetsQueryKey({ - address: parameters.quote.from as Address, - currency: nativeCurrency, - testnetMode: !!connectedToHardhat, + testnetMode: connectedToHardhat, }) ); diff --git a/src/__swaps__/screens/Swap/resources/assets/userAssets.ts b/src/__swaps__/screens/Swap/resources/assets/userAssets.ts index 76e685a1545..6c2e0611f70 100644 --- a/src/__swaps__/screens/Swap/resources/assets/userAssets.ts +++ b/src/__swaps__/screens/Swap/resources/assets/userAssets.ts @@ -17,6 +17,8 @@ import { fetchUserAssetsByChain } from './userAssetsByChain'; import { fetchHardhatBalancesByChainId } from '@/resources/assets/hardhatAssets'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { staleBalancesStore } from '@/state/staleBalances'; +import { IS_TEST } from '@/env'; import store from '@/redux/store'; const addysHttp = new RainbowFetchClient({ @@ -28,7 +30,7 @@ const addysHttp = new RainbowFetchClient({ const USER_ASSETS_REFETCH_INTERVAL = 60000; const USER_ASSETS_TIMEOUT_DURATION = 20000; -export const USER_ASSETS_STALE_INTERVAL = 30000; +const USER_ASSETS_STALE_INTERVAL = 30000; // /////////////////////////////////////////////// // Query Types @@ -123,20 +125,23 @@ async function userAssetsQueryFunction({ return parsedAssetsDict; } + const cache = queryClient.getQueryCache(); const cachedUserAssets = (cache.find(userAssetsQueryKey({ address, currency, testnetMode }))?.state?.data || {}) as ParsedAssetsDictByChain; try { - const url = `/${useBackendNetworksStore.getState().getSupportedChainIds().join(',')}/${address}/assets`; + staleBalancesStore.getState().clearExpiredData(address); + const staleBalanceParam = staleBalancesStore.getState().getStaleBalancesQueryParam(address); + let url = `/${useBackendNetworksStore.getState().getSupportedChainIds().join(',')}/${address}/assets?currency=${currency.toLowerCase()}`; + if (staleBalanceParam) { + url += staleBalanceParam; + } const res = await addysHttp.get(url, { - params: { - currency: currency.toLowerCase(), - }, timeout: USER_ASSETS_TIMEOUT_DURATION, }); const chainIdsInResponse = res?.data?.meta?.chain_ids || []; const chainIdsWithErrorsInResponse = res?.data?.meta?.chain_ids_with_errors || []; - const assets = res?.data?.payload?.assets || []; + const assets = res?.data?.payload?.assets?.filter(asset => !asset.asset.defi_position) || []; if (address) { if (chainIdsWithErrorsInResponse.length) { userAssetsQueryFunctionRetryByChain({ @@ -170,7 +175,7 @@ async function userAssetsQueryFunction({ } } -type UserAssetsResult = QueryFunctionResult; +export type UserAssetsResult = QueryFunctionResult; async function userAssetsQueryFunctionRetryByChain({ address, @@ -258,6 +263,6 @@ export function useUserAssets( ...config, enabled: !!address && !!currency, refetchInterval: USER_ASSETS_REFETCH_INTERVAL, - staleTime: process.env.IS_TESTING === 'true' ? 0 : 1000, + staleTime: IS_TEST ? 0 : USER_ASSETS_STALE_INTERVAL, }); } diff --git a/src/__swaps__/screens/Swap/resources/assets/userAssetsByChain.ts b/src/__swaps__/screens/Swap/resources/assets/userAssetsByChain.ts index 723334cce51..032b5ef2eff 100644 --- a/src/__swaps__/screens/Swap/resources/assets/userAssetsByChain.ts +++ b/src/__swaps__/screens/Swap/resources/assets/userAssetsByChain.ts @@ -70,7 +70,7 @@ async function userAssetsByChainQueryFunction({ }, }); const chainIdsInResponse = res?.data?.meta?.chain_ids || []; - const assets = res?.data?.payload?.assets || []; + const assets = res?.data?.payload?.assets?.filter(asset => !asset.asset.defi_position) || []; if (assets.length && chainIdsInResponse.length) { const parsedAssetsDict = await parseUserAssets({ assets, diff --git a/src/__swaps__/types/assets.ts b/src/__swaps__/types/assets.ts index c6f7bcd84a5..f473d907900 100644 --- a/src/__swaps__/types/assets.ts +++ b/src/__swaps__/types/assets.ts @@ -140,6 +140,7 @@ export interface ZerionAsset { bridgeable: boolean; networks: { [id in ChainId]?: { bridgeable: boolean } }; }; + defi_position?: boolean; } // protocols https://github.com/rainbow-me/go-utils-lib/blob/master/pkg/enums/token_type.go#L44 diff --git a/src/__swaps__/utils/assets.ts b/src/__swaps__/utils/assets.ts index c2fa5dfd935..8c87ad572bb 100644 --- a/src/__swaps__/utils/assets.ts +++ b/src/__swaps__/utils/assets.ts @@ -234,37 +234,6 @@ export function parseUserAssetBalances({ }; } -export function parseParsedUserAsset({ - parsedAsset, - currency, - quantity, -}: { - parsedAsset: ParsedUserAsset; - currency: SupportedCurrencyKey; - quantity: string; -}): ParsedUserAsset { - const amount = convertRawAmountToDecimalFormat(quantity, parsedAsset?.decimals); - return { - ...parsedAsset, - balance: { - amount, - display: convertAmountToBalanceDisplay(amount, { - decimals: parsedAsset?.decimals, - symbol: parsedAsset?.symbol, - }), - }, - native: { - ...parsedAsset.native, - balance: getNativeAssetBalance({ - currency, - decimals: parsedAsset?.decimals, - priceUnit: parsedAsset?.price?.value || 0, - value: amount, - }), - }, - }; -} - export const parseSearchAsset = ({ assetWithPrice, searchAsset, diff --git a/src/components/asset-list/AssetListHeader.js b/src/components/asset-list/AssetListHeader.js index d35ee0bd3a8..7e1013861be 100644 --- a/src/components/asset-list/AssetListHeader.js +++ b/src/components/asset-list/AssetListHeader.js @@ -12,11 +12,11 @@ import { StickyHeader } from './RecyclerAssetList2/core/StickyHeaders'; import { useAccountProfile, useDimensions } from '@/hooks'; import { useNavigation } from '@/navigation'; import Routes from '@/navigation/routesNames'; -import { useUserAssetCount } from '@/resources/assets/useUserAssetCount'; import styled from '@/styled-thing'; import { fonts, position } from '@/styles'; import { useTheme } from '@/theme'; import * as lang from '@/languages'; +import { useUserAssetsStore } from '@/state/assets/userAssets'; export const AssetListHeaderHeight = ListHeaderHeight; @@ -104,7 +104,7 @@ const AssetListHeader = ({ contextMenuOptions, isCoinListEdited, title, totalVal const { width: deviceWidth } = useDimensions(); const { accountName } = useAccountProfile(); const { navigate } = useNavigation(); - const { isLoading: isLoadingUserAssets } = useUserAssetCount(); + const { isLoadingUserAssets } = useUserAssetsStore(state => state.isLoadingUserAssets); const onChangeWallet = useCallback(() => { navigate(Routes.CHANGE_WALLET_SHEET); diff --git a/src/components/list/NoResults.tsx b/src/components/list/NoResults.tsx index ef610f7b36e..ff9b3789bd7 100644 --- a/src/components/list/NoResults.tsx +++ b/src/components/list/NoResults.tsx @@ -4,7 +4,7 @@ import { neverRerender } from '@/utils'; import { Inset, Stack, Text } from '@/design-system'; import { useTheme } from '@/theme'; import { logger } from '@/logger'; -import { useUserAssetCount } from '@/resources/assets/useUserAssetCount'; +import { useUserAssetsStore } from '@/state/assets/userAssets'; export enum NoResultsType { Discover = 'discover', @@ -14,7 +14,7 @@ export enum NoResultsType { export const NoResults = ({ onL2, type }: { onL2?: boolean; type: NoResultsType }) => { const { colors } = useTheme(); - const { data: assetCount } = useUserAssetCount(); + const assetCount = useUserAssetsStore(state => state.userAssets.size); let title; let description; diff --git a/src/components/remote-promo-sheet/check-fns/hasNonZeroTotalBalance.ts b/src/components/remote-promo-sheet/check-fns/hasNonZeroTotalBalance.ts index 2d0976b21df..e2f68b89723 100644 --- a/src/components/remote-promo-sheet/check-fns/hasNonZeroTotalBalance.ts +++ b/src/components/remote-promo-sheet/check-fns/hasNonZeroTotalBalance.ts @@ -1,16 +1,20 @@ +import { selectorFilterByUserChains, selectUserAssetsList } from '@/__swaps__/screens/Swap/resources/_selectors/assets'; +import { userAssetsFetchQuery } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; import store from '@/redux/store'; -import { fetchUserAssets } from '@/resources/assets/UserAssetsQuery'; +import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; export const hasNonZeroTotalBalance = async (): Promise => { const { accountAddress, nativeCurrency } = store.getState().settings; - const assets = await fetchUserAssets({ + const userAssetsDictByChain = await userAssetsFetchQuery({ address: accountAddress, currency: nativeCurrency, - connectedToHardhat: false, + testnetMode: useConnectedToHardhatStore.getState().connectedToHardhat, }); - if (!assets || Object.keys(assets).length === 0) return false; + const assets = selectorFilterByUserChains({ data: userAssetsDictByChain, selector: selectUserAssetsList }); - return Object.values(assets).some(asset => Number(asset.balance?.amount) > 0); + if (!assets?.length) return false; + + return assets.some(asset => Number(asset.balance?.amount) > 0); }; diff --git a/src/helpers/buildWalletSections.tsx b/src/helpers/buildWalletSections.tsx index b498081c0f5..b7ad6089c6c 100644 --- a/src/helpers/buildWalletSections.tsx +++ b/src/helpers/buildWalletSections.tsx @@ -223,7 +223,7 @@ const withBriefBalanceSection = ( type: 'PROFILE_NAME_ROW_SPACE_AFTER', uid: 'profile-name-space-after', }, - ...(!hasTokens && !isLoadingUserAssets && !isLoadingBalance + ...(!hasTokens && !isLoadingBalance ? [] : [ { diff --git a/src/hooks/useAccountAsset.ts b/src/hooks/useAccountAsset.ts index 2d2bccc2699..0e5ba4a00e3 100644 --- a/src/hooks/useAccountAsset.ts +++ b/src/hooks/useAccountAsset.ts @@ -1,11 +1,11 @@ import { NativeCurrencyKey } from '@/entities'; import useAccountSettings from './useAccountSettings'; import { parseAssetNative } from '@/parsers'; -import { useUserAsset } from '@/resources/assets/useUserAsset'; +import { useUserAssetsStore } from '@/state/assets/userAssets'; // this is meant to be used for assets contained in the current wallet export default function useAccountAsset(uniqueId: string, nativeCurrency: NativeCurrencyKey | undefined = undefined) { - const { data: accountAsset } = useUserAsset(uniqueId); + const accountAsset = useUserAssetsStore(state => state.getLegacyUserAsset(uniqueId)); // this is temporary for FastBalanceCoinRow to make a tiny bit faster // we pass nativeCurrency only in that case diff --git a/src/hooks/useColorForAsset.ts b/src/hooks/useColorForAsset.ts index bfaf954e388..21eab85420b 100644 --- a/src/hooks/useColorForAsset.ts +++ b/src/hooks/useColorForAsset.ts @@ -19,6 +19,10 @@ export default function useColorForAsset( const isDarkMode = forceLightMode || isDarkModeTheme; const colorDerivedFromAddress = useMemo(() => { + if (!resolvedAddress) { + return undefined; + } + const color = isETH(resolvedAddress) ? isDarkMode ? forceETHColor diff --git a/src/hooks/useRefreshAccountData.ts b/src/hooks/useRefreshAccountData.ts index 388dfc2fcc3..fd2ffbb4b87 100644 --- a/src/hooks/useRefreshAccountData.ts +++ b/src/hooks/useRefreshAccountData.ts @@ -6,8 +6,7 @@ import useAccountSettings from './useAccountSettings'; import { PROFILES, useExperimentalFlag } from '@/config'; import { logger, RainbowError } from '@/logger'; import { queryClient } from '@/react-query'; -import { userAssetsQueryKey } from '@/resources/assets/UserAssetsQuery'; -import { userAssetsQueryKey as swapsUserAssetsQueryKey } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; +import { userAssetsQueryKey } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; import { invalidateAddressNftsQueries } from '@/resources/nfts'; import { positionsQueryKey } from '@/resources/defi/PositionsQuery'; import { Address } from 'viem'; @@ -35,9 +34,8 @@ export default function useRefreshAccountData() { queryClient.invalidateQueries(positionsQueryKey({ address: accountAddress as Address, currency: nativeCurrency })); queryClient.invalidateQueries(claimablesQueryKey({ address: accountAddress, currency: nativeCurrency })); queryClient.invalidateQueries(addysSummaryQueryKey({ addresses: allAddresses, currency: nativeCurrency })); - queryClient.invalidateQueries(userAssetsQueryKey({ address: accountAddress, currency: nativeCurrency, connectedToHardhat })); queryClient.invalidateQueries( - swapsUserAssetsQueryKey({ address: accountAddress as Address, currency: nativeCurrency, testnetMode: !!connectedToHardhat }) + userAssetsQueryKey({ address: accountAddress, currency: nativeCurrency, testnetMode: connectedToHardhat }) ); try { diff --git a/src/hooks/useWalletSectionsData.ts b/src/hooks/useWalletSectionsData.ts index db186edc714..a8f6072f1ea 100644 --- a/src/hooks/useWalletSectionsData.ts +++ b/src/hooks/useWalletSectionsData.ts @@ -9,14 +9,13 @@ import useSendableUniqueTokens from './useSendableUniqueTokens'; import useShowcaseTokens from './useShowcaseTokens'; import useWallets from './useWallets'; import { buildBriefWalletSectionsSelector } from '@/helpers/buildWalletSections'; -import { useSortedUserAssets } from '@/resources/assets/useSortedUserAssets'; import { useLegacyNFTs } from '@/resources/nfts'; import useWalletsWithBalancesAndNames from './useWalletsWithBalancesAndNames'; +import { useUserAssetsStore } from '@/state/assets/userAssets'; import { useRemoteConfig } from '@/model/remoteConfig'; import { usePositions } from '@/resources/defi/PositionsQuery'; import { useClaimables } from '@/resources/addys/claimables/query'; import { useExperimentalConfig } from '@/config/experimentalHooks'; -import { useUserAssetsStore } from '@/state/assets/userAssets'; import { analyticsV2 } from '@/analytics'; import { Claimable } from '@/resources/addys/claimables/types'; import { throttle } from 'lodash'; @@ -55,13 +54,16 @@ export default function useWalletSectionsData({ }: { type?: string; } = {}) { + const { accountAddress, language, network, nativeCurrency } = useAccountSettings(); const { selectedWallet, isReadOnlyWallet } = useWallets(); - const { isLoading: isLoadingUserAssets, data: sortedAssets = [] } = useSortedUserAssets(); + const { isLoadingUserAssets, sortedAssets = [] } = useUserAssetsStore(state => ({ + sortedAssets: state.legacyUserAssets, + isLoadingUserAssets: state.isLoadingUserAssets, + })); const isWalletEthZero = useIsWalletEthZero(); const { nftSort, nftSortDirection } = useNftSort(); - const { accountAddress, language, network, nativeCurrency } = useAccountSettings(); const { sendableUniqueTokens } = useSendableUniqueTokens(); const { data: { nfts: allUniqueTokens }, diff --git a/src/hooks/useWalletsHiddenBalances.ts b/src/hooks/useWalletsHiddenBalances.ts index d12b3292f22..fccff352bd9 100644 --- a/src/hooks/useWalletsHiddenBalances.ts +++ b/src/hooks/useWalletsHiddenBalances.ts @@ -1,12 +1,8 @@ import { AllRainbowWallets } from '@/model/wallet'; import { useMemo, useState, useEffect, useCallback } from 'react'; import { Address } from 'viem'; -import useAccountSettings from './useAccountSettings'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; -import { NativeCurrencyKey } from '@/entities/nativeCurrencyTypes'; import { userAssetsStore } from '@/state/assets/userAssets'; import { queryClient } from '@/react-query'; -import { userAssetsQueryKey, UserAssetsResult } from '@/resources/assets/UserAssetsQuery'; import { add, isEqual, multiply } from '@/helpers/utilities'; import { isEqual as _isEqual } from 'lodash'; @@ -14,22 +10,11 @@ export type WalletBalanceResult = { hiddenBalances: Record; }; -const getHiddenAssetBalance = ({ - address, - nativeCurrency, - connectedToHardhat, -}: { - address: Address; - nativeCurrency: NativeCurrencyKey; - connectedToHardhat: boolean; -}) => { +const getHiddenAssetBalance = ({ address }: { address: Address }) => { const hiddenAssetIds = userAssetsStore.getState(address).getHiddenAssetsIds(); - const assetData = queryClient.getQueryData( - userAssetsQueryKey({ address, currency: nativeCurrency, connectedToHardhat }) - ); const balance = hiddenAssetIds.reduce((acc, uniqueId) => { - const asset = assetData?.[uniqueId]; + const asset = userAssetsStore.getState(address).getUserAsset(uniqueId); if (!asset) return acc; const assetNativeBalance = multiply(asset.price?.value || 0, asset.balance?.amount || 0); return add(acc, assetNativeBalance); @@ -39,8 +24,6 @@ const getHiddenAssetBalance = ({ }; const useWalletsHiddenBalances = (wallets: AllRainbowWallets): WalletBalanceResult => { - const { nativeCurrency } = useAccountSettings(); - const connectedToHardhat = useConnectedToHardhatStore(state => state.connectedToHardhat); const [hiddenBalances, setHiddenBalances] = useState>({}); const allAddresses = useMemo( @@ -48,24 +31,21 @@ const useWalletsHiddenBalances = (wallets: AllRainbowWallets): WalletBalanceResu [wallets] ); - const calculateHiddenBalanceForAddress = useCallback( - (address: Address) => { - const lowerCaseAddress = address.toLowerCase() as Address; - const hiddenAssetBalance = getHiddenAssetBalance({ address, nativeCurrency, connectedToHardhat }); + const calculateHiddenBalanceForAddress = useCallback((address: Address) => { + const lowerCaseAddress = address.toLowerCase() as Address; + const hiddenAssetBalance = getHiddenAssetBalance({ address }); - setHiddenBalances(prev => { - const newBalance = hiddenAssetBalance; - if (!prev[lowerCaseAddress] || !isEqual(prev[lowerCaseAddress], newBalance)) { - return { - ...prev, - [lowerCaseAddress]: newBalance, - }; - } - return prev; - }); - }, - [nativeCurrency, connectedToHardhat] - ); + setHiddenBalances(prev => { + const newBalance = hiddenAssetBalance; + if (!prev[lowerCaseAddress] || !isEqual(prev[lowerCaseAddress], newBalance)) { + return { + ...prev, + [lowerCaseAddress]: newBalance, + }; + } + return prev; + }); + }, []); useEffect(() => { allAddresses.forEach(address => { @@ -97,7 +77,7 @@ const useWalletsHiddenBalances = (wallets: AllRainbowWallets): WalletBalanceResu subscriptions.forEach(sub => sub()); unsubscribeFromQueryCache(); }; - }, [allAddresses, calculateHiddenBalanceForAddress, connectedToHardhat, nativeCurrency]); + }, [allAddresses, calculateHiddenBalanceForAddress]); return { hiddenBalances }; }; diff --git a/src/hooks/useWatchPendingTxs.ts b/src/hooks/useWatchPendingTxs.ts index f939d6e408b..517185d1407 100644 --- a/src/hooks/useWatchPendingTxs.ts +++ b/src/hooks/useWatchPendingTxs.ts @@ -1,8 +1,7 @@ import { useMemo, useCallback } from 'react'; import useAccountSettings from './useAccountSettings'; +import { userAssetsQueryKey } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; import { RainbowTransaction, MinedTransaction, TransactionStatus } from '@/entities'; -import { userAssetsQueryKey } from '@/resources/assets/UserAssetsQuery'; -import { userAssetsQueryKey as swapsUserAssetsQueryKey } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; import { transactionFetchQuery } from '@/resources/transactions/transaction'; import { RainbowError, logger } from '@/logger'; import { consolidatedTransactionsQueryKey } from '@/resources/transactions/consolidatedTransactions'; @@ -32,14 +31,7 @@ export const useWatchPendingTransactions = ({ address }: { address: string }) => userAssetsQueryKey({ address, currency: nativeCurrency, - connectedToHardhat, - }) - ); - queryClient.invalidateQueries( - swapsUserAssetsQueryKey({ - address: address as Address, - currency: nativeCurrency, - testnetMode: !!connectedToHardhat, + testnetMode: connectedToHardhat, }) ); invalidateAddressNftsQueries(address); @@ -123,7 +115,7 @@ export const useWatchPendingTransactions = ({ address }: { address: string }) => }); queryClient.refetchQueries({ - queryKey: userAssetsQueryKey({ address, currency: nativeCurrency, connectedToHardhat }), + queryKey: userAssetsQueryKey({ address, currency: nativeCurrency, testnetMode: connectedToHardhat }), }); const supportedMainnetChainIds = useBackendNetworksStore.getState().getSupportedMainnetChainIds(); diff --git a/src/model/migrations.ts b/src/model/migrations.ts index 68625a0686a..bfd41f7b887 100644 --- a/src/model/migrations.ts +++ b/src/model/migrations.ts @@ -39,8 +39,11 @@ import { EthereumAddress, RainbowToken } from '@/entities'; import { standardizeUrl, useFavoriteDappsStore } from '@/state/browser/favoriteDappsStore'; import { useLegacyFavoriteDappsStore } from '@/state/legacyFavoriteDapps'; import { getAddressAndChainIdFromUniqueId, getUniqueId, getUniqueIdNetwork } from '@/utils/ethereumUtils'; -import { UniqueId } from '@/__swaps__/types/assets'; +import { ParsedAssetsDictByChain, ParsedSearchAsset, UniqueId } from '@/__swaps__/types/assets'; import { userAssetsStore } from '@/state/assets/userAssets'; +import { userAssetsQueryKey } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; +import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { selectorFilterByUserChains, selectUserAssetsList } from '@/__swaps__/screens/Swap/resources/_selectors/assets'; import { UnlockableAppIconKey, unlockableAppIcons } from '@/appIcons/appIcons'; import { unlockableAppIconStorage } from '@/featuresToUnlock/unlockableAppIconCheck'; @@ -712,6 +715,36 @@ export default async function runMigrations() { migrations.push(v22); + /** + *************** Migration v23 ****************** + * Populate `legacyUserAssets` attribute in `userAssetsStore` + */ + const v23 = async () => { + const state = store.getState(); + const { wallets } = state.wallets; + const { nativeCurrency } = state.settings; + + if (!wallets) return; + + for (const wallet of Object.values(wallets)) { + for (const { address } of (wallet as RainbowWallet).addresses) { + const { connectedToHardhat } = useConnectedToHardhatStore.getState(); + const queryKey = userAssetsQueryKey({ address, currency: nativeCurrency, testnetMode: connectedToHardhat }); + const queryData: ParsedAssetsDictByChain | undefined = queryClient.getQueryData(queryKey); + + if (!queryData) continue; + + const userAssets = selectorFilterByUserChains({ + data: queryData, + selector: selectUserAssetsList, + }); + userAssetsStore.getState(address).setUserAssets(userAssets as ParsedSearchAsset[]); + } + } + }; + + migrations.push(v23); + logger.debug(`[runMigrations]: ready to run migrations starting on number ${currentVersion}`); // await setMigrationVersion(17); if (migrations.length === currentVersion) { diff --git a/src/resources/assets/UserAssetsQuery.ts b/src/resources/assets/UserAssetsQuery.ts deleted file mode 100644 index 5616163e903..00000000000 --- a/src/resources/assets/UserAssetsQuery.ts +++ /dev/null @@ -1,222 +0,0 @@ -import isEmpty from 'lodash/isEmpty'; -import { ADDYS_API_KEY } from 'react-native-dotenv'; -import { NativeCurrencyKey } from '@/entities'; -import { saveAccountEmptyState } from '@/handlers/localstorage/accountLocal'; -import { greaterThan } from '@/helpers/utilities'; -import { rainbowFetch } from '@/rainbow-fetch'; -import { createQueryKey, queryClient, QueryConfigWithSelect, QueryFunctionArgs, QueryFunctionResult } from '@/react-query'; -import { useQuery } from '@tanstack/react-query'; -import { filterPositionsData, parseAddressAsset } from './assets'; -import { fetchHardhatBalances } from './hardhatAssets'; -import { AddysAccountAssetsMeta, AddysAccountAssetsResponse, RainbowAddressAssets } from './types'; -import { Network } from '@/state/backendNetworks/types'; -import { staleBalancesStore } from '@/state/staleBalances'; -import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; - -// /////////////////////////////////////////////// -// Query Types - -export type UserAssetsArgs = { - address: string; // Address; - currency: NativeCurrencyKey; - connectedToHardhat: boolean; -}; - -// /////////////////////////////////////////////// -// Query Key - -export const userAssetsQueryKey = ({ address, currency, connectedToHardhat }: UserAssetsArgs) => - createQueryKey('userAssets', { address, currency, connectedToHardhat }, { persisterVersion: 1 }); - -type UserAssetsQueryKey = ReturnType; - -// /////////////////////////////////////////////// -// Query Function - -const fetchUserAssetsForChainIds = async ({ - address, - currency, - chainIds, - staleBalanceParam, -}: { - address: string; - currency: NativeCurrencyKey; - chainIds: number[]; - staleBalanceParam?: string; -}) => { - const chainIdsString = chainIds.join(','); - let url = `https://addys.p.rainbow.me/v3/${chainIdsString}/${address}/assets?currency=${currency.toLowerCase()}`; - - if (staleBalanceParam) { - url = url + staleBalanceParam; - } - - const response = await rainbowFetch(url, { - method: 'get', - headers: { - Authorization: `Bearer ${ADDYS_API_KEY}`, - }, - }); - - return response.data; -}; - -async function userAssetsQueryFunction({ - queryKey: [{ address, currency, connectedToHardhat }], -}: QueryFunctionArgs) { - const cache = queryClient.getQueryCache(); - const cachedAddressAssets = (cache.find(userAssetsQueryKey({ address, currency, connectedToHardhat }))?.state?.data || - {}) as RainbowAddressAssets; - - if (connectedToHardhat) { - const parsedHardhatResults = await fetchHardhatBalances(address); - return parsedHardhatResults; - } - - try { - staleBalancesStore.getState().clearExpiredData(address); - const staleBalanceParam = staleBalancesStore.getState().getStaleBalancesQueryParam(address); - - const { erroredChainIds, results } = await fetchAndParseUserAssetsForChainIds({ - address, - currency, - chainIds: useBackendNetworksStore.getState().getSupportedMainnetChainIds(), - staleBalanceParam, - }); - let parsedSuccessResults = results; - - // grab cached data for chain IDs with errors - if (!isEmpty(erroredChainIds)) { - const cachedDataForErroredChainIds = Object.keys(cachedAddressAssets) - .filter(uniqueId => { - const cachedAsset = cachedAddressAssets[uniqueId]; - return erroredChainIds?.find((chainId: number) => chainId === cachedAsset.chainId); - }) - .reduce((cur, uniqueId) => { - return Object.assign(cur, { - [uniqueId]: cachedAddressAssets[uniqueId], - }); - }, {}); - - parsedSuccessResults = { - ...parsedSuccessResults, - ...cachedDataForErroredChainIds, - }; - - retryErroredChainIds(address, currency, connectedToHardhat, erroredChainIds); - } - - return parsedSuccessResults; - } catch (e) { - return cachedAddressAssets; - } -} - -const retryErroredChainIds = async ( - address: string, - currency: NativeCurrencyKey, - connectedToHardhat: boolean, - erroredChainIds: number[] -) => { - const { meta, results } = await fetchAndParseUserAssetsForChainIds({ address, currency, chainIds: erroredChainIds }); - let parsedSuccessResults = results; - const successChainIds = meta?.chain_ids; - - if (isEmpty(successChainIds)) { - return; - } - - // grab cached data without data that will be replaced - const cache = queryClient.getQueryCache(); - const cachedAddressAssets = (cache.find(userAssetsQueryKey({ address, currency, connectedToHardhat }))?.state?.data || - {}) as RainbowAddressAssets; - - const cachedData = Object.keys(cachedAddressAssets) - .filter(uniqueId => { - const cachedAsset = cachedAddressAssets[uniqueId]; - return successChainIds?.find((chainId: number) => chainId !== cachedAsset.chainId); - }) - .reduce((cur, uniqueId) => { - return Object.assign(cur, { - [uniqueId]: cachedAddressAssets[uniqueId], - }); - }, {}); - - parsedSuccessResults = { - ...cachedData, - ...parsedSuccessResults, - }; - - queryClient.setQueryData(userAssetsQueryKey({ address, currency, connectedToHardhat }), parsedSuccessResults); -}; - -export type UserAssetsResult = QueryFunctionResult; - -interface AssetsAndMetadata { - erroredChainIds: number[]; - meta: AddysAccountAssetsMeta; - results: RainbowAddressAssets; -} - -const fetchAndParseUserAssetsForChainIds = async ({ - address, - currency, - chainIds, - staleBalanceParam, -}: { - address: string; - currency: NativeCurrencyKey; - chainIds: number[]; - staleBalanceParam?: string; -}): Promise => { - const data = await fetchUserAssetsForChainIds({ address, currency, chainIds, staleBalanceParam }); - let parsedSuccessResults = parseUserAssetsByChain(data); - - // filter out positions data - parsedSuccessResults = filterPositionsData(address, currency, parsedSuccessResults); - - // update account empty state - if (!isEmpty(parsedSuccessResults)) { - saveAccountEmptyState(false, address, Network.mainnet); - } - - const erroredChainIds = data?.meta?.chain_ids_with_errors; - return { erroredChainIds, meta: data?.meta, results: parsedSuccessResults }; -}; - -function parseUserAssetsByChain(message: AddysAccountAssetsResponse) { - return Object.values(message?.payload?.assets || {}).reduce((dict, assetData) => { - if (greaterThan(assetData?.quantity, 0)) { - const parsedAsset = parseAddressAsset({ - assetData, - }); - dict[parsedAsset?.uniqueId] = parsedAsset; - } - return dict; - }, {} as RainbowAddressAssets); -} - -// /////////////////////////////////////////////// -// Query Fetcher (Optional) - -export async function fetchUserAssets( - { address, currency, connectedToHardhat }: UserAssetsArgs, - config: QueryConfigWithSelect = {} -) { - return await queryClient.fetchQuery(userAssetsQueryKey({ address, currency, connectedToHardhat }), userAssetsQueryFunction, config); -} - -// /////////////////////////////////////////////// -// Query Hook - -export function useUserAssets( - { address, currency, connectedToHardhat }: UserAssetsArgs, - config: QueryConfigWithSelect = {} -) { - return useQuery(userAssetsQueryKey({ address, currency, connectedToHardhat }), userAssetsQueryFunction, { - enabled: !!address && !!currency, - staleTime: 60_000, // 1 minute - refetchInterval: 120_000, // 2 minutes - ...config, - }); -} diff --git a/src/resources/assets/assetSelectors.ts b/src/resources/assets/assetSelectors.ts deleted file mode 100644 index 41d6d2ba9e5..00000000000 --- a/src/resources/assets/assetSelectors.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { NativeCurrencyKey, ParsedAddressAsset } from '@/entities'; -import { parseAssetsNative } from '@/parsers'; -import isEmpty from 'lodash/isEmpty'; -import isNil from 'lodash/isNil'; -import { RainbowAddressAssets } from './types'; - -const EMPTY_ARRAY: any = []; - -export function selectUserAssetWithUniqueId(uniqueId: string) { - return (accountAssets: RainbowAddressAssets) => { - return accountAssets?.[uniqueId]; - }; -} - -export function selectSortedUserAssets(nativeCurrency: NativeCurrencyKey) { - return (accountAssets: RainbowAddressAssets) => { - return sortAssetsByNativeAmount(accountAssets, nativeCurrency); - }; -} - -const sortAssetsByNativeAmount = (accountAssets: RainbowAddressAssets, nativeCurrency: NativeCurrencyKey): ParsedAddressAsset[] => { - let assetsNativePrices = Object.values(accountAssets); - - if (!isEmpty(assetsNativePrices)) { - assetsNativePrices = parseAssetsNative(assetsNativePrices, nativeCurrency); - } - const { hasValue = EMPTY_ARRAY, noValue = EMPTY_ARRAY } = groupAssetsByMarketValue(assetsNativePrices); - - const sortedAssetsNoShitcoins = hasValue.sort((a: any, b: any) => { - const itemA = Number(a.native?.balance?.amount) ?? 0; - const itemB = Number(b.native?.balance?.amount) ?? 0; - - return itemA < itemB ? 1 : -1; - }); - - const sortedShitcoins = noValue.sort((a: any, b: any) => { - const itemA = a.name; - const itemB = b.name; - - return itemA > itemB ? 1 : -1; - }); - - const sortedAssets = sortedAssetsNoShitcoins.concat(sortedShitcoins); - - return sortedAssets; -}; - -const groupAssetsByMarketValue = (assets: any) => - assets.reduce( - (acc: any, asset: any) => { - if (isNil(asset.native)) { - acc.noValue.push(asset); - } else { - acc.hasValue.push(asset); - } - - return acc; - }, - { - hasValue: [], - noValue: [], - } - ); diff --git a/src/resources/assets/assets.ts b/src/resources/assets/assets.ts index 057963856bb..d64dacd9948 100644 --- a/src/resources/assets/assets.ts +++ b/src/resources/assets/assets.ts @@ -1,8 +1,8 @@ import lang from 'i18n-js'; -import isEmpty from 'lodash/isEmpty'; -import { NativeCurrencyKey, ParsedAddressAsset } from '@/entities'; import { isNativeAsset } from '@/handlers/assets'; import { convertRawAmountToBalance } from '@/helpers/utilities'; +import isEmpty from 'lodash/isEmpty'; +import { NativeCurrencyKey, ParsedAddressAsset } from '@/entities'; import { queryClient } from '@/react-query'; import { positionsQueryKey } from '@/resources/defi/PositionsQuery'; import { RainbowPositions } from '@/resources/defi/types'; diff --git a/src/resources/assets/useSortedUserAssets.ts b/src/resources/assets/useSortedUserAssets.ts deleted file mode 100644 index b7e80d92c71..00000000000 --- a/src/resources/assets/useSortedUserAssets.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { useAccountSettings } from '@/hooks'; -import { selectSortedUserAssets } from '@/resources/assets/assetSelectors'; -import { useUserAssets } from '@/resources/assets/UserAssetsQuery'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; - -export function useSortedUserAssets() { - const { accountAddress, nativeCurrency } = useAccountSettings(); - const { connectedToHardhat } = useConnectedToHardhatStore(); - - return useUserAssets( - { - address: accountAddress, - currency: nativeCurrency, - connectedToHardhat, - }, - { - select: selectSortedUserAssets(nativeCurrency), - } - ); -} diff --git a/src/resources/assets/useUserAsset.ts b/src/resources/assets/useUserAsset.ts deleted file mode 100644 index 4ee1dea9de1..00000000000 --- a/src/resources/assets/useUserAsset.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ChainId } from '@/state/backendNetworks/types'; -import { useAccountSettings } from '@/hooks'; -import { useUserAssets } from '@/resources/assets/UserAssetsQuery'; -import { selectUserAssetWithUniqueId } from '@/resources/assets/assetSelectors'; -import { getUniqueId } from '@/utils/ethereumUtils'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; -import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; - -export function useUserAsset(uniqueId: string) { - const { accountAddress, nativeCurrency } = useAccountSettings(); - const { connectedToHardhat } = useConnectedToHardhatStore(); - - return useUserAssets( - { - address: accountAddress, - currency: nativeCurrency, - connectedToHardhat, - }, - { - select: selectUserAssetWithUniqueId(uniqueId), - } - ); -} - -export function useUserNativeNetworkAsset(chainId: ChainId) { - const nativeCurrency = useBackendNetworksStore.getState().getChainsNativeAsset()[chainId]; - const { address } = nativeCurrency; - const uniqueId = getUniqueId(address, chainId); - return useUserAsset(uniqueId); -} diff --git a/src/resources/assets/useUserAssetCount.ts b/src/resources/assets/useUserAssetCount.ts deleted file mode 100644 index 7cf00ced409..00000000000 --- a/src/resources/assets/useUserAssetCount.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { useAccountSettings } from '@/hooks'; -import { useUserAssets } from '@/resources/assets/UserAssetsQuery'; -import { RainbowAddressAssets } from './types'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; - -const countSelector = (accountAssets: RainbowAddressAssets) => accountAssets?.length; - -export function useUserAssetCount() { - const { accountAddress, nativeCurrency } = useAccountSettings(); - const { connectedToHardhat } = useConnectedToHardhatStore(); - - return useUserAssets( - { - address: accountAddress, - currency: nativeCurrency, - connectedToHardhat, - }, - { - select: countSelector, - } - ); -} diff --git a/src/screens/SendSheet.tsx b/src/screens/SendSheet.tsx index 1369c2ec051..f7f71b7173f 100644 --- a/src/screens/SendSheet.tsx +++ b/src/screens/SendSheet.tsx @@ -46,7 +46,6 @@ import { loadWallet, sendTransaction } from '@/model/wallet'; import { useNavigation } from '@/navigation/Navigation'; import { parseGasParamsForTransaction } from '@/parsers'; import { rainbowTokenList } from '@/references'; -import { useSortedUserAssets } from '@/resources/assets/useSortedUserAssets'; import Routes from '@/navigation/routesNames'; import styled from '@/styled-thing'; import { borders } from '@/styles'; @@ -63,13 +62,13 @@ import { getNextNonce } from '@/state/nonces'; import { usePersistentDominantColorFromImage } from '@/hooks/usePersistentDominantColorFromImage'; import { performanceTracking, Screens, TimeToSignOperation } from '@/state/performance/performance'; import { REGISTRATION_STEPS } from '@/helpers/ens'; +import { useUserAssetsStore } from '@/state/assets/userAssets'; import { ChainId } from '@/state/backendNetworks/types'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; import { RootStackParamList } from '@/navigation/types'; import { ThemeContextProps, useTheme } from '@/theme'; import { StaticJsonRpcProvider } from '@ethersproject/providers'; import { Contact } from '@/redux/contacts'; -import { useUserAssetsStore } from '@/state/assets/userAssets'; const sheetHeight = deviceUtils.dimensions.height - (IS_ANDROID ? 30 : 10); const statusBarHeight = IS_IOS ? safeAreaInsetValues.top : StatusBar.currentHeight; @@ -117,7 +116,7 @@ type OnSubmitProps = { export default function SendSheet() { const { goBack, navigate } = useNavigation(); - const { data: sortedAssets } = useSortedUserAssets(); + const sortedAssets = useUserAssetsStore(state => state.legacyUserAssets); const { gasFeeParamsBySpeed, gasLimit, diff --git a/src/screens/claimables/transaction/context/TransactionClaimableContext.tsx b/src/screens/claimables/transaction/context/TransactionClaimableContext.tsx index 63c1ce771be..d25448ea23e 100644 --- a/src/screens/claimables/transaction/context/TransactionClaimableContext.tsx +++ b/src/screens/claimables/transaction/context/TransactionClaimableContext.tsx @@ -15,7 +15,6 @@ import { convertAmountToNativeDisplayWorklet, add, } from '@/helpers/utilities'; -import { useUserNativeNetworkAsset } from '@/resources/assets/useUserAsset'; import { GasSpeed } from '@/__swaps__/types/gas'; import { getGasSettingsBySpeed, useGasSettings } from '@/__swaps__/screens/Swap/hooks/useSelectedGas'; import { LegacyTransactionGasParamAmounts, TransactionGasParamAmounts } from '@/entities'; @@ -41,6 +40,7 @@ import { getRemoteConfig } from '@/model/remoteConfig'; import { estimateClaimUnlockSwapGasLimit } from '../estimateGas'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; import showWalletErrorAlert from '@/helpers/support'; +import { userAssetsStore } from '@/state/assets/userAssets'; enum ErrorMessages { SWAP_ERROR = 'Failed to swap claimed asset due to swap action error', @@ -141,8 +141,6 @@ export function TransactionClaimableContextProvider({ const gasSettings = useGasSettings(claimable.chainId, GasSpeed.FAST); - const { data: userNativeNetworkAsset, isLoading: isLoadingNativeNetworkAsset } = useUserNativeNetworkAsset(claimable.chainId); - const updateQuoteState = useCallback(async () => { if (!outputConfig?.token || !outputConfig.chainId || !outputTokenAddress) { logger.warn('[TransactionClaimableContext]: Somehow entered unreachable state in updateQuote'); @@ -220,11 +218,7 @@ export function TransactionClaimableContextProvider({ const provider = useMemo(() => getProvider({ chainId: claimable.chainId }), [claimable.chainId]); // make sure we have necessary data before attempting gas estimation - const canEstimateGas = !!( - !isLoadingNativeNetworkAsset && - gasSettings && - (!requiresSwap || (quoteState.quote && quoteState.status === 'success')) - ); + const canEstimateGas = !!(gasSettings && (!requiresSwap || (quoteState.quote && quoteState.status === 'success'))); const updateGasState = useCallback(async () => { try { @@ -252,12 +246,13 @@ export function TransactionClaimableContextProvider({ const gasFeeWei = calculateGasFeeWorklet(gasSettings, gasLimit); const nativeAsset = useBackendNetworksStore.getState().getChainsNativeAsset()[claimable.chainId]; + const userNativeAsset = userAssetsStore.getState().getNativeAssetForChain(claimable.chainId); const gasFeeNativeToken = formatUnits(safeBigInt(gasFeeWei), nativeAsset.decimals); - const userBalance = userNativeNetworkAsset?.balance?.amount || '0'; + const userBalance = userNativeAsset?.balance?.amount || '0'; const sufficientGas = lessThanOrEqualToWorklet(gasFeeNativeToken, userBalance); - const networkAssetPrice = userNativeNetworkAsset?.price?.value?.toString(); + const networkAssetPrice = userNativeAsset?.price?.value?.toString(); let gasFeeNativeCurrencyDisplay; if (!networkAssetPrice) { @@ -290,8 +285,6 @@ export function TransactionClaimableContextProvider({ accountAddress, quoteState.quote, gasSettings, - userNativeNetworkAsset?.balance?.amount, - userNativeNetworkAsset?.price?.value, gasState.status, nativeCurrency, ]); diff --git a/src/state/assets/userAssets.ts b/src/state/assets/userAssets.ts index 2109601e25d..d667880acdb 100644 --- a/src/state/assets/userAssets.ts +++ b/src/state/assets/userAssets.ts @@ -5,14 +5,80 @@ import reduxStore, { AppState } from '@/redux/store'; import { supportedNativeCurrencies } from '@/references'; import { createRainbowStore } from '@/state/internal/createRainbowStore'; import { useStore } from 'zustand'; +import { ParsedAddressAsset } from '@/entities'; import { swapsStore } from '@/state/swaps/swapsStore'; import { ChainId } from '@/state/backendNetworks/types'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; import { useSelector } from 'react-redux'; +import { getUniqueId } from '@/utils/ethereumUtils'; + +type UserAssetsStateToPersist = Omit< + Partial, + | 'currentAbortController' + | 'inputSearchQuery' + | 'searchCache' + | 'getBalanceSortedChainList' + | 'getChainsWithBalance' + | 'getFilteredUserAssetIds' + | 'getHighestValueNativeAsset' + | 'getUserAsset' + | 'getUserAssets' + | 'selectUserAssetIds' + | 'selectUserAssets' + | 'setSearchCache' + | 'setSearchQuery' + | 'setUserAssets' +>; const SEARCH_CACHE_MAX_ENTRIES = 50; +const parsedSearchAssetToParsedAddressAsset = (asset: ParsedSearchAsset): ParsedAddressAsset => ({ + address: asset.address, + balance: { + amount: asset.balance.amount, + display: asset.balance.display, + }, + network: useBackendNetworksStore.getState().getChainsName()[asset.chainId], + name: asset.name, + chainId: asset.chainId, + color: asset.colors?.primary ?? asset.colors?.fallback, + colors: asset.colors?.primary + ? { + primary: asset.colors.primary, + fallback: asset.colors.fallback, + shadow: asset.colors.shadow, + } + : undefined, + decimals: asset.decimals, + highLiquidity: asset.highLiquidity, + icon_url: asset.icon_url, + id: asset.networks?.[ChainId.mainnet]?.address, + isNativeAsset: asset.isNativeAsset, + price: { + changed_at: undefined, + relative_change_24h: asset.price?.relative_change_24h, + value: asset.price?.value, + }, + mainnet_address: asset.mainnetAddress, + native: { + balance: { + amount: asset.native.balance.amount, + display: asset.native.balance.display, + }, + change: asset.native.price?.change, + price: { + amount: asset.native.price?.amount?.toString(), + display: asset.native.price?.display, + }, + }, + shadowColor: asset.colors?.shadow, + symbol: asset.symbol, + type: asset.type, + uniqueId: asset.uniqueId, +}); + const escapeRegExp = (string: string) => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const getSearchQueryKey = ({ filter, searchQuery }: { filter: UserAssetFilter; searchQuery: string }) => `${filter}${searchQuery}`; const getDefaultCacheKeys = (): Set => { @@ -35,41 +101,27 @@ export interface UserAssetsState { inputSearchQuery: string; searchCache: Map; userAssets: Map; + legacyUserAssets: ParsedAddressAsset[]; + isLoadingUserAssets: boolean; getBalanceSortedChainList: () => ChainId[]; getChainsWithBalance: () => ChainId[]; getFilteredUserAssetIds: () => UniqueId[]; getHighestValueNativeAsset: () => ParsedSearchAsset | null; getUserAsset: (uniqueId: UniqueId) => ParsedSearchAsset | null; + getLegacyUserAsset: (uniqueId: UniqueId) => ParsedAddressAsset | null; + getNativeAssetForChain: (chainId: ChainId) => ParsedSearchAsset | null; getUserAssets: () => ParsedSearchAsset[]; selectUserAssetIds: (selector: (asset: ParsedSearchAsset) => boolean, filter?: UserAssetFilter) => Generator; selectUserAssets: (selector: (asset: ParsedSearchAsset) => boolean) => Generator<[UniqueId, ParsedSearchAsset], void, unknown>; setSearchCache: (queryKey: string, filteredIds: UniqueId[]) => void; setSearchQuery: (query: string) => void; - setUserAssets: (userAssets: Map | ParsedSearchAsset[]) => void; + setUserAssets: (userAssets: ParsedSearchAsset[]) => void; hiddenAssets: Set; getHiddenAssetsIds: () => UniqueId[]; setHiddenAssets: (uniqueIds: UniqueId[]) => void; } -type UserAssetsStateToPersist = Omit< - Partial, - | 'currentAbortController' - | 'inputSearchQuery' - | 'searchCache' - | 'getBalanceSortedChainList' - | 'getChainsWithBalance' - | 'getFilteredUserAssetIds' - | 'getHighestValueNativeAsset' - | 'getUserAsset' - | 'getUserAssets' - | 'selectUserAssetIds' - | 'selectUserAssets' - | 'setSearchCache' - | 'setSearchQuery' - | 'setUserAssets' ->; - // NOTE: We are serializing Map as an Array<[UniqueId, ParsedSearchAsset]> type UserAssetsStateToPersistWithTransforms = Omit< UserAssetsStateToPersist, @@ -170,6 +222,8 @@ export const createUserAssetsStore = (address: Address | string) => inputSearchQuery: '', searchCache: new Map(), userAssets: new Map(), + legacyUserAssets: [], + isLoadingUserAssets: true, getBalanceSortedChainList: () => { const chainBalances = [...get().chainBalances.entries()]; @@ -223,7 +277,7 @@ export const createUserAssetsStore = (address: Address | string) => const preferredNetwork = swapsStore.getState().preferredNetwork; const assets = get().userAssets; - let highestValueEth = null; + let highestValueNativeAsset = null; for (const [, asset] of assets) { if (!asset.isNativeAsset) continue; @@ -232,16 +286,28 @@ export const createUserAssetsStore = (address: Address | string) => return asset; } - if (!highestValueEth || asset.balance > highestValueEth.balance) { - highestValueEth = asset; + if (!highestValueNativeAsset || asset.balance > highestValueNativeAsset.balance) { + highestValueNativeAsset = asset; } } - return highestValueEth; + return highestValueNativeAsset; + }, + + getNativeAssetForChain: (chainId: ChainId) => { + const nativeAssetAddress = useBackendNetworksStore.getState().getChainsNativeAsset()[chainId].address; + const nativeAssetUniqueId = getUniqueId(nativeAssetAddress, chainId); + return get().userAssets.get(nativeAssetUniqueId) || null; }, getUserAsset: (uniqueId: UniqueId) => get().userAssets.get(uniqueId) || null, + getLegacyUserAsset: (uniqueId: UniqueId) => { + const asset = get().userAssets.get(uniqueId); + if (!asset) return null; + return parsedSearchAssetToParsedAddressAsset(asset); + }, + getUserAssets: () => Array.from(get().userAssets.values()) || [], selectUserAssetIds: function* (selector: (asset: ParsedSearchAsset) => boolean, filter?: UserAssetFilter) { @@ -305,7 +371,7 @@ export const createUserAssetsStore = (address: Address | string) => }); }, - setUserAssets: (userAssets: Map | ParsedSearchAsset[]) => + setUserAssets: (userAssets: ParsedSearchAsset[]) => set(() => { const idsByChain = new Map(); const unsortedChainBalances = new Map(); @@ -336,9 +402,9 @@ export const createUserAssetsStore = (address: Address | string) => idsByChain.set(chainId, idsByChain.get(chainId) || []); }); - const isMap = userAssets instanceof Map; - const allIdsArray = isMap ? Array.from(userAssets.keys()) : userAssets.map(asset => asset.uniqueId); - const userAssetsMap = isMap ? userAssets : new Map(userAssets.map(asset => [asset.uniqueId, asset])); + const allIdsArray = userAssets.map(asset => asset.uniqueId); + const userAssetsMap = new Map(userAssets.map(asset => [asset.uniqueId, asset])); + const legacyUserAssets = userAssets.map(asset => parsedSearchAssetToParsedAddressAsset(asset)); idsByChain.set('all', allIdsArray); @@ -358,15 +424,14 @@ export const createUserAssetsStore = (address: Address | string) => searchCache.set('all', filteredAllIdsArray); - if (isMap) { - return { chainBalances, idsByChain, searchCache, userAssets }; - } else - return { - chainBalances, - idsByChain, - searchCache, - userAssets: userAssetsMap, - }; + return { + chainBalances, + idsByChain, + legacyUserAssets, + searchCache, + userAssets: userAssetsMap, + isLoadingUserAssets: false, + }; }), hiddenAssets: new Set(), @@ -383,7 +448,6 @@ export const createUserAssetsStore = (address: Address | string) => hiddenAssets.add(uniqueId); } }); - return { hiddenAssets }; }); }, @@ -395,6 +459,7 @@ export const createUserAssetsStore = (address: Address | string) => filter: state.filter, idsByChain: state.idsByChain, userAssets: state.userAssets, + legacyUserAssets: state.legacyUserAssets, hiddenAssets: state.hiddenAssets, }), version: 1, diff --git a/src/state/sync/UserAssetsSync.tsx b/src/state/sync/UserAssetsSync.tsx index e8722cddfce..06d94eb832a 100644 --- a/src/state/sync/UserAssetsSync.tsx +++ b/src/state/sync/UserAssetsSync.tsx @@ -1,3 +1,4 @@ +import { memo } from 'react'; import { useAccountSettings } from '@/hooks'; import { userAssetsStore } from '@/state/assets/userAssets'; import { useSwapsStore } from '@/state/swaps/swapsStore'; @@ -5,8 +6,9 @@ import { selectUserAssetsList, selectorFilterByUserChains } from '@/__swaps__/sc import { ParsedSearchAsset } from '@/__swaps__/types/assets'; import { useUserAssets } from '@/__swaps__/screens/Swap/resources/assets'; import { ChainId } from '@/state/backendNetworks/types'; +import { IS_TEST } from '@/env'; -export const UserAssetsSync = function UserAssetsSync() { +function UserAssetsSyncComponent() { const { accountAddress, nativeCurrency: currentCurrency } = useAccountSettings(); const isSwapsOpen = useSwapsStore(state => state.isSwapsOpen); const isUserAssetsStoreMissingData = userAssetsStore.getState().getUserAssets()?.length === 0; @@ -39,4 +41,6 @@ export const UserAssetsSync = function UserAssetsSync() { ); return null; -}; +} + +export const UserAssetsSync = IS_TEST ? UserAssetsSyncComponent : memo(UserAssetsSyncComponent); diff --git a/src/utils/ethereumUtils.ts b/src/utils/ethereumUtils.ts index 7c095eb3676..74dbcb14969 100644 --- a/src/utils/ethereumUtils.ts +++ b/src/utils/ethereumUtils.ts @@ -1,8 +1,6 @@ import { BigNumberish } from '@ethersproject/bignumber'; import { StaticJsonRpcProvider, TransactionRequest } from '@ethersproject/providers'; import { serialize } from '@ethersproject/transactions'; -import { RainbowAddressAssets } from '@/resources/assets/types'; -import { userAssetsQueryKey } from '@/resources/assets/UserAssetsQuery'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { queryClient } from '@/react-query'; // @ts-expect-error ts-migrate(7016) FIXME: Could not find a declaration file for module 'eth-... Remove this comment to see the full error message @@ -42,7 +40,7 @@ import { import { ChainId, Network } from '@/state/backendNetworks/types'; import { AddressOrEth } from '@/__swaps__/types/assets'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { userAssetsStore } from '@/state/assets/userAssets'; /** * @deprecated - use `getUniqueId` instead for chainIds @@ -148,23 +146,6 @@ const getAsset = (accountAssets: Record, uniqueId: E const loweredUniqueId = uniqueId.toLowerCase(); return accountAssets[loweredUniqueId]; }; - -const getUserAssetFromCache = (uniqueId: string) => { - const { accountAddress, nativeCurrency } = store.getState().settings; - const connectedToHardhat = useConnectedToHardhatStore.getState().connectedToHardhat; - - const cache = queryClient.getQueryCache(); - - const cachedAddressAssets = (cache.find( - userAssetsQueryKey({ - address: accountAddress, - currency: nativeCurrency, - connectedToHardhat, - }) - )?.state?.data || {}) as RainbowAddressAssets; - return cachedAddressAssets?.[uniqueId]; -}; - const getExternalAssetFromCache = (uniqueId: string) => { const { nativeCurrency } = store.getState().settings; const { address, chainId } = getAddressAndChainIdFromUniqueId(uniqueId); @@ -186,15 +167,14 @@ const getExternalAssetFromCache = (uniqueId: string) => { const getAssetFromAllAssets = (uniqueId: EthereumAddress | undefined) => { const loweredUniqueId = uniqueId?.toLowerCase() ?? ''; - const accountAsset = getUserAssetFromCache(loweredUniqueId); + const accountAsset = userAssetsStore.getState().getLegacyUserAsset(loweredUniqueId); const externalAsset = getExternalAssetFromCache(loweredUniqueId); return accountAsset ?? externalAsset; }; const getAccountAsset = (uniqueId: EthereumAddress | undefined): ParsedAddressAsset | undefined => { const loweredUniqueId = uniqueId?.toLowerCase() ?? ''; - const accountAsset = getUserAssetFromCache(loweredUniqueId); - return accountAsset; + return userAssetsStore.getState().getLegacyUserAsset(loweredUniqueId) ?? undefined; }; const getAssetPrice = ( From 3c4334f94b4e6fded0091dd898710ff981d9e713 Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Thu, 19 Dec 2024 13:55:02 -0500 Subject: [PATCH 04/19] Network Expansion (#6334) * more assets and uncommenting out code * add missing fastcoinbadge --- .../badges/gnosis.imageset/Contents.json | 23 +++++ .../badges/gnosis.imageset/gnosis.png | Bin 0 -> 893 bytes .../badges/gnosis.imageset/gnosis@2x.png | Bin 0 -> 1256 bytes .../badges/gnosis.imageset/gnosis@3x.png | Bin 0 -> 1608 bytes .../badges/gnosisBadge.imageset/Contents.json | 23 +++++ .../gnosisBadge.imageset/gnosisBadge.png | Bin 0 -> 2633 bytes .../gnosisBadge.imageset/gnosisBadge@2x.png | Bin 0 -> 6487 bytes .../gnosisBadge.imageset/gnosisBadge@3x.png | Bin 0 -> 11678 bytes .../gnosisBadgeDark.imageset/Contents.json | 23 +++++ .../gnosisBadgeDark.png | Bin 0 -> 2273 bytes .../gnosisBadgeDark@2x.png | Bin 0 -> 4976 bytes .../gnosisBadgeDark@3x.png | Bin 0 -> 9704 bytes .../gnosisBadgeLarge.imageset/Contents.json | 23 +++++ .../gnosisBadgeLarge.png | Bin 0 -> 4265 bytes .../gnosisBadgeLarge@2x.png | Bin 0 -> 10887 bytes .../gnosisBadgeLarge@3x.png | Bin 0 -> 19931 bytes .../Contents.json | 23 +++++ .../gnosisBadgeLargeDark.png | Bin 0 -> 4307 bytes .../gnosisBadgeLargeDark@2x.png | Bin 0 -> 11111 bytes .../gnosisBadgeLargeDark@3x.png | Bin 0 -> 20766 bytes .../Contents.json | 23 +++++ .../gnosisBadgeNoShadow.png | Bin 0 -> 903 bytes .../gnosisBadgeNoShadow@2x.png | Bin 0 -> 1251 bytes .../gnosisBadgeNoShadow@3x.png | Bin 0 -> 1537 bytes .../badges/gravity.imageset/Contents.json | 23 +++++ .../badges/gravity.imageset/gravity.png | Bin 0 -> 2558 bytes .../badges/gravity.imageset/gravity@2x.png | Bin 0 -> 6193 bytes .../badges/gravity.imageset/gravity@3x.png | Bin 0 -> 11153 bytes .../gravityBadge.imageset/Contents.json | 23 +++++ .../gravityBadge.imageset/gravityBadge.png | Bin 0 -> 3223 bytes .../gravityBadge.imageset/gravityBadge@2x.png | Bin 0 -> 8506 bytes .../gravityBadge.imageset/gravityBadge@3x.png | Bin 0 -> 15564 bytes .../gravityBadgeDark.imageset/Contents.json | 23 +++++ .../gravityBadgeDark.png | Bin 0 -> 2659 bytes .../gravityBadgeDark@2x.png | Bin 0 -> 6941 bytes .../gravityBadgeDark@3x.png | Bin 0 -> 12712 bytes .../gravityBadgeLarge.imageset/Contents.json | 23 +++++ .../gravityBadgeLarge.png | Bin 0 -> 6093 bytes .../gravityBadgeLarge@2x.png | Bin 0 -> 16175 bytes .../gravityBadgeLarge@3x.png | Bin 0 -> 30168 bytes .../Contents.json | 23 +++++ .../gravityBadgeLargeDark.png | Bin 0 -> 5169 bytes .../gravityBadgeLargeDark@2x.png | Bin 0 -> 13621 bytes .../gravityBadgeLargeDark@3x.png | Bin 0 -> 25219 bytes .../Contents.json | 23 +++++ .../gravityBadgeNoShadow.png | Bin 0 -> 1348 bytes .../gravityBadgeNoShadow@2x.png | Bin 0 -> 2754 bytes .../gravityBadgeNoShadow@3x.png | Bin 0 -> 4479 bytes .../badges/linea.imageset/Contents.json | 23 +++++ .../badges/linea.imageset/linea.png | Bin 0 -> 859 bytes .../badges/linea.imageset/linea@2x.png | Bin 0 -> 1781 bytes .../badges/linea.imageset/linea@3x.png | Bin 0 -> 3030 bytes .../badges/lineaBadge.imageset/Contents.json | 23 +++++ .../badges/lineaBadge.imageset/lineaBadge.png | Bin 0 -> 2554 bytes .../lineaBadge.imageset/lineaBadge@2x.png | Bin 0 -> 6485 bytes .../lineaBadge.imageset/lineaBadge@3x.png | Bin 0 -> 11951 bytes .../lineaBadgeDark.imageset/Contents.json | 23 +++++ .../lineaBadgeDark.png | Bin 0 -> 1862 bytes .../lineaBadgeDark@2x.png | Bin 0 -> 4617 bytes .../lineaBadgeDark@3x.png | Bin 0 -> 8570 bytes .../lineaBadgeLarge.imageset/Contents.json | 23 +++++ .../lineaBadgeLarge.png | Bin 0 -> 4208 bytes .../lineaBadgeLarge@2x.png | Bin 0 -> 11464 bytes .../lineaBadgeLarge@3x.png | Bin 0 -> 21696 bytes .../Contents.json | 23 +++++ .../lineaBadgeLargeDark.png | Bin 0 -> 3057 bytes .../lineaBadgeLargeDark@2x.png | Bin 0 -> 8225 bytes .../lineaBadgeLargeDark@3x.png | Bin 0 -> 15535 bytes .../lineaBadgeNoShadow.imageset/Contents.json | 23 +++++ .../lineaBadgeNoShadow.png | Bin 0 -> 769 bytes .../lineaBadgeNoShadow@2x.png | Bin 0 -> 1185 bytes .../lineaBadgeNoShadow@3x.png | Bin 0 -> 1723 bytes .../sankBadgeDark.imageset/Contents.json | 23 +++++ .../sankBadgeDark.imageset/sankBadgeDark.png | Bin 0 -> 3059 bytes .../sankBadgeDark@2x.png | Bin 0 -> 8911 bytes .../sankBadgeDark@3x.png | Bin 0 -> 17787 bytes .../badges/sanko.imageset/Contents.json | 23 +++++ .../badges/sanko.imageset/sanko.png | Bin 0 -> 3562 bytes .../badges/sanko.imageset/sanko@2x.png | Bin 0 -> 11595 bytes .../badges/sanko.imageset/sanko@3x.png | Bin 0 -> 23754 bytes .../badges/sankoBadge.imageset/Contents.json | 23 +++++ .../badges/sankoBadge.imageset/sankoBadge.png | Bin 0 -> 3468 bytes .../sankoBadge.imageset/sankoBadge@2x.png | Bin 0 -> 9973 bytes .../sankoBadge.imageset/sankoBadge@3x.png | Bin 0 -> 19809 bytes .../sankoBadgeLarge.imageset/Contents.json | 23 +++++ .../sankoBadgeLarge.png | Bin 0 -> 7684 bytes .../sankoBadgeLarge@2x.png | Bin 0 -> 25056 bytes .../sankoBadgeLarge@3x.png | Bin 0 -> 51551 bytes .../Contents.json | 23 +++++ .../sankoBadgeLargeDark.png | Bin 0 -> 7182 bytes .../sankoBadgeLargeDark@2x.png | Bin 0 -> 23183 bytes .../sankoBadgeLargeDark@3x.png | Bin 0 -> 47793 bytes .../sankoBadgeNoShadow.imageset/Contents.json | 23 +++++ .../sankoBadgeNoShadow.png | Bin 0 -> 1721 bytes .../sankoBadgeNoShadow@2x.png | Bin 0 -> 4624 bytes .../sankoBadgeNoShadow@3x.png | Bin 0 -> 8996 bytes .../badges/scroll.imageset/Contents.json | 23 +++++ .../badges/scroll.imageset/scroll.png | Bin 0 -> 780 bytes .../badges/scroll.imageset/scroll@2x.png | Bin 0 -> 1017 bytes .../badges/scroll.imageset/scroll@3x.png | Bin 0 -> 1241 bytes .../badges/scrollBadge.imageset/Contents.json | 23 +++++ .../scrollBadge.imageset/scrollBadge.png | Bin 0 -> 2638 bytes .../scrollBadge.imageset/scrollBadge@2x.png | Bin 0 -> 6445 bytes .../scrollBadge.imageset/scrollBadge@3x.png | Bin 0 -> 11811 bytes .../scrollBadgeDark.imageset/Contents.json | 23 +++++ .../scrollBadgeDark.png | Bin 0 -> 2230 bytes .../scrollBadgeDark@2x.png | Bin 0 -> 4883 bytes .../scrollBadgeDark@3x.png | Bin 0 -> 9650 bytes .../scrollBadgeLarge.imageset/Contents.json | 23 +++++ .../scrollBadgeLarge.png | Bin 0 -> 4307 bytes .../scrollBadgeLarge@2x.png | Bin 0 -> 10851 bytes .../scrollBadgeLarge@3x.png | Bin 0 -> 19748 bytes .../Contents.json | 23 +++++ .../scrollBadgeLargeDark.png | Bin 0 -> 3394 bytes .../scrollBadgeLargeDark@2x.png | Bin 0 -> 8912 bytes .../scrollBadgeLargeDark@3x.png | Bin 0 -> 16107 bytes .../Contents.json | 23 +++++ .../scrollBadgeNoShadow.png | Bin 0 -> 842 bytes .../scrollBadgeNoShadow@2x.png | Bin 0 -> 1111 bytes .../scrollBadgeNoShadow@3x.png | Bin 0 -> 1359 bytes .../badges/zkSyncBadge.imageset/Contents.json | 23 +++++ .../zkSyncBadge.imageset/zkSyncBadge.png | Bin 0 -> 2594 bytes .../zkSyncBadge.imageset/zkSyncBadge@2x.png | Bin 0 -> 6529 bytes .../zkSyncBadge.imageset/zkSyncBadge@3x.png | Bin 0 -> 12002 bytes .../badges/zksync.imageset/Contents.json | 23 +++++ .../badges/zksync.imageset/zksync.png | Bin 0 -> 964 bytes .../badges/zksync.imageset/zksync@2x.png | Bin 0 -> 1859 bytes .../badges/zksync.imageset/zksync@3x.png | Bin 0 -> 3166 bytes .../zksyncBadgeDark.imageset/Contents.json | 23 +++++ .../zksyncBadgeDark.png | Bin 0 -> 1885 bytes .../zksyncBadgeDark@2x.png | Bin 0 -> 4649 bytes .../zksyncBadgeDark@3x.png | Bin 0 -> 8610 bytes .../zksyncBadgeLarge.imageset/Contents.json | 23 +++++ .../zksyncBadgeLarge.png | Bin 0 -> 4282 bytes .../zksyncBadgeLarge@2x.png | Bin 0 -> 11577 bytes .../zksyncBadgeLarge@3x.png | Bin 0 -> 21857 bytes .../Contents.json | 23 +++++ .../zksyncBadgeLargeDark.png | Bin 0 -> 3099 bytes .../zksyncBadgeLargeDark@2x.png | Bin 0 -> 8299 bytes .../zksyncBadgeLargeDark@3x.png | Bin 0 -> 15660 bytes .../Contents.json | 23 +++++ .../zksyncBadgeNoShadow.png | Bin 0 -> 787 bytes .../zksyncBadgeNoShadow@2x.png | Bin 0 -> 1222 bytes .../zksyncBadgeNoShadow@3x.png | Bin 0 -> 1753 bytes .../components/AnimatedChainImage.android.tsx | 24 ++--- .../components/AnimatedChainImage.ios.tsx | 24 ++--- src/assets/badges/gnosis.png | Bin 0 -> 893 bytes src/assets/badges/gnosis@2x.png | Bin 0 -> 1256 bytes src/assets/badges/gnosis@3x.png | Bin 0 -> 1608 bytes src/assets/badges/gnosisBadge.png | Bin 0 -> 2633 bytes src/assets/badges/gnosisBadge@2x.png | Bin 0 -> 6487 bytes src/assets/badges/gnosisBadge@3x.png | Bin 0 -> 11678 bytes src/assets/badges/gnosisBadgeDark.png | Bin 0 -> 2273 bytes src/assets/badges/gnosisBadgeDark@2x.png | Bin 0 -> 4976 bytes src/assets/badges/gnosisBadgeDark@3x.png | Bin 0 -> 9704 bytes src/assets/badges/gnosisBadgeLarge.png | Bin 0 -> 4265 bytes src/assets/badges/gnosisBadgeLarge@2x.png | Bin 0 -> 10887 bytes src/assets/badges/gnosisBadgeLarge@3x.png | Bin 0 -> 19931 bytes src/assets/badges/gnosisBadgeLargeDark.png | Bin 0 -> 4307 bytes src/assets/badges/gnosisBadgeLargeDark@2x.png | Bin 0 -> 11111 bytes src/assets/badges/gnosisBadgeLargeDark@3x.png | Bin 0 -> 20766 bytes src/assets/badges/gnosisBadgeNoShadow.png | Bin 0 -> 903 bytes src/assets/badges/gnosisBadgeNoShadow@2x.png | Bin 0 -> 1251 bytes src/assets/badges/gnosisBadgeNoShadow@3x.png | Bin 0 -> 1537 bytes src/assets/badges/gravity.png | Bin 0 -> 2558 bytes src/assets/badges/gravity@2x.png | Bin 0 -> 6193 bytes src/assets/badges/gravity@3x.png | Bin 0 -> 11153 bytes src/assets/badges/gravityBadge.png | Bin 0 -> 3223 bytes src/assets/badges/gravityBadge@2x.png | Bin 0 -> 8506 bytes src/assets/badges/gravityBadge@3x.png | Bin 0 -> 15564 bytes src/assets/badges/gravityBadgeDark.png | Bin 0 -> 2659 bytes src/assets/badges/gravityBadgeDark@2x.png | Bin 0 -> 6941 bytes src/assets/badges/gravityBadgeDark@3x.png | Bin 0 -> 12712 bytes src/assets/badges/gravityBadgeLarge.png | Bin 0 -> 6093 bytes src/assets/badges/gravityBadgeLarge@2x.png | Bin 0 -> 16175 bytes src/assets/badges/gravityBadgeLarge@3x.png | Bin 0 -> 30168 bytes src/assets/badges/gravityBadgeLargeDark.png | Bin 0 -> 5169 bytes .../badges/gravityBadgeLargeDark@2x.png | Bin 0 -> 13621 bytes .../badges/gravityBadgeLargeDark@3x.png | Bin 0 -> 25219 bytes src/assets/badges/gravityBadgeNoShadow.png | Bin 0 -> 1348 bytes src/assets/badges/gravityBadgeNoShadow@2x.png | Bin 0 -> 2754 bytes src/assets/badges/gravityBadgeNoShadow@3x.png | Bin 0 -> 4479 bytes src/assets/badges/linea.png | Bin 0 -> 859 bytes src/assets/badges/linea@2x.png | Bin 0 -> 1781 bytes src/assets/badges/linea@3x.png | Bin 0 -> 3030 bytes src/assets/badges/lineaBadge.png | Bin 0 -> 2554 bytes src/assets/badges/lineaBadge@2x.png | Bin 0 -> 6485 bytes src/assets/badges/lineaBadge@3x.png | Bin 0 -> 11951 bytes src/assets/badges/lineaBadgeDark.png | Bin 0 -> 1862 bytes src/assets/badges/lineaBadgeDark@2x.png | Bin 0 -> 4617 bytes src/assets/badges/lineaBadgeDark@3x.png | Bin 0 -> 8570 bytes src/assets/badges/lineaBadgeLarge.png | Bin 0 -> 4208 bytes src/assets/badges/lineaBadgeLarge@2x.png | Bin 0 -> 11464 bytes src/assets/badges/lineaBadgeLarge@3x.png | Bin 0 -> 21696 bytes src/assets/badges/lineaBadgeLargeDark.png | Bin 0 -> 3057 bytes src/assets/badges/lineaBadgeLargeDark@2x.png | Bin 0 -> 8225 bytes src/assets/badges/lineaBadgeLargeDark@3x.png | Bin 0 -> 15535 bytes src/assets/badges/lineaBadgeNoShadow.png | Bin 0 -> 769 bytes src/assets/badges/lineaBadgeNoShadow@2x.png | Bin 0 -> 1185 bytes src/assets/badges/lineaBadgeNoShadow@3x.png | Bin 0 -> 1723 bytes src/assets/badges/sankBadgeDark.png | Bin 0 -> 3059 bytes src/assets/badges/sankBadgeDark@2x.png | Bin 0 -> 8911 bytes src/assets/badges/sankBadgeDark@3x.png | Bin 0 -> 17787 bytes src/assets/badges/sanko.png | Bin 0 -> 3562 bytes src/assets/badges/sanko@2x.png | Bin 0 -> 11595 bytes src/assets/badges/sanko@3x.png | Bin 0 -> 23754 bytes src/assets/badges/sankoBadge.png | Bin 0 -> 3468 bytes src/assets/badges/sankoBadge@2x.png | Bin 0 -> 9973 bytes src/assets/badges/sankoBadge@3x.png | Bin 0 -> 19809 bytes src/assets/badges/sankoBadgeLarge.png | Bin 0 -> 7684 bytes src/assets/badges/sankoBadgeLarge@2x.png | Bin 0 -> 25056 bytes src/assets/badges/sankoBadgeLarge@3x.png | Bin 0 -> 51551 bytes src/assets/badges/sankoBadgeLargeDark.png | Bin 0 -> 7182 bytes src/assets/badges/sankoBadgeLargeDark@2x.png | Bin 0 -> 23183 bytes src/assets/badges/sankoBadgeLargeDark@3x.png | Bin 0 -> 47793 bytes src/assets/badges/sankoBadgeNoShadow.png | Bin 0 -> 1721 bytes src/assets/badges/sankoBadgeNoShadow@2x.png | Bin 0 -> 4624 bytes src/assets/badges/sankoBadgeNoShadow@3x.png | Bin 0 -> 8996 bytes src/assets/badges/scroll.png | Bin 0 -> 780 bytes src/assets/badges/scroll@2x.png | Bin 0 -> 1017 bytes src/assets/badges/scroll@3x.png | Bin 0 -> 1241 bytes src/assets/badges/scrollBadge.png | Bin 0 -> 2638 bytes src/assets/badges/scrollBadge@2x.png | Bin 0 -> 6445 bytes src/assets/badges/scrollBadge@3x.png | Bin 0 -> 11811 bytes src/assets/badges/scrollBadgeDark.png | Bin 0 -> 2230 bytes src/assets/badges/scrollBadgeDark@2x.png | Bin 0 -> 4883 bytes src/assets/badges/scrollBadgeDark@3x.png | Bin 0 -> 9650 bytes src/assets/badges/scrollBadgeLarge.png | Bin 0 -> 4307 bytes src/assets/badges/scrollBadgeLarge@2x.png | Bin 0 -> 10851 bytes src/assets/badges/scrollBadgeLarge@3x.png | Bin 0 -> 19748 bytes src/assets/badges/scrollBadgeLargeDark.png | Bin 0 -> 3394 bytes src/assets/badges/scrollBadgeLargeDark@2x.png | Bin 0 -> 8912 bytes src/assets/badges/scrollBadgeLargeDark@3x.png | Bin 0 -> 16107 bytes src/assets/badges/scrollBadgeNoShadow.png | Bin 0 -> 842 bytes src/assets/badges/scrollBadgeNoShadow@2x.png | Bin 0 -> 1111 bytes src/assets/badges/scrollBadgeNoShadow@3x.png | Bin 0 -> 1359 bytes src/assets/badges/zkSyncBadge.png | Bin 0 -> 2594 bytes src/assets/badges/zkSyncBadge@2x.png | Bin 0 -> 6529 bytes src/assets/badges/zkSyncBadge@3x.png | Bin 0 -> 12002 bytes src/assets/badges/zksync.png | Bin 0 -> 964 bytes src/assets/badges/zksync@2x.png | Bin 0 -> 1859 bytes src/assets/badges/zksync@3x.png | Bin 0 -> 3166 bytes src/assets/badges/zksyncBadgeDark.png | Bin 0 -> 1885 bytes src/assets/badges/zksyncBadgeDark@2x.png | Bin 0 -> 4649 bytes src/assets/badges/zksyncBadgeDark@3x.png | Bin 0 -> 8610 bytes src/assets/badges/zksyncBadgeLarge.png | Bin 0 -> 4282 bytes src/assets/badges/zksyncBadgeLarge@2x.png | Bin 0 -> 11577 bytes src/assets/badges/zksyncBadgeLarge@3x.png | Bin 0 -> 21857 bytes src/assets/badges/zksyncBadgeLargeDark.png | Bin 0 -> 3099 bytes src/assets/badges/zksyncBadgeLargeDark@2x.png | Bin 0 -> 8299 bytes src/assets/badges/zksyncBadgeLargeDark@3x.png | Bin 0 -> 15660 bytes src/assets/badges/zksyncBadgeNoShadow.png | Bin 0 -> 787 bytes src/assets/badges/zksyncBadgeNoShadow@2x.png | Bin 0 -> 1222 bytes src/assets/badges/zksyncBadgeNoShadow@3x.png | Bin 0 -> 1753 bytes .../FastComponents/FastCoinBadge.tsx | 71 +++++++------ src/components/coin-icon/ChainBadge.js | 95 +++++++++--------- src/components/coin-icon/ChainImage.tsx | 36 +++---- 257 files changed, 952 insertions(+), 126 deletions(-) create mode 100644 ios/Images.xcassets/badges/gnosis.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gnosis.imageset/gnosis.png create mode 100644 ios/Images.xcassets/badges/gnosis.imageset/gnosis@2x.png create mode 100644 ios/Images.xcassets/badges/gnosis.imageset/gnosis@3x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gnosisBadge.imageset/gnosisBadge.png create mode 100644 ios/Images.xcassets/badges/gnosisBadge.imageset/gnosisBadge@2x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadge.imageset/gnosisBadge@3x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gnosisBadgeDark.imageset/gnosisBadgeDark.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeDark.imageset/gnosisBadgeDark@2x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeDark.imageset/gnosisBadgeDark@3x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/gnosisBadgeLarge.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/gnosisBadgeLarge@2x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/gnosisBadgeLarge@3x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeLargeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gnosisBadgeLargeDark.imageset/gnosisBadgeLargeDark.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeLargeDark.imageset/gnosisBadgeLargeDark@2x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeLargeDark.imageset/gnosisBadgeLargeDark@3x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/gnosisBadgeNoShadow.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/gnosisBadgeNoShadow@2x.png create mode 100644 ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/gnosisBadgeNoShadow@3x.png create mode 100644 ios/Images.xcassets/badges/gravity.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gravity.imageset/gravity.png create mode 100644 ios/Images.xcassets/badges/gravity.imageset/gravity@2x.png create mode 100644 ios/Images.xcassets/badges/gravity.imageset/gravity@3x.png create mode 100644 ios/Images.xcassets/badges/gravityBadge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gravityBadge.imageset/gravityBadge.png create mode 100644 ios/Images.xcassets/badges/gravityBadge.imageset/gravityBadge@2x.png create mode 100644 ios/Images.xcassets/badges/gravityBadge.imageset/gravityBadge@3x.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gravityBadgeDark.imageset/gravityBadgeDark.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeDark.imageset/gravityBadgeDark@2x.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeDark.imageset/gravityBadgeDark@3x.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeLarge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gravityBadgeLarge.imageset/gravityBadgeLarge.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeLarge.imageset/gravityBadgeLarge@2x.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeLarge.imageset/gravityBadgeLarge@3x.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/gravityBadgeLargeDark.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/gravityBadgeLargeDark@2x.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/gravityBadgeLargeDark@3x.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeNoShadow.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/gravityBadgeNoShadow.imageset/gravityBadgeNoShadow.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeNoShadow.imageset/gravityBadgeNoShadow@2x.png create mode 100644 ios/Images.xcassets/badges/gravityBadgeNoShadow.imageset/gravityBadgeNoShadow@3x.png create mode 100644 ios/Images.xcassets/badges/linea.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/linea.imageset/linea.png create mode 100644 ios/Images.xcassets/badges/linea.imageset/linea@2x.png create mode 100644 ios/Images.xcassets/badges/linea.imageset/linea@3x.png create mode 100644 ios/Images.xcassets/badges/lineaBadge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/lineaBadge.imageset/lineaBadge.png create mode 100644 ios/Images.xcassets/badges/lineaBadge.imageset/lineaBadge@2x.png create mode 100644 ios/Images.xcassets/badges/lineaBadge.imageset/lineaBadge@3x.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/lineaBadgeDark.imageset/lineaBadgeDark.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeDark.imageset/lineaBadgeDark@2x.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeDark.imageset/lineaBadgeDark@3x.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeLarge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/lineaBadgeLarge.imageset/lineaBadgeLarge.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeLarge.imageset/lineaBadgeLarge@2x.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeLarge.imageset/lineaBadgeLarge@3x.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/lineaBadgeLargeDark.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/lineaBadgeLargeDark@2x.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/lineaBadgeLargeDark@3x.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/lineaBadgeNoShadow.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/lineaBadgeNoShadow@2x.png create mode 100644 ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/lineaBadgeNoShadow@3x.png create mode 100644 ios/Images.xcassets/badges/sankBadgeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/sankBadgeDark.imageset/sankBadgeDark.png create mode 100644 ios/Images.xcassets/badges/sankBadgeDark.imageset/sankBadgeDark@2x.png create mode 100644 ios/Images.xcassets/badges/sankBadgeDark.imageset/sankBadgeDark@3x.png create mode 100644 ios/Images.xcassets/badges/sanko.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/sanko.imageset/sanko.png create mode 100644 ios/Images.xcassets/badges/sanko.imageset/sanko@2x.png create mode 100644 ios/Images.xcassets/badges/sanko.imageset/sanko@3x.png create mode 100644 ios/Images.xcassets/badges/sankoBadge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/sankoBadge.imageset/sankoBadge.png create mode 100644 ios/Images.xcassets/badges/sankoBadge.imageset/sankoBadge@2x.png create mode 100644 ios/Images.xcassets/badges/sankoBadge.imageset/sankoBadge@3x.png create mode 100644 ios/Images.xcassets/badges/sankoBadgeLarge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/sankoBadgeLarge.imageset/sankoBadgeLarge.png create mode 100644 ios/Images.xcassets/badges/sankoBadgeLarge.imageset/sankoBadgeLarge@2x.png create mode 100644 ios/Images.xcassets/badges/sankoBadgeLarge.imageset/sankoBadgeLarge@3x.png create mode 100644 ios/Images.xcassets/badges/sankoBadgeLargeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/sankoBadgeLargeDark.imageset/sankoBadgeLargeDark.png create mode 100644 ios/Images.xcassets/badges/sankoBadgeLargeDark.imageset/sankoBadgeLargeDark@2x.png create mode 100644 ios/Images.xcassets/badges/sankoBadgeLargeDark.imageset/sankoBadgeLargeDark@3x.png create mode 100644 ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/sankoBadgeNoShadow.png create mode 100644 ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/sankoBadgeNoShadow@2x.png create mode 100644 ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/sankoBadgeNoShadow@3x.png create mode 100644 ios/Images.xcassets/badges/scroll.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/scroll.imageset/scroll.png create mode 100644 ios/Images.xcassets/badges/scroll.imageset/scroll@2x.png create mode 100644 ios/Images.xcassets/badges/scroll.imageset/scroll@3x.png create mode 100644 ios/Images.xcassets/badges/scrollBadge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/scrollBadge.imageset/scrollBadge.png create mode 100644 ios/Images.xcassets/badges/scrollBadge.imageset/scrollBadge@2x.png create mode 100644 ios/Images.xcassets/badges/scrollBadge.imageset/scrollBadge@3x.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/scrollBadgeDark.imageset/scrollBadgeDark.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeDark.imageset/scrollBadgeDark@2x.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeDark.imageset/scrollBadgeDark@3x.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeLarge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/scrollBadgeLarge.imageset/scrollBadgeLarge.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeLarge.imageset/scrollBadgeLarge@2x.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeLarge.imageset/scrollBadgeLarge@3x.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/scrollBadgeLargeDark.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/scrollBadgeLargeDark@2x.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/scrollBadgeLargeDark@3x.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeNoShadow.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/scrollBadgeNoShadow.imageset/scrollBadgeNoShadow.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeNoShadow.imageset/scrollBadgeNoShadow@2x.png create mode 100644 ios/Images.xcassets/badges/scrollBadgeNoShadow.imageset/scrollBadgeNoShadow@3x.png create mode 100644 ios/Images.xcassets/badges/zkSyncBadge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/zkSyncBadge.imageset/zkSyncBadge.png create mode 100644 ios/Images.xcassets/badges/zkSyncBadge.imageset/zkSyncBadge@2x.png create mode 100644 ios/Images.xcassets/badges/zkSyncBadge.imageset/zkSyncBadge@3x.png create mode 100644 ios/Images.xcassets/badges/zksync.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/zksync.imageset/zksync.png create mode 100644 ios/Images.xcassets/badges/zksync.imageset/zksync@2x.png create mode 100644 ios/Images.xcassets/badges/zksync.imageset/zksync@3x.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/zksyncBadgeDark.imageset/zksyncBadgeDark.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeDark.imageset/zksyncBadgeDark@2x.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeDark.imageset/zksyncBadgeDark@3x.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/zksyncBadgeLarge.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/zksyncBadgeLarge@2x.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/zksyncBadgeLarge@3x.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/zksyncBadgeLargeDark.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/zksyncBadgeLargeDark@2x.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/zksyncBadgeLargeDark@3x.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeNoShadow.imageset/Contents.json create mode 100644 ios/Images.xcassets/badges/zksyncBadgeNoShadow.imageset/zksyncBadgeNoShadow.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeNoShadow.imageset/zksyncBadgeNoShadow@2x.png create mode 100644 ios/Images.xcassets/badges/zksyncBadgeNoShadow.imageset/zksyncBadgeNoShadow@3x.png create mode 100644 src/assets/badges/gnosis.png create mode 100644 src/assets/badges/gnosis@2x.png create mode 100644 src/assets/badges/gnosis@3x.png create mode 100644 src/assets/badges/gnosisBadge.png create mode 100644 src/assets/badges/gnosisBadge@2x.png create mode 100644 src/assets/badges/gnosisBadge@3x.png create mode 100644 src/assets/badges/gnosisBadgeDark.png create mode 100644 src/assets/badges/gnosisBadgeDark@2x.png create mode 100644 src/assets/badges/gnosisBadgeDark@3x.png create mode 100644 src/assets/badges/gnosisBadgeLarge.png create mode 100644 src/assets/badges/gnosisBadgeLarge@2x.png create mode 100644 src/assets/badges/gnosisBadgeLarge@3x.png create mode 100644 src/assets/badges/gnosisBadgeLargeDark.png create mode 100644 src/assets/badges/gnosisBadgeLargeDark@2x.png create mode 100644 src/assets/badges/gnosisBadgeLargeDark@3x.png create mode 100644 src/assets/badges/gnosisBadgeNoShadow.png create mode 100644 src/assets/badges/gnosisBadgeNoShadow@2x.png create mode 100644 src/assets/badges/gnosisBadgeNoShadow@3x.png create mode 100644 src/assets/badges/gravity.png create mode 100644 src/assets/badges/gravity@2x.png create mode 100644 src/assets/badges/gravity@3x.png create mode 100644 src/assets/badges/gravityBadge.png create mode 100644 src/assets/badges/gravityBadge@2x.png create mode 100644 src/assets/badges/gravityBadge@3x.png create mode 100644 src/assets/badges/gravityBadgeDark.png create mode 100644 src/assets/badges/gravityBadgeDark@2x.png create mode 100644 src/assets/badges/gravityBadgeDark@3x.png create mode 100644 src/assets/badges/gravityBadgeLarge.png create mode 100644 src/assets/badges/gravityBadgeLarge@2x.png create mode 100644 src/assets/badges/gravityBadgeLarge@3x.png create mode 100644 src/assets/badges/gravityBadgeLargeDark.png create mode 100644 src/assets/badges/gravityBadgeLargeDark@2x.png create mode 100644 src/assets/badges/gravityBadgeLargeDark@3x.png create mode 100644 src/assets/badges/gravityBadgeNoShadow.png create mode 100644 src/assets/badges/gravityBadgeNoShadow@2x.png create mode 100644 src/assets/badges/gravityBadgeNoShadow@3x.png create mode 100644 src/assets/badges/linea.png create mode 100644 src/assets/badges/linea@2x.png create mode 100644 src/assets/badges/linea@3x.png create mode 100644 src/assets/badges/lineaBadge.png create mode 100644 src/assets/badges/lineaBadge@2x.png create mode 100644 src/assets/badges/lineaBadge@3x.png create mode 100644 src/assets/badges/lineaBadgeDark.png create mode 100644 src/assets/badges/lineaBadgeDark@2x.png create mode 100644 src/assets/badges/lineaBadgeDark@3x.png create mode 100644 src/assets/badges/lineaBadgeLarge.png create mode 100644 src/assets/badges/lineaBadgeLarge@2x.png create mode 100644 src/assets/badges/lineaBadgeLarge@3x.png create mode 100644 src/assets/badges/lineaBadgeLargeDark.png create mode 100644 src/assets/badges/lineaBadgeLargeDark@2x.png create mode 100644 src/assets/badges/lineaBadgeLargeDark@3x.png create mode 100644 src/assets/badges/lineaBadgeNoShadow.png create mode 100644 src/assets/badges/lineaBadgeNoShadow@2x.png create mode 100644 src/assets/badges/lineaBadgeNoShadow@3x.png create mode 100644 src/assets/badges/sankBadgeDark.png create mode 100644 src/assets/badges/sankBadgeDark@2x.png create mode 100644 src/assets/badges/sankBadgeDark@3x.png create mode 100644 src/assets/badges/sanko.png create mode 100644 src/assets/badges/sanko@2x.png create mode 100644 src/assets/badges/sanko@3x.png create mode 100644 src/assets/badges/sankoBadge.png create mode 100644 src/assets/badges/sankoBadge@2x.png create mode 100644 src/assets/badges/sankoBadge@3x.png create mode 100644 src/assets/badges/sankoBadgeLarge.png create mode 100644 src/assets/badges/sankoBadgeLarge@2x.png create mode 100644 src/assets/badges/sankoBadgeLarge@3x.png create mode 100644 src/assets/badges/sankoBadgeLargeDark.png create mode 100644 src/assets/badges/sankoBadgeLargeDark@2x.png create mode 100644 src/assets/badges/sankoBadgeLargeDark@3x.png create mode 100644 src/assets/badges/sankoBadgeNoShadow.png create mode 100644 src/assets/badges/sankoBadgeNoShadow@2x.png create mode 100644 src/assets/badges/sankoBadgeNoShadow@3x.png create mode 100644 src/assets/badges/scroll.png create mode 100644 src/assets/badges/scroll@2x.png create mode 100644 src/assets/badges/scroll@3x.png create mode 100644 src/assets/badges/scrollBadge.png create mode 100644 src/assets/badges/scrollBadge@2x.png create mode 100644 src/assets/badges/scrollBadge@3x.png create mode 100644 src/assets/badges/scrollBadgeDark.png create mode 100644 src/assets/badges/scrollBadgeDark@2x.png create mode 100644 src/assets/badges/scrollBadgeDark@3x.png create mode 100644 src/assets/badges/scrollBadgeLarge.png create mode 100644 src/assets/badges/scrollBadgeLarge@2x.png create mode 100644 src/assets/badges/scrollBadgeLarge@3x.png create mode 100644 src/assets/badges/scrollBadgeLargeDark.png create mode 100644 src/assets/badges/scrollBadgeLargeDark@2x.png create mode 100644 src/assets/badges/scrollBadgeLargeDark@3x.png create mode 100644 src/assets/badges/scrollBadgeNoShadow.png create mode 100644 src/assets/badges/scrollBadgeNoShadow@2x.png create mode 100644 src/assets/badges/scrollBadgeNoShadow@3x.png create mode 100644 src/assets/badges/zkSyncBadge.png create mode 100644 src/assets/badges/zkSyncBadge@2x.png create mode 100644 src/assets/badges/zkSyncBadge@3x.png create mode 100644 src/assets/badges/zksync.png create mode 100644 src/assets/badges/zksync@2x.png create mode 100644 src/assets/badges/zksync@3x.png create mode 100644 src/assets/badges/zksyncBadgeDark.png create mode 100644 src/assets/badges/zksyncBadgeDark@2x.png create mode 100644 src/assets/badges/zksyncBadgeDark@3x.png create mode 100644 src/assets/badges/zksyncBadgeLarge.png create mode 100644 src/assets/badges/zksyncBadgeLarge@2x.png create mode 100644 src/assets/badges/zksyncBadgeLarge@3x.png create mode 100644 src/assets/badges/zksyncBadgeLargeDark.png create mode 100644 src/assets/badges/zksyncBadgeLargeDark@2x.png create mode 100644 src/assets/badges/zksyncBadgeLargeDark@3x.png create mode 100644 src/assets/badges/zksyncBadgeNoShadow.png create mode 100644 src/assets/badges/zksyncBadgeNoShadow@2x.png create mode 100644 src/assets/badges/zksyncBadgeNoShadow@3x.png diff --git a/ios/Images.xcassets/badges/gnosis.imageset/Contents.json b/ios/Images.xcassets/badges/gnosis.imageset/Contents.json new file mode 100644 index 00000000000..834dad265bf --- /dev/null +++ b/ios/Images.xcassets/badges/gnosis.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "gnosis.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gnosis@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gnosis@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/gnosis.imageset/gnosis.png b/ios/Images.xcassets/badges/gnosis.imageset/gnosis.png new file mode 100644 index 0000000000000000000000000000000000000000..afb08cb40e62e4b8b7b2921b2b25ed7846b84117 GIT binary patch literal 893 zcmV-@1A_dCP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGv%c}rtfbcJ|yhI!Q0$00#9bA@<3SWBz3rpC#SA4JE&z z<@<@6p{j;ve{aQQ%|&m<*IEIP_gU6EH+ib91&|G?SkmDiV4_DaT_B59KnDH(;ML@t z+>zwejVPj;?nzA4QtO%}{FNt^@FfbPzg*nFsIh!$Q+v0tpbOg69)({AU{481j^a3Ku31B0m=j0m51qo!T4BPWc#l741#bw+A4?|Ud0W!x z+x8NDJJXyOI~31ITC^6+D`Ml_yo}{7scX%Vd^`UEqUsFY TVpxbd00000NkvXXu0mjf9Cf8b literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosis.imageset/gnosis@2x.png b/ios/Images.xcassets/badges/gnosis.imageset/gnosis@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3a021929690d87ae8340ae4b7dce522a942ffb6b GIT binary patch literal 1256 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadge.imageset/gnosisBadge@2x.png b/ios/Images.xcassets/badges/gnosisBadge.imageset/gnosisBadge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1355360aca01a2cce89f68db40e577a910d25bb3 GIT binary patch literal 6487 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeDark.imageset/Contents.json b/ios/Images.xcassets/badges/gnosisBadgeDark.imageset/Contents.json new file mode 100644 index 00000000000..3e640c6e39e --- /dev/null +++ b/ios/Images.xcassets/badges/gnosisBadgeDark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "gnosisBadgeDark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gnosisBadgeDark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gnosisBadgeDark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/gnosisBadgeDark.imageset/gnosisBadgeDark.png b/ios/Images.xcassets/badges/gnosisBadgeDark.imageset/gnosisBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..cd7d26152c24b62fadbdba168a1c4d92eae15bec GIT binary patch literal 2273 zcmZuxc{r3^8y|ya7_*OU48}Uf$YAhlwUZ_L8Wl-d8ZWXdW0&k-#*{2sLL{!2 zd7#{YC7-CIfk0f|-un7h2HqF_FSv&jtpFt~FF5m&S(g>A+p@~$)xj$Wae`X1{>Tu2 zNPrgwXQ*PwTVUq-@yu>bF$2zmNt&Geu#`qDzL3QS65N2#Q*zO+rsML+Jxm5=i_Z5 zs4+`d)_^iAqyTKo_;r$9*q4j{^?pP*O;l(yE15}8;hT_?Q1v2DS57|c?~NT+E<9Ag zJe&6;$7zV)C$ZT?sr=BlOAyvo&+5jwHxq?yM^-ms-ui_*R$k<)m30gc?-XNeI9)q^ zf1snAm2w7H>A8Uk8e8{t^;MBOMlArUJD=HnaUlv>z1c^nF9}|!`wvh#96fHW{Gw~@ zaZVVI2p;4&Z?0iyJYV$vV_?T7pUQP`;*vtW`^P6zp^*%MPmxnw9s~f#Fu>c81&A+rVc45FH(DZ*Q-oqeG(s=MSP#C`2MrR#x`U zB8WgB;PH421|uviysH2fhr=O}NCW}_a6v)AJsk>#0vwG-!{KlN0Rg^002CAo1-ShD ze|`lx90GytrNCgY-K<>&aCZq-gUrjz3q-yiH{VKo(iYCw4)7XT2m8vxk7m_34^ zNTMi2tS0%-Pyi}p)d8yj6xp%=b;$t1X)2&qNoX1gt4_kGD_}H87)=sdMHU!4VKfq2 zd50sFWOfp1@))WdR!ttOMn)>jAomjyWCDULja88cmT)u@4%me%i&m8bUIYLi8V(ae zAti+|vSL8z|F_k>p8tm|FH8Wfu-v)R4uk>33B+;b81>B-^VzK2Jg z%vv7bZ+Ub-<7WEIBbMx?m_dy}N+M`Hv8Ao~!K{79^j7y*eA z#Pi`u!a^7kDN!t3m>@ExCL<@WK#`FatQVCaO3NzlSKd#N633x0MSWdaUY?zunVBAA z4-d9KZfR+1EGf##VP>Z!CB;UB1cmQgcu&x zuj0R!O=v4!~orK%ZTl`gHbonZRXtT@~3k;lE-^wKKad`i_zC# zEWXxKtzFyZ-Krvu`hiKMBE%RzC|Z)6%NIASm}yW~durMpX~jx<3RECktJ%OHUM<6> zF?)Jl#A8LV(ezg0pe^1l<#bhqXjAd3kW+cFbb>!5TAxmp^$@8eO5pyGF&9$Uz-QgmGx{Z-#uXO?~7L zO8Hqj()6?O+^3iA`|0}YHGKHP**ObJ$0E5jyG$@;{<=4dwacH~f(xZNdX+JKO%nK> z*m2qw36S!IJ3)ez4EZBLwo7YkE?xn2(DF(@<4VK(ddI^oNXd<%!54Ad@tpkRsN+f7 zCUf$7tHx^Glr@zOi?%VhxDruvPWV?LJ+GkPc+ScAN#3F<+m&LaI-|so6VdPoNgkpH zgc#NJI*{U;c2VjxT_K2P7FuyS3XQ!%@H2V^Wf@6FvkWKWm)q;Iwoap|TlK z#$rq7dpRz`*fbjz0nLX**fwZ$xfWWWUtYM7x_&>OrK#U8ESClL^exaGGyL%+nCy5Y zAZ*i+-rINP&XLVuJ;^f%OiC~Nl@GhK;^O@%eO^-5V_V z`JkCFXzB1{4GZcEw0L&91LMfouA+;fM^|dg-mU-WFO+yLiSQg!>+(4IVDuo!-}#vE zH<#2A{K_k%-%oyKjA}cd-rjgyv{zLUSF3gh9 zRs}z4_IoE6sY>4EcWUBBBvSj0N?j=ul^6VGAFTeY9yZoX4s7M=k|eqwYF$2amzh+8 zGaArPJDsRlo}O1}r^kw-NHS#MRxdiJD zo~foe>=P~|)w=-fV9pHeb}D(Rh#MZXxyq#psty5pu*SF;7PWBB-Dd{(o(-P(7GiJD zjJ86>p9&3)a$avQx|Mog{L6(d^|a9lFNr#eoPS#D<=QhwGhIfT9;0Xb8gOTZex7xt;?rJUKo_7cQ&No zo+En8TkEt2n_4(S!wzSMbpkm_a#yz}Nu>$g`LFY@`R-iICWaOU_w?Li{{sv^e@FlT literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeDark.imageset/gnosisBadgeDark@2x.png b/ios/Images.xcassets/badges/gnosisBadgeDark.imageset/gnosisBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..029c07d9ddb9c8695f7bb9b97034016ff7ec8b9f GIT binary patch literal 4976 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 SApiS2ZlG(V^X9UB)c*l?xMbb{ literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeDark.imageset/gnosisBadgeDark@3x.png b/ios/Images.xcassets/badges/gnosisBadgeDark.imageset/gnosisBadgeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8ed22937564e67116005270c58aa56db2fa823 GIT binary patch literal 9704 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/Contents.json b/ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/Contents.json new file mode 100644 index 00000000000..5f89716e5e9 --- /dev/null +++ b/ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "gnosisBadgeLarge.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gnosisBadgeLarge@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gnosisBadgeLarge@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/gnosisBadgeLarge.png b/ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/gnosisBadgeLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf5511d8f185b56dab28d3ede9c55f3d2524c6c GIT binary patch literal 4265 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/gnosisBadgeLarge@3x.png b/ios/Images.xcassets/badges/gnosisBadgeLarge.imageset/gnosisBadgeLarge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e787754b713ef21c4c90a61276fd04a99ff60389 GIT binary patch literal 19931 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 B8ae;~ literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeLargeDark.imageset/gnosisBadgeLargeDark@2x.png b/ios/Images.xcassets/badges/gnosisBadgeLargeDark.imageset/gnosisBadgeLargeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..79768e5d97e759e98d01596f6c25b30826a57a2d GIT binary patch literal 11111 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeLargeDark.imageset/gnosisBadgeLargeDark@3x.png b/ios/Images.xcassets/badges/gnosisBadgeLargeDark.imageset/gnosisBadgeLargeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4975e795ef0d105cd8ce6b4dc236cbe38847a66e GIT binary patch literal 20766 zcmV*MKx4m&P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGbFbqVaU%o$&OxB9Wxz}{4A_)|`BulHjEQj&mEHhumvd`+5C3V;@ zK8(vfrm1h_nmE>$clDX?qA=d&xaOh&lIA-?H1b#VaD|M*hG~V`$&@-%> zBQY@m=iFm$0Gg(Qi_@9Q)2#A$tWKTyK5Jvx7=S9E4l;hv!^3ia(cn|PdNY>#X4ewySfVa6I zU(TN&`8Q24@?!Wi_CEsb<9MwR+6X#`Ez1~zX-SXU=E-=kVL=W7a5RB7+ohEsi zk@KDe-|Fwm(`G|fMw5Hue9IunzKeFU+#6j zJMSw#r(02!0_zifQ&QR>tg{xuT1HqKP`l{gyp&8%JG6*H7;G0NY?2>9cG=fqJMa<8rH zJ_PRhwn;t+D~OAg8c}Uc-gZvfTYSyhpH+(yXYJP$<2}7+%esrGB=!*jzT;(vspPAq z+&F9XpZD2|U`xhcxl^y}_2IY1%NcBv%rOW~HaEE-K7im57%@m{{?!e+O@89WG)+%| z_YC_!V|dNk6o&3VU|{UEcDa&FxXB!Z z#YYHF$IJ1V8tKPzd^Syj^o#S}Lma|qzlaFIAPl~v*L=r1Q>1UmKDH*2GQbnVZpr>z zaeg;FLDJ6No#q1k-j!n=93gu`v%)v*M|N*e@l9A07?K+bSOg<}U>Jtyw(J{u9&pCu zL2yDyAVt!ul57<-hL}(4Kpolt_JABH0#Uy;+R_SvjGxr)&eq@QtY69b5M}wF?%+zf z_Zec4A+15H;mn$Z$IlF1$tjb09-f=f_H9|?YdB!{`|mGyzwcf+u0fnxVxI9A@Asb= zE}!`f-w7*)D57OD7_w>KL~GOr^_m>=MhqXYR(*c#vtCbd_1x)IgM0pjx5PRkC_O0; zi-$;-%A1oMTp>QTX7?nRMlG^71P2PM-R{K>Bz`|Y&9@l7oTit=*~20j+dvbBZiJUY z#77W_dO15p3)f<|uUA71A%e7^e^b}p$3LzA72Nmdw7v5=(5~M_m%%o`P?!WTDY9?2 z1+*MVC`fNYnt%`%KzcQNIeq!kuy2yE&$L=NiwE%0Md z?zTp(+qrJ*(tmz^!k@%{j_)ae9B{kYzYetZMklS2C7xd1U@ap^53&UrWCKM!d ztY&LSZ2R%w<7?Z|_B!_QIKEDJU*pHuz7erc53e;GLn!uHgA@nfp;n11f}_KB4)j;c zTc$Z~y?Xy_yF*f|t?Mct-hjMbwzgk^9uozFZT;O1znLLJ0TVw;d*0aa@Uy)+*2hEm zN-z_!X741g0l`1`<@-1K{)0CkT;pKBfAiinytVH=!?9`;7L4O5B!52N1MwjUgX+Ni zz|f7rnP-e+*R9bS9sb5tf~c&uO>!lUU%l2U@h(oRwnvGFl=<&`>vN|owEF(>5b!DI z2E(m;V6G2qt3&?`L6Yz$6r_S+WNgU(JtV${i8@TvTZn9;zY7|cYrpnpUG@M%;Ip%W zSO~WMo>>iyI!GgUG2CBPA?RQB&H}iNtoim+uW%vcD6o$I;f*aRapD-{z`~!InVFfH znVFfHnF$^6u1)yj}7aW~?pyVVF}teD^;{7zW_(edLJ|5d?*9^yEjoNuzsxW6zkQw{??=8)!%!^Rz}y4uZ;9}eb0mHr0zL#lSNW zj`6uXd~>g$6A>g70(u5v5vQ)e7P&?sN4aSeQ7PIqKXqpPo1#K4(BXpWU(@mLk5C=1 zI0`;^eOZZ(@qJ2S5dZ`qix~wTp-0FjEw~B!SfC}y*GJXs)i>KdA)(f*{;qRsd;3In zuAaD>UN66T=cN9wuj$|Py?kB&hGOVdzXK&fG5q}yE-Ad?z5C}W0s@6X=ngOjD1jdj ziSPzd5kQZ0++bys;;0Zu$pbWRADr=FikX-{NiW~`x;Qljttl9OjPV_^^hDCFrVav+ z@GCsQ@>UkQ5=IH7gcE_6;I2L#UhM7l-}dxw|D${R{qH!vxAEh>(cn+h-~VlS_WJ)P zorBjsgY@-{zo+kA+3Ww>nbF`YPmhM5rJt34?nM+sudY=i#R_VWR@X`c6|q-BYUwb0jOxTjxk{J@kRNXjt!LJ1l|J= z5fy<$sN~2KA)a1~P}86qt$Tyw!GU6-6VbLvuLxmnZTLHH!++PPP_5R@WBqGCNaUSN zDQHD%FxK7$Uy1;d1B?l58N(csS>kCdJz20{!^@ZN9X^HmF}a@ zj@CC_8Bm1vv3H1y;K}^jyH`p;en8^v^$$Ww_(;xljky7o@yN6-Y7nABOs<=%Bu9te zA14-oNoYk?#4-%uid3LEV~allHCiG|cvBuM{llvl$Ki;C{@`gm zy}dHb`sj1_Hg2H|dT1rqPG!h=H{gFPS z{@;^VQ0Rs?b48FxC{P4TnDwee*(n#GX5m`*z;D{aQFyj~Tc)f=r> z1QYxi^ONkt<3RxeeStWi*fm0$dZ1pMBE}b7>9FI;I|-63Ek23tYv|}R?e{-gpOMe2 zWL|fm`%tdH9RdA1mkA{xH<+v+6f#7Uy$B^JVWAMu7$CzEMk2M^!tZ4ch-6F&IhBR=Qj z4?gY7Kl|W|zv)Z;=-3iPxL*GOH&jOL8n{TJjU0ki|4m!FM6hZj`UVyMj2OzsE!GR%14Lwq(0Gp1P6=9A z{+Tm)4(hbGKJ4+LmUl9Fncm^enB*3Q=SSgp>|TO@@!_pgr$>X&Zj;<%-6fpA{Rh8{ zurK=Pcj(^0>Ul;AqtqrgV>Mjt{VM~PH3kOEB945pIl3cb$T8?g8; zvcpaTn>9_KJhAsQj2gjmfbToXL)e4m*8#$dg)E3?LO#y#Z(L3f`8yA5?f=0){L9@7 zd2_EIML3jKNS^UKbXO-VEOI6*)nw~S@NmdlHOUL$5~V|967&^4|6u*;D+pt4c%6HN z)gl+pHHM-{iX+4sr>il2fsls-i7n#$VAebo%KpyNk=0koBRqUwVfeJK`0Vy^eaDKR z&v2-aXz#{tDS?bfOp@^g?hSN+Nh6_-FqRsD7tA=389aj}T*O>qVMMtME?fV7nPF6V z_0fVpE)Z8)SOa<_u@&ivyMpk0q6@lHS^di=^#IT8_Fopua^6tqNm=}VpA_gXCnQIx zkYaT~p0dt$2T1g1f8{3*e*5=-S^w{o^ayh+feeR2BHg9#l>(YK@2zMUG z`|I!5Fy05zX&vKBa3$!%^IImSgkVxg{Y?GrwmCxc_e5T>yZ(Na5ChWqL>fFq__x+Olnb{hI6G_$Nl*oP}0u0rYEogfxjS21qJYiZAW_|%n8y1 z+Jp61%qpwDc5kqfLY|LVbhv|smte}mN>~?J%|#)kT=FP~^$^Nw=J}nccKRQyJC!Gh zc>$CX?={e?_ZUntO06}O!`MliY#k?B7l+*#)XEDqoA*-ha_Yu)!|ws@i3Kib%p|_V zl-{U<<#)kP-*a46UzSP=&`|ghsJX2^mR?vqLf_Sq;^7$<>J5?-=x*g%L5UtAM9w98 z`zkSZ>I6yvZ6X%RIIaYoqE683$1!Gef|ixv4AV32tO}F|;ymJgEItX6$NW+FNq9-T z=%ZEGQ!M|Oi1|T!jw|d@%-=lZ=|J#1RD|{+5lZm>3Wq9h@bDC#K&J@wYNu7l z33lFm5ATcO7`dVs!0-kQN3pl3M$8y%k)PyHLvJSLC-k9NU5EG(;g{eS7WYS5gDzWw zub8wH{=wSHnR~alnkKwooE~^n;rNHiO12REP8H!F&f(p@@%z59c^BI5#w#*76wP$h zLqX-8I)Uc}btF2k7z2-bVvG`C&0{fj%JPmD)!~Ls203mvTS*9goZ}N)7^(6`dIM+= zy}2Y^RCY;t^&rmN8*DX%I-6KWl3PKNN1Xzl@|4eNnk?&X8bhSI^W$Sr06Ik5sJt}e zWAFr2i(_K!l!@Bi1|by6#rm!40f*&SSnO~6wCcx|O!D~)+7~A(yt=Gd;g#@TEkhm? z{=s17!rsQ|B>eyGNeaJk`+S0Uq`ZMXQ)BjN!^HmYpM7}is+8a&1v6>|>p-NF<5_%` zY7B*ZOHNoZr8AQ&6qF%5aI10nlU>ChNlJB1>;`uNfqBB~F~1H8FG(+BNSw)u<(KgH z_BOujNeaL4b_C$HcI45Xq!Og@E#Gx4Jp*zAJsT2ZuNW&7+78Y45a@id2$f=ZVV*yF zNIfh5k4iC@0<;-l&f!g(23y!;?TdOfK0k3k!mrDV6l~jVgg-v72TQ<=9vx5wgdeCAvn54W|2JF=&Jc&IznT{aGdl$&{Cj3;d9-bt^@ancD&N!G)Ou5bI(6g$n2*iq$}Cri&{Gzbs5|)c>h? z`Aa3}T=+SE{`}VUGkR9XYm(xLt}>%bkP9dr^7;VDaG^urfO5^SrU@lr!bsC`Dz!;) zU51@&a={ga(So$$4AHEPJ|zwInUGO_`*-IsO>V%*3PI^{)W`sjb zr(@PCN+9Fso*;IT;Ry^;tfft7s1f;ah<|J%^fAWr`S3bS4UYVN8e4q%gbRPP{vP)q zOBUta{mru^zDp%|I)xuEaBlP3Sv@mTfEmyzeFR3Di-=I@B8!EwXyu#Abo2G5BprM$ zSbinII(v(1`5LJGK zLi81T4*`ZV(xxLK6rzuWpyC4XEi1(xL z`@hx5a4}C9lwEbI%v`T^l!xd6;xq@sA6b5n{fYZkRCyHo?B=aMy#A#UEL8Y`kDE{> z-dWFXbsP$z1Re@8kJMpNFOJ2n_sExffN9M#$Z#WqXKsHluaWcPtBSn2z3{Q+A@OBq zr^o(;KJa`l?ClBlDTV*+=;k>QuX5I(2f0*&MGC*&O`a+H=X!QRg^oEYH0~y296gnP zAIn}ULEs9#N-kgtvFD-1oG^Z_11$b9TuD%X(B);EA0a=){Z4Uaf*aLdU4mK~34MS) z&!>yi1tKtji2kValKzA70h;rx-j`CL`x0 zA=Z(w$EnjfzFSk~oC$qMd=2-f$CKt~=lahodexymXLg6@&y4z?cv$PdSS45rKPN{a zUl|QQKY9U_z}Gf;7a53<@_@oTK%6n^(*?aK#%m59jS7-w(lOUl#}-+j08=RsRQnwH zQT!JxzF__+fD)-0m&-Vlj+9_2{ES!0CBx6%yizIvwE-`X;RTp4#6IJDS#&&rA@O^Yqvi>Q7`lK0`s@6pwK;cs!b`u0zb%?xx>SPhg`a784M(bw4Cj94U+9@q7eEO}h9hN~;ur%G zJPhI#ks@JZRB8%j`R=f$BqBP#^ja7G6b60jxB^JSJ^VTGi0wHU`}eliR|Dri3g|o* zO388u+@T{W{4o@29|nO2J=j`xFF-;p1&Fx-9HEJR0lYv_CB)V&6Pcki;{G|4;GFR5 zIP25VA9;Ydz{00HFx1Mq{#gHn9K360*3CTDe-?_=O=8@=@MG!e`)v&}gwb1-vd`BNju`4D^UQW8CK(=l#(1LgiOS!cY7!XiH1h zBIidHLAd^eKC%$$dsbKW24C0){mEE=EL_LvQ1`;G&mO^nI6*>RZ#YXSx4HfcdoT50 z&@-kkP%6N!i&gui%^9VC*dbA736TfH4U{^BKeaGuh8fBiYm)`OMnR0OFCS};0^qJl ze%aUv=SPQ0&a(a}0M`HXz1tTO^Ygc6UFICFImZ4mhv--dx)=Uf(2CzT#|ZYBcc^Eo z&^F0I83suK^z21?loyC3xtI*c)k`QroGg6+RBu8*a|}?_k{tX=vcWHo18!sCOCCUD zF+BE{0+9T|_|(PpUXlXbkOKVsma!=VZF4`PV08l<+GA@@+0UY;uuCv#1)@r(1t1z@?YAUnt}Mlq}7- z#I!%_$J<&Y!k_MypnKtuVNe^yO&jfJC&GJ!ch@tP0+0*~0HJG)odYNUV-7;QLlan`>oF;MLtn$*>Y(-$6zm;Ajxb_fUe^IFAPiwSc*&#JR>yEWe0- zzrNItHzeWL8K=KO$q&FK{A+ncz4I%eKNkKB9@C!1`~>}3OZfll!{NnrN&j%hXz#WPfEVdX2|5%0_6pFRb|QEi z1$d+6@t@nheBPU7R1||D%4BImAm1`0c_SByJpwG-BW%xdff}rp3Ef{5z=}s(UYPXE zW*4Z>brT<8e$w;%+-{WsUwCzMO$sop2JqoDz_dhx5Z3OMpnKu>(;NkAuK>@A@R*Q4 zPlVUr@?JGRNJx+^yec-lL+hCt69byWjql^ z0lZTTC=@spDAbhz+0E4i@~cma$4cO9ETse_z|fzi1ZrYf3m$;@pY1N*_J{%y{=9I% zf2sY7pDZp-F44UbbT9lF%S~@Udj;T}+8$nfX7l=*jGn`x-Y4MO=p!#EB0(y`Dj8;E ziWB2zRDd%|P!wK7pb9*d0SX0zafi}a*q+J^7m zxe|0Q{N68-tGl#U02w)jL3-{Afg}UZ+bmHQY~TUN1H4(@>jBz55gKG5Y(^!hJ;lro z+XV@5Sa(YN5C7j*9r=Pg;(uwh$N!!HQvlPYyl{W3nF6#=>}aU(S_!%qe#V6^l%eSQj6j);|z&Fa!91}wKDChYQ$Pd$>`30;zVtk#?`v(Gz zy}!^OPynYtD<+g{Jiotjxv>JYZ`#(^I#h!0g&*tRyg9zT0_Yj*S+8tX^#CD3&!=d> zc|lZ!@d8CPLzG&8c>q%Y%?b(=r0aSDrg{KQTz?dsV0;1u6<{BG?%Q4>{efxEt^kVv zg97~DMoDmcFF@;Ghf2`B@Duv9xBd=1ZuwoMT}2rJA^Z%#nm+qyG%@y&$qyvJ&!$*VF0oR8JC_^7pzXZ?54vL| z=wA4nTmSYj=*dz6u9hAEdbE^4Mv;jTLJMP?Bn7cJK-c*|y!y7%Tw7#)Q#^kUU0@^{ z)BtLG0BrEBuv{g<@PBkbfT#dpNR~hfa55!Fx*QasJtWs`BnnCpA9zP2S2DuiK7Rr7 zMEK`N$y!x{|KUkIK&tw$jgcT9oK-0ROEtDnpa5*0cWQJ|H!3BdK(QDWJwZ)rxTXmP zD6}Xl4-i5iQ-GQp!1hD~%tQiA4d7)Zz$iffFSluiZ?O?lf`vDjOPC}u?Hld$!XK4Z zzuW)+w#&fzx#IpTL;*(qzoHOG#!ev+%up17dO(t+m8bwdFNlE)C;(wl+$)US&O?Ut zFM|F|@_?)n2H}r6z%YzI(T9mspVbwla<~*g9zYQ2iM{nJr$>XIYek03&~;IQj3T7I zgP(}P>OV*Lcoh6LN`UYm=I6 z`8QDWS5T;YNjX15i7!oiFJ48K%fULlae z-n!-(az!W+RD+onB;iK^h5-u2`b!b2DRK21Pa7jau@j7atxSP{3gIkJjX?1sST+EQ z93V8oR7tQ9pc9+xNdY$Ar{Un%w$=*7;z=J>c$=a_I*r(&`rHdpS}9k32&6-In2${dv^h8soL?{7*-o%H2?7+zyg-}; zXG!q%5Gc+7k{f(x_ga|)oPBuf>Y1Iv*8GIHRu8SUV3{yQONtV-?FhqjwN={o$XAOR zz?u8QJEaHMx>70t%`uEhk!+9yCQ z|2+wo7l`}6V1lyyixKE?{=X}LE&&)+IlzhSo7d81{f9+BbeZ9~AQr_$^oub3b0ib!+chdasXebxBdSsy{w^WX*X2DFO0_SR<%B;|Tq_kl7Jn&G7u-bm+x& zCMeDDB*BGIq2m;2PlCw-$`EKLg+Nk(y}_5a7>(H7X|Dtb|B*VG1eo(>XSZ)w3UI&j z08WQcdn}z{B*AQxBnggV)0q^9QFaKF@V)7__^1E{vs5^8EBfI^g|<8}i;Q@pKsX$^L;QddP>E5uPbP1%uii0C+$;jsl4m>oBOSMA{AZ zBBZ!XLF|Yt!O<6fP9`7uzj~%p02#R#0tyrhVR!(cK)|4&KsF;N@PXo(MC%18CairU zHmECxDS$CSl>=D#qeC4)3ZOSF1)vVVFkIyT%mQT^gt#F>26Q>Pq~lV6QU9;bvM7I< zdccuaf}=0|szT@De<^@MTp2kjfI=Y1a3}yU=y9JC7s+raKv@G|b&?IrEn+cD0*}x) z-4hmOf^rH^f#z>{CwyKUKzun3WM+fc7C>eK2nH0y@J2FHlQ|W*LS&fZ{t(f~EbC;i^2q6kslT8QEn#> zP_jYOvtAveK+Fen4{*^pNUl$YKxG|ZoOjZY#m1PpGAYFV^)s(>TVcRb8HXrEsBMTL z2e5I7RDz=ia5^-#0N9|qq~qzbRv&Dx69#pR1}#qu^rtr({8epK!v95KEmGVF89Tx%C=>;_?8~sLk?3z)AwjYN za)r7SSqE8(G7(NO)G{EC>tSA<$J0DI1h*_Fdo2%LYXSTUiXP{CwU09{(T zJSo5jWRl^h)C(-Fzn+~8nV#i|M1weCJfPFJsR5V*Fc!rIV-W(yUI6z1kTXesq3%o# zdm;oHU!y{Z5Jw`60(eslNwAcFWQCpps=;)H#mR8g0-!@k0d!f9@_>7{Hb{n#lowc9 z|9_I6>jv?^Jb<39JpJm+yA;7fGfY(lh6r~(FhQs72=H~Ok6=)8*T`>+3X$8Rge&om zFqUIr{TYtMW^ac=Gikd7lk*Q;u9H5(LKw2ens5~SWx5@97tAVK5-FKBVzsQ(|A zh|m$S{-Z=^PtWXFdUk|AGHRs)5dUx4k_`F)25XuKQE`B-TLMfGjPd9|pcKI<&Kh%B zC-Q*ozdRzO{}~TJ2&9AXvmKJ%U?jq9herW4AC&b-h4KI&j~=GO5e7kt(B+kh@ZA^t zc!5sq0?Q++cq8jC1<R%-e4@0ro7Yvy*o<>_@ z{D1&e%20(ugg_n!A^cQ?Jq(fp5C(}7AuoUezzG5ltt!G59EukxFLi(TL0t3^q)NZ0 zIX|5AJU>X*Uqqv7`WSfGB_|2Y_@LbAW0N) zQ&<1ylVH9O-G{@VXd5f*VdYT`MgcYhCx{V=QUI?9P!aY-m@o)9R2C&!kK_dgf9)v^ zg_fbuXz)v=p;G)W>+j(YU0`u0sKx)*1{s!PtUexzm`+5aAmad7G520 zIP`XT79aZjzw|8M;=B|<=udz@eHM@s;J7E4d7ut|#x0TJ0kI_#^e3)KB?o{DG$X{1 z!e94IlQTl82+R6MRwxSKVGtpZ@&KO@aUyJr_vV|fdYSOG9ckkT>(ro;|S2?VvI=$6yf(mm>F)J z>HPrHk^^4x1UhIIV-l$dt2dZorO=|KwO$V(55NoPL(f8k6f;s3lPeWF6a_f7)4xeV z+-*LvjQdG^&)x6eB>9yB$aCx2F$F>jaKW13fj=GpkKvCLKp_wXFr7FG1ri*_S%~Gd zTsAuyI&!C-4&k)`4kM`}8bou<=9m+tVn*x{7U@X}pbMZLKp0du$bbgzR7Ejr0#brx zIc~1(ZM-F+&_b%j%fsfFZ0NJHH+)My6Rf`qn9!fk8T=^)0R4&d=c1Yf7up~Re!Y>F)B^&wwIoPg#Y}5!7yU~@c&Et1Mz>T{`xT7xFB0c=nq|B zB)~wRP#_}yuM_1t-xS|)M52#Lp&p>=yhZ)6+}fSN0{v(gO0X<;N%%K@?A*PLTLLFktd#I8UnBPS;uk}(d^z^2EyRHSK=P~52mGJV zhsAi4vw(^?65WM+W_X`dfG{etdPURV1vwg2SQu11>JL~Y4?qEIR*-Xp!qU8?1X`$e za-0l%P2iXip$AniaCU$FfrwX&SAwPR$GATktxY`xkNutdPx~XwFnkiUgr6Q@gdh5I zY=H6NS7E~M!?0|TOKs>AA<=AKaQ**mIe`_#3LBNE;~v19WJ=9m?^QJcV~0jaRF*=Q z#_CkXk??~QU-rs`_{F}I;M~1ix6bSi-l~o()MD@LGVI9+|C#;4TTA!}eW?6m{lWfO zjP2Z?i2eY7N&z%b4f=B&fngdgjFeq8vX z@rC49(5Hl-`9BoD!2Vf^?Zq$HpE8z&Kfs^NpaT7&00#DtTt+^dD?xT7%B)d|MlRB^ zt&!F7Q7OQoC_tPTM;P>o8WAYcYLbxxC~;zcuq=u$R`8lE&1%X8bn&VVm!Z&TeKRFw zpX?8736Zv6n-q`k_*A-U-Fd|QqxE;;f86_9L7$QOz!-FdUq%z_@8M5*d`fx5{&fP| z^H5Oev@l4=yKaC((MrM~mS^h&#F~JQPWQ2iC_vrz7)OLOV@4OQh6`CBJqRUZXZMD; zd!vmnm}gT972`M13h!K-X;yaopRYSUmF`-&zl;yDzk0YCeMsZGBR|plAD>u<>aoAC zLUILocaR^q{Ez7m4R(Rm{yC>55f(-8`K7!OXNc1V5k{HIO`{;D25gRIA!;<~*Bze@EUJsu1OzE{H32WStK@GJQx_Gj`#WPZ~8PVpV$k| zv%FW^e0yZ<5-Ufi*NjZr3}Fy;0g~ZW%LTkTJmCc%k`Ui16Jk9Gieo~Bc)-ehDxMFvH8s=Jk;S%L6I(JMU*X8thvmaZ>neX<14hu_A=7Zd>D z2m4p!6-M^m-2*_-WS1Sn-LSqjRq&^}420i9A;n}~6Y$B=49yC2gS;|~7g!6sgc+a< zM@Vk9DvnhN@#E&(5|Tj}d> z*Fy>3fE3{$9)73TKke<^eA_b!e+n%jyQ$*q&F+jlId2=_6}D3Kb?fg{UuX}H8{f}W z$*=Q%l>A2SKl!HZu-0*T&7T>)0Gw&opH?$>J-8z;jIl)$1t1gx67@}znjkF&h`9iv z5Oo2(0Bw`%8iOq=1<-*pDtE1X;ADD$dXOi!`*%}b@Dn`b*Rmq~#b5co!w5d~hM(x| zZoHB#`<8^?A4O>7YJnR zUkM9dX3PZ2w2IX!gfAPT_mUE{D}X!zh)`X1xClzXDkVC`G#^HnCd;8v2vo>x1F%JX zlH4ktV{nCbuH8I!S4wc>wjOA2zkfFkYyCR%f;o?t;c4soQ$475-cZNmecg@j=;Tf% z{PLnQB)Utgy|Lisp^p!|^`#ejmL$G}KC=Fr8wKazpwBS+u)z9HqCc|!AU+soQ-%oT z&)f~rln$Zee~x>ES*3~+)XfjoQC)ygi0W`$r$lj#d_eBhYXdCRP(ln@4o^_gByJDg z6UYlxO0ao14QzdT#kg%&jLO0)wtgCfUJLtLZm|Cwy>us~@avw^(Vgk;;QAb^gr9;J zkmqFFf18T$b(qL&N5vp(?vunrUgeUas$wefyY1iU}93vXuOpsqnC zE+F$+EMb!*m0_nxkmyMBhq{E}nW|xC%n?$Y2r8sYbX16ZK-NYVuaY~RV-xwnT~h)T z$sP`GD<>$?p>27BjqQ{dd=K8Btun|nEE+}y#?FZ7^1gRehvcVk<^uN}?0BMHCa ze!?E`e(&>T)<2<-6o9y&#FwRaSbz5Z#&$=re-hs!z@B0o6ZrJw0l+qNeu|KIHGr_Vk@_^Yr-CkVeK zy@Tsf_#wNU4s1^_e-*th+Qt{3_#D?BF<)w8;)Ah1o%u;VT6pMFBixz4=f|SB(AO6k ziit2t$6(P?5n%D@)staz0apU$1I`vj33RE1LY@>eRT^j%PjHO6qUiyW6O>iVQOF6T z1bgc{=>dOao3JR;q%YxBe6Bn~!Ym6eQl5_ftbfzd_sFZXwC)+f-&_AEeP#*241wld3=vHb`^Vw8 zlcD(xYoFZ{;IAD6VtNN6 zJX#jY?pK8}CC0LJ8uSR%Q7S{$%}Ga_7SDQywm-x=rl#k|A^0Q=t#@K5Ivw2iViMKNdBOFEQ+y z)#BT9M0!3f;+PV|WH?rbUw5x?LGSP*y0ouW5>jBHP#CHkMyY6^7CXk26k9lS%s4|% zna~5*gGUJjlP2tYN0w3h$rAVFi<7ndr$<@nvG{3X!$)h`h=jkFgde1*3 zF%{#-2vL5qZ#vuT{4(K(`rz^vEqoCT zc7yHk#bLC?wJq*oB189Hf#?Omc4N-~Xn+)e{bHxAKt|sHJ;ZU*o>p!?LWb_sMfPHC zI3)MJ;pJr>H&NrUk>A#sQzTW%!6xKT@H1^432dVyy^^>bT&O4>(Z{A`_z&>+*p}lK>Tpj8UNrv{1SdfDCynC518+ z0rH$&y?8Au@kD4Q-soz>g*3jN!Z>wS=ld5R`!o&Z9BE}CiHr5Qr6?i z;_E$2=oQ)#>tpqm10npn1Cm{Zi-bJ_6UwmX^Wou>LjU_+NR`YPvJ?Jq2M) z_^S_@)%sf6U6LzpwXjeCLLgvph=V z6~ZC>3U^N4sS;iI{Q9hfJkjcd_9&NPryj6(LU)0P8Jx9+X%^xr&vPpK3ud;RYl zdkR_Ve<~rKX3d4v=u}W;|JQrF{hyYnk+5s-rUYIG<>UA3{hZiZ-$C%@xxBCit%1s} zY9k)D9XUj$K(4U>hzqm>dwu8=NJ`G6?4_1yTO(o5hKPfDS`qab@56Gvay;qQE}{_Wg@&GKiIN|sJ3@HW1UG`e!`zTe`kAGel5;;{~U6W@6Q!SjGYyS!AyD1ZO=jX`#7g8 zzPs@6g?;}Cb_&5QQ3AorD3IA8As*OXuu)zh=xq`_fiX(A&kKxaOrT<{d9K$j>L2>X zUw<Uxqst>i;LxK4n>phdVvz~z6%kzc{SR|q6(qvl7TvRt!Rfz*;^6l8 zB9Tz8=E=;_tutj*&*oY(p(|ce>FK&JELf%hV2xruDiaMe+eZsW~$r;P4tuzSw`9|(wpLj{?8M28}*QiM>UUabx+gKZMh zqh^Vt1OX+`K0O2D!~`zl&L1#;$S6Y6q}@NHotigzO^YrT(jHQEgY*;KE6Gs?)nwU~ zrbxkip-B}$H&7=u=BhAGpiDA3!6hiCbh_yNa68|t&;Re*9css?mIpY=L_Wl19`^tTS~TMT zk$H19Gzg*qyaA{WuoB$ma^2EsmvHacszI8r6G)SO=kI@f@qhPib8+XCfH&w7OF?qB z9LN+!30~YMp(sNXLBQO~ps1E9G|CV@eiPn1@=Q7Kc2uSzgCloe0v~+gp2yd@*%m)S zpYPZ3N`8*s++cT47LG;mS^aKl?ltCLyBHMfOjv%`ndWaWR~iOA-Q{M-k?|Q>ADn-* zJ1jJ3py>CJQamL1N8JA)NbX$hVOGcwX{yKlu7D14ld8qDMliEO<_N+?)e0yAZxA=0 z;5bTfEt>tY6u|}EMT@3Ku!sviq71Aq&aJwvum<>fz=G#JaRpD3_d{t2dp?&IWfVsd zE4@vGJ^}of1h|)dNdnx^olv}9TE*g{Jh;9r56hq5T?|Qnmx0#i+2DrnGg95=Am9y9 z-RAsSoR|Gl3@6mDSk=xCCEnv&R>4ecRh663qZP7B4+5tq5pQXN!WYV4(<B~{UR33V67I{hf6qzK zTiAipy>}P-mzB;W_$s;A?_GB1p4touKf#}TUq|Q55$xLJW{tT#zap1l*M)ZO^8%K? z)1B=B$OjtjIavFSghQ*p-u=JxeTp+6nZn=wLK^32_3RZ|y<}INV69mwtBW_rszt-~ zcRKX>TC?IxRz)-Q0_jo#ax5W5u#h(aVjxiNU^x&cgd#-=C`33oWe7EKCNNDAiZG)t z+t>d87I?tzYf38$+JYaUC-}I26g)A|+pIpyL-HIL@XOjjsw^Jkozld2a9z*r$P%Yf8wd?mZ>AJ{7 zZ=9R$)anIO5h4&$rV$W|U@vK^$!QAftkE~hD`Z0&&k(T8x=?wEMhmqzWXKFITI2Je zH@;TWoX|CyoqVtPo>_f@AEb{*QOnwruU@LUX=~^dr|ND5f8DLV#DB?7tdw^O~&X(9e#ULgrY};PWDJmfrprsi2!@%J)HgTg72m_ zK;S83z8975uHptf8wJAs%s?LkXfe!?I6>Tl@p*~PBj zCq))wLm_TiBy=gl8c>X!rx3i>=V0A=p|mUz`g|WRtAZQF#qqy+ z&*wMKSJaxh{aF6|j`00%XHLK?#c7R+C02cfk-mNj4I75};=)X}_+<3LbIV`@^X7}<4azl4m zeUv8#B*Nc4J;8Q=zf6y=PL${MCbzN8x%PUNT$~B<6zE54R?iv>oPF_==ShX8BE0S* zt=^$kbZCxN_NIwIhDfS3dxv_!=2b6I(V{tV2Gc8K>1(WOge^2fVNLKXfKDrMQ&-o)f^D!F_obc$pmZM&-6?P6Yq|??NB%)~(AKSyaspdTv*iCuqT! z-zWI2KFi-Zeo7$KS-WG)1Ki_5LO(N#)6$=hI6lAdpRG*2eB-CzLp-Rd=Fxm=J%ABcXK6azyoSzYvKR#KmPPapxc)J8>6FBo2{&*yGoM{x+f96k_wKaXjx0LKq3 ztLl{{@uEd}YJPWFa&`sF-)#*M_L<}F?2hMk-qJi3;)HU42wtG^KsG2K@Y{G`HqG^p zA+yCi0bG?J9>HW;DS`maC4K7~w?8Oa)bRn>QjHqLS|)v(>;Hb~Y2J1lF&@C4e zgqToI)W=<(%eq(g1_bRn^Sz{3N97jHk;e}t0bEKldH%X*cTD3=!4G8N6uI#Ib*DWY z?5;7`(tLk2;IgJN%vOizPIo?kZQy~LElIdcRYvf`(A?XDh2TY zW#~$>o)=!BZ?Oqfmv1!brVNBpiV+pLDahSp5ad!8oZabtiq)ALU&GfHvvfAc{ab#9 zzJ(p~a|hYZ+}Ry-y8*5rbgg zDA0V5OBGbL0<2oQV&_ocrbM=!^+Fx?6|#*m!jYlct7);*xC)Pv-mc)&EfS` z4Q&%|;qQn0XZKX-BeMACUf^-8-Qv>L`cXYrENO)R*2mTfv&I3Jjkj{;yg^zicmv7+ z1jg<5pdl=$;JJlRM#(7v)u#PAz`mc}EBH9i1l|yeQx*qgxMXt(|EiSm%kLZEdR9nM_rw=Kp3s|@ zmc}ITg4@pJr;(5mSa+)9cVkD7-`m{N4=nx;)1wFT_0jh6qXxH+fc89|9(|;IecHvh zX`w)eC_vGoN|)Lze>-`EU}lWaqSc+I8;_8)g-ZZU87Kz&A&v;plL-xHUN_C^_kBJP zs}TBpFT27OnxkWL(jC7GRHrR}Pi?iQ^*WHg9$7vMl=m6GnI1pyB$)X4DZuWBc=X>U zEjsH!?Pj_FC)G>`-BdS?i412Ig0Z?ZWJ9&R?S@s5Okc5e3VEH;0mIV00^>iM6Fb7t`|R)9wWmq%tgol_y4 z0guquiS=rwki(YQm^FkvM_6#;v|8{Ci$atl@D8l+465f=i@YYp9h~O$exLL6&U`%u zrL1k?SDifHPVjflYr#Q==eXBvuFv1(^*@5v=8sQceAc~p5bzu-R;NxYNbYBNqup96 zHNuY%_xe5;d#sU8^-M9QB^F0a1))4mTVM*dp%cQr0zAIYv46)jR%LT2K=}e74!ix z1?gwN)mICC<>sf*xA1SRz3;adQ0b+Ll8^P{tGGUhw|2qqQ6roG?W5|uoaaL~$IqsaDn9UfmGE=_;sg}QWSTBWSfvQrXC#<5ERqwIl53xqTMtv$Da0Z< z8>~C{-Wmd0g~5NW|5o_^UG(p!Z(yH0U;A}Kmgmvwz(-ecetNvXdEorkZb9c>$j8UB zSX^^el{JjzR-t1GX-4ry=i6I}q-Kp4_W$EVYj#54-Lg5+x_>Qk z(0|&y4qewm7?%J4>9?(C`C1rrcS|HXsGuukIOFiaA2tbLHu9C%fB$+OxifbCIrN=h z`_|;YWY!2NdCvbKUh*?Mrx-Tk2ata1H1qWhz*OAj8ce3l$o4ig2y2d^Ae{#7plMX1 zt4YR(lT$!2r$`t;0&!|>OA?m$vw*eRn(_8vJPai~cQ+g^+wQ8*ml^}uH9@IBIffX6 z83;{&P0K;aF12FrMr66SVvB7;{X~D`y5`uYlHgzshRY zJWhq&r7UG?`*K(M#J$advf=+lWRx^X^iw>>KG?&;yH3mTK<@(ZT@goqAK8zX&Ia)qV;^Iq2MuQ7VAY%{PbX^AbHVWjDGm1^v}$w-o38C% z+{Z3u+rget1in0AB$Zp}cm+A?-YeL7BSpQ}4Ci#I4W}0!#EvsrLppc-JjG>btG@WU zzRbAXhM`ycUy1*L{YldZfw-!RMJU*gl3N_?{GEDCy*6XoAXW}mUiuV`(4$4!`D@|8 zc1`KqocTzB;Tx^=4G^7+Aoa;vy~N#Nptp*2H@;Ejs}$e=O8IX_375`udF1t-CfQy4 hTG-c(U5)x^^b<}*-J9Bs2p#|c002ovPDHLkV1kGV+@}Bl literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/Contents.json b/ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/Contents.json new file mode 100644 index 00000000000..f322a845147 --- /dev/null +++ b/ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "gnosisBadgeNoShadow.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gnosisBadgeNoShadow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gnosisBadgeNoShadow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/gnosisBadgeNoShadow.png b/ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/gnosisBadgeNoShadow.png new file mode 100644 index 0000000000000000000000000000000000000000..baa5ee94397e5ed153cf048a786676c7714dbf7e GIT binary patch literal 903 zcmV;219<$2P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG_c+}O$SZ-l~kb_ENR^#B)xxTTFn~u4?vB$~0;^5Og zSWBI!nr3=!)zrt;)yIL6gdssRf{}zTO+XViDe&vwbTujb0000TbW%=J0PpW`5RZR= zkdTjmfX{FcP_WwXGnq94LMjHDB@=>YSrTNBXSh z7kqFfm&ogZr=?ix6sbzYA$gC(VgnhfGTD6W%HLef0{E1gYQ2U{FBcOFr+u*}Tfg$) zFLS{rP9`#w&BM`Qb0v0Ogfm4UU0~e&N-TXqNsn%nW>200Yf@Z(0pMO;s2E5aASf;$ zO9LH3n&;wqprOOIUxk((v~YMXO5SD5IPy)@d~+nFA3k(Kuq}rBWeHu002ovPDHLkV1nnch5!Hn literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/gnosisBadgeNoShadow@2x.png b/ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/gnosisBadgeNoShadow@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..57e1e098b6a61e020c6b6501b074e25cb3239654 GIT binary patch literal 1251 zcmV<91RVQ`P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGSZ-oHSxkAIOmYAK04H=(PE!Ey-w>Z5KtO=sukY_5&(DvL zkZ_L>5WjGMV85`hpkU8$aL<5$aM~^W0RR936-h)vRCobm7@mMl4M12~AU148K~Pqh znHhJKe6bmV<@?{KAfhk>b!qX-O{^HW?_#ptU-mX^L^-ln1 zDR-MdnAh|}E9e0J&9wX>5N48;wvwb(IuWotxy}W={})f%F$Hn^S4n|`orMX)4#Zt4 z2{8y0sr3mL6Z^z9r5}tCrK;5@w7LOTQ`0eqYpC`K2gCU#A9CprCXh=nura(CivU6K z%P6l>03)TAAbJ@$EdSbph2a5RjT@F%29KWM6H4lh8kUzjY*>D!NGf8`usorPSKD`2 zp({0U*2?nq9GO&u)4s4yEU8K^Gq656Z;~9BePNq=(I}G{mRG_r#m|0Us1$z@@te%B z{EzT~Ej3i7VzL>QS43VkW<;p*-Y~=RO-I)Rt0eVsh0!UDpj@3w96gOx@~NwwO&CS* z06_rY>QVUP=})$8wc=C|IDqi0TuZG8;QeV|5{Qj3%*p+gw?@a zBiA71S~5m=4X;9|IdoX_j5EkIlO`;B#xe6oM6l%zus>%+U;|2yE4aptLXI^XP;d`% zswt!~oO>heLzqs_?|EaKKs>QkGlpAloZ|;@fyPK2oE&+R*axDRghAg) z^AM<`ks$aT%f9tr>e N002ovPDHLkV1mA6A#eZy literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/gnosisBadgeNoShadow@3x.png b/ios/Images.xcassets/badges/gnosisBadgeNoShadow.imageset/gnosisBadgeNoShadow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..42a52730e27424e10835a2f0321c21f70e41719c GIT binary patch literal 1537 zcmV+c2LAbpP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG6E`UnHYpP~Dik&;5;rLjFfbH0 zDiA;*6gMdpHYyZ1DHJv+6g4XoI4Bc0DHAs-6E-RnHYpP|D-$&-5;iIlH7OD_D-$;< z6E-aqHYyV~DHAm+5;rLlHzyJ{DiSs-@ax_aHYsL$ZJno@FHJy!k%WSggn^KQAwe`s zV^)uwjy+gQOJi2z;L~)4dE?;I)YQkhzOk#brpL*=f{=rBhIw>_cyon#)YZqiy|LBR z$JNxwSZ-lFSWCvqyQ{LL$H}|K$-JwwrjMMDSUt``0000fbW%=J0N=mAARrJxK;KZG z&u|cc5OB}WfRA9Wknf;ikk5~Buu!k>?{9E`fA&A}CIA2fD@jB_RCodHmW6IBy%t6% zX;WtA-uv@jV>d%(W_H;SbEcYtfXcW~wCeWf1i+5GaZ?cG_S%^y>U&mCnbV8xqx0Iv*PZ8r8qQs&$=(HN zKPk0T2O@F?{24EN93a)t)w1J0HW2fSLA@#TKukZJ_csL zh?aqS{fSHhljo5V%8xq^7!SIZcQP;%m^_b|&ysSO^UsGBao_Syp2vyALhFkNC`3o& zTs)KK(UOf@wzy~y@&n)Gd&I(htw?{$#54Jx60GzTRr0|RaO{~p&k11SA}w1v!)3a% zYEn=BAetw4`mpRdK$N{Zz^0|yF90>Ad{AY^?B{^p6D2roYkFqYl;W_bK$-$)7Du5T z9rAy{En?&ovy1yr!nh4-EUGyYMUTjIaPyywLk^F#tUOYydfquIv&?94x1Sget`RG7 zjCx|&@QQ2$kG)L2JSUM$djZI#PtxEP(b@ED^nnFBvFE6iz6hTq_dxa+$;RL8cE2s1 z0;5U%&Cai-F*oSVACFY^H`sU*qqC~pyBQb2XeWvC4?xzuAeNFIYygyvJu68srZ$^p zQqO$i2u-7nOc!WDHFQ2qwssfXRL)ap+N3_zL6(2aHIvlg8poQrrp(cv8?ZF0sx%nz zO4G19n>3=chEnZ6pSa7{>|2y}Cuz#qC=Oc`MP+fcN0NRRX%o_~M(Iqp1Ixlp@*`$O nrvGTS09te7lVfW6%`e0&fkV+bLK7D`00000NkvXXu0mjf0ddAx literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravity.imageset/Contents.json b/ios/Images.xcassets/badges/gravity.imageset/Contents.json new file mode 100644 index 00000000000..5e1cbb0a037 --- /dev/null +++ b/ios/Images.xcassets/badges/gravity.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "gravity.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gravity@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gravity@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/gravity.imageset/gravity.png b/ios/Images.xcassets/badges/gravity.imageset/gravity.png new file mode 100644 index 0000000000000000000000000000000000000000..a515d5551c54651ecf14ae6618e74f75673276f6 GIT binary patch literal 2558 zcmVU>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGJdp36Y%{z}k*1 zB<2|dYckki%ytnuO$W7^PM8>V=KVM~779$A_Q|JUetYfOVHU&rNlQ=L#kWkH-A&f# z+F$OjwL*5Jgisk;M21*B3ncUG5|e4&3IBe&jTQ1^hpn)bQsKLzV=^KZ#5cyy%tEI= z3Gv_8yJk>p%X79RvmMbkWQ6}%1|ciwt!{myTm1L=PzhF&TPdL>^R=ZT^l0?$+ZP{$wQJX+U%!6v`Fu#1E*(~{UX69@)=B#! z=#P~tQwIC??StEZ7p2m8l!BTBXOR@Ngti*^+kTM=Cr_1H9y@tjq)nR^9|=~J)I^^? zeTb}5m+p@pI~IiW>C;R41Ii&&!Acq8Ng@_%r>&R_5+`D0J7UH4;LMd9NS!9FD*?I? zh&){kDD~#eo2M>$^5nsoF=IdxA$9xr?@zD0t<6Hz$Q(bYpc*l3sU|ETSW$X?`oiUC z+@cjsoIiKgR$&~@o;&xyeCExY7jx#!F-d?x#7H?(kd*X#y{;>X)8hKs6I!|$tRjLc zT68O!c;XbPTCONY#7O?B`eI!qr8jPA{ir}8t%kOjk zOe{|rHC@_jiavJBi3sJ6$PmfdvuCT(G=KhlNmGEyF(N3~wNNt2#o&^VDyD+bV|(O5 z?_0;-FFySQ6$@lj#JJr7W0n>xSsK%4&Borndog$3JoSTpgJgMLmM>qP6gGF>aNFpL zKE;xgt*io(C9CA$5`yi`UZ^;xZ#)3Ttt%JMv3@mPzjG*MqlQ#TojIqNyXPzzx36AA_eRxu_k$R5 zJZRCWJF?`=ja7>m;QaY>C|tZ01`Z#EQl-nlgh5c+1kIV}y5AHd%cQo5R6ws5yu_*Y zvW4MEQeyG(+hBb4*(YdHDmUo$+(k;DdZXspyLBTjUpOyg#t9P@s?|hXPnh)H^NLrm zU!!Wx+H&fQ*#ZXg=g*HjckX=X5JQTI<FBC@LUyuF@11%q|cfQ z&mP^!{%sp2yTCKlC>n~CD22U8Pr@A9@#DvL-PlIR;*82^Z3Q8?AZ9B`SMK(Yw!q|$dffA706kk ztRP3%YOekfYBlGP9wSQZxJa5lyDVJ2u_#)zF-$zTehJGb56AOI_nr6u z6|iLP!X-q9e#21EE{lmBn>V0W=MG9?r-*vbDWuC$pIB2bv$BB*sxPM>k@Q$Ummqz1 zVc+1BXAco2W*iJ&e**E7r9>#c`TP@A9tj{xiqxQy6N=A2`2@{tSC;msLhv$b#)B>a z8DjV5Mp=}_M23qJ(A#}pQMl1`A90hUK=*|^5kF~4d@Ojlcc@=gZC({I9V-)TJqVg}b?XqOlSaDIS_gGP=dSiSHcCKE66?3NG#~*#h zZ?JL^wt9SD28iInmN~S={ASJ~?`rW%xfX;zZk=+(HB_t&$2bD;l($UZY#pJbF#CO{x@#7Tbel z8MDiu{C@GX-$#}*5#!Grn-Iyd(L{|^j1^Vo5$8MPCWYw9f4i`5>;|F`2)dB7kK~-g zCEdAmUI#&E;T zv7@p6b#)Zn7!(E8I#^J$q8RQ@hk2@)LYv@$b8nU{X@d zgu+DwD1!Sx9qbhc zgwt3En%2|eIKtw4p`ZD6^X$KG7pdA)+gEb_$s9;AwuMd;>1aY>X{K~<@Ju!}DeYXO zU9|4&&&&9Cn{HYsqG^Z1=O~)H@DVR}K1w|sn;L9%%Y;jTxTD^qQzR7oM-9{@0%>KG z^wu0cGeLdN;wXj54mT81%$^qmbL?dL`r{&OwQ{TVFZYqu9jR3$hLHj&>Tf6vND*x$ ztnWDVCu;ScMW*CWP|Q7!^{F(n%^|Mk?s{mI=+IbnVh?E(IrMVbE>}dSi3H*N1NBzA U^_n9MWdHyG07*qoM6N<$g6it;QUCw| literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravity.imageset/gravity@2x.png b/ios/Images.xcassets/badges/gravity.imageset/gravity@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..29e60cbad1c0d91bb4b3fabd250fbf4525202d37 GIT binary patch literal 6193 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 P00000NkvXXu0mjfJ2MZ2 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravity.imageset/gravity@3x.png b/ios/Images.xcassets/badges/gravity.imageset/gravity@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..55108967deae994c7662c686d73e0274e69796f2 GIT binary patch literal 11153 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravityBadge.imageset/Contents.json b/ios/Images.xcassets/badges/gravityBadge.imageset/Contents.json new file mode 100644 index 00000000000..83f2a19de8d --- /dev/null +++ b/ios/Images.xcassets/badges/gravityBadge.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "gravityBadge.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gravityBadge@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gravityBadge@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/gravityBadge.imageset/gravityBadge.png b/ios/Images.xcassets/badges/gravityBadge.imageset/gravityBadge.png new file mode 100644 index 0000000000000000000000000000000000000000..ad033ad3691ea7bd77a1ebf1bf8e5574786c42f8 GIT binary patch literal 3223 zcmV;I3~2L-P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGo%{?$q2K^jEJ{L8o(SpM7@iQ{8?^3d4DP zCO$u5!kml2YXJWLwL1pJFNOIfgiek?dwaO@?hOxkMTmFe?;>z52dO5d1xyn-&q`ZM z3=~W$0bocBAP?=F9`Vz$&_(zqcci~viu|1je8zcPGZ8eiuK`S(-6_HHQi)(TkbnfM zV2=R;5F+67MkD$TSfZ5A#nEHu)>xu&-rufFgjc|?(?8Ri?O0*sZ7_&Qb8UL(gv(;+RUt)Rj`9(3^cIU9iJW(R%6iXKNA3h_#1=e z;PVDCk))`I-2urR(VtiTSTocT+rmbr2I&4V{_IDwjB9UJt{jOjvD#CC-gTy<7 zf)b*_DBPd`J$(2uefsIA#K%AW@elbNK$e%6lhJ6T zl#~=gO6b0!G|PxF{elR;$bnqQiQK$v>Za1L8gx6e>(zy`zXGhRJ70P7dRxlAS@{W6 zk`+hh)aYPdVkD&swx7Iwc^ptR@Q#iS+Prx)iLogV2#iT4B|7|U&z_PLjEx+~1+PYK zlHForZ82cgW&w7&&|vs*1n3sa_e!H9ZL>4Acey#4<`*W?wA^@dX2b-K?QJ6*umAHO zv|`zkF==?cUKym%=cCJFLI4eh8E{mXzIQ~72_oPg$i-R)%cR=6H8srIRkQm;QDol% z6U`MF4P{xs+3HH8)z%d98k1;A*Yo znm78IEg1u?b5p+?@@Z(9Hx*bMR-6lPlC42Em>GMnAMA>mGrJ>go~%8ya>!SaMU|d( z+UQ87EfqzC5mnsHGzJy5+@hoL^iJJT^a%_6oL}D>CWpFFq$6_g{0G)|M91 zjJ){ZTx%|wQln|b{F#K~pMvFy78n_B_+4kUJy*ysvq!iOTO4Xft>Z~W$0wi}e~94@ zpvcunH(z_T$^sRZW23?bM;puXFgEKLH8bAc7_e?~(Y31_f(wor#-JGdsjc>_ zAKYl6JJy)!y5&W5NAR zDdu>0qb;vf)P`T=cv_HyoD&(=?%237N6)GTEL{QIUGFY?MzVkY=w>V3yWUK|V1~g)zt2(pTAh3Ei&c)`Q`_vphXmVqt~JvQD~jpjl0rHm z*gm=3L8ms%q`J}!+9E7)jmiQ`v*XB`7DMw26HYSV&Kge^a-c`yq5}rrqBXZ?(9a&s zE&*M^g8>*tH`?kf8mMgvBes^Pq2OKY9n2_UvsJbHe6}jjNQ;_TX!q(7lvxfPOdJ2cQ()4gU z3Baga6kS)1Eq$PVdQNxa^uoR-k9p8n;u!XM?(1!E(@WJ(5^U2Wo2+#AIy2q0vN+hj zw1`eE%%_8MLl#(`N!wiMwB3{bR98)j17i#~x(i`z7#lg*){q;-@twH(E?YP8PJ;ns zmLU_5hpCS=&XP9{EMZrJ-3W$+)wxESOU@5Ax!>-rb3CPdU4{wa8psIx@As7#_q8eP zVoaG`Nog_J(trba!0^<75&R>wEM|%U)a@no*6VX;V>wYYGFy#hw&4bklYtM1Vz9yK z8EJO8da69m{`yjdS^THYl8-UKE>;ds#P@i(VUYU>zp^b0olb5qIk@=L_i_LYEdw-I z<^t@M+}ZGDEUoy>*zI##p-liA6h#H*@fqj9>adUyz+$2R3wc2bAOdxQn*YhTOc>_?V^$Xspu;(bJz`*jeQvn3zk&w1)4nt05d3x5x_X`eXy<6DF0UNDS(vJ zU_pRi%819aE!pz$ zdq4oiwa_es1p$x(I|Dz?nyA|;Z}WM#n|!Mjy3JR)2IK*gN85?y01op9AXpz*MBp>d zL8}0YE&kQb#mSg3gYED#SXJ*Z;pvZNx26UU{V-^L;Kz5+d{c@|1<6t6U>tzZ=mQ+y zF&PAYL&4%&{0IMq`=BHAk3Ex6*%%5<;|cymS;)b~hfuo)24=ep2xh<#nibey=SBs* zUxF@8Nmz1B1n0Q0WT4XcXKdW4BL{k!2@U&XGAHUptz}(E8W;#Rqh=e)0GuDNbZy9$ zrNR-Ayz%@QzeE3gEC0KHm1Y)J0Kz~FWi&>+%@_^;ybvU4T~o81%vYHP0HV_}zlQcZ zMhUyFpxO4=uc29|w;+cA;gij_JLnJtB$1h9r>*?jeg^f_j&>bIKs#?X*;ZfD2y-kve_0V9I}F+Dpx@bZl%IlOcv(# zM!U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGan(+39TU^qS_l7t zabWv^x5jhydr(7qP`elPGgHr+aC1Ws`tenPJY57~?XS>Z;&;(BbiS8+0cx}oNTTvH zPA%)Yn$-R;vVQ0sMnfylIsiZ;3C>~XP?PV*GQA9!o_8k7*w&rEexZl8@}-j%(^s3C z^CTEsYdw={bj~v#%q?C01YFnb;o?D!3|6C##y5l*{bJ25U>-MuD7?X+sLagFj1iPc zWI>skxx$D}%tb*NU1sj_iOL|V=)|lObJKlxzWc|cRh(Lt^fcapz4>2-b2FOJS%WO}gn6N+rcqAb|e*sPOC15Ot-zhwZLY{AF? zlK|85a!psqo8fD0L~l>`>J7OZ|`0hLURQU(IZ!rWtd z=8~m;`|*CK^=Z4^+S+clwzXQVe>9~y-WK(n-ka~Y*XXmGZa#ZS-xGY!_v09{uE{PD zWJ!?8W_FqHqxpR)kT9sZ@ua@rq_Aa!;=7QVYXuA*u$10=r@kreesx0E~BxHmjH9DnE+*POmAxUplMQtRH02V!xB{K3%JUrYYth?j^1&< zUZ=B>OjPtxQ<2Xj3liHv=CktW-*ru0n{EWiTLgJHnEg8@1(1Jyp}f1KPv*`q1k;w* z?05^fCd~uzv4#rVQUPlyikYN|{(BHgYp~gC`&;}LxZ08e zt8KbA{=gk)JI_YI$*uq~CVE&tL+gqn@6Yzy&uR{u5814mz>NxRoNTUI^g_Za;07NL zx29e5e=geR3&7<;4FyebmARTQZIUwg+w7nM?jbwR-@P*19WC@aqnU17{jA^mHr9J{ z!h;o2stE4b?>?ouU%Uj{tQ+c@=P_{2{@` z7XD@An&TVmw&+-@t)wxVv}37b8)Y)n&$eybwox~O*Js zBi(aX)?It;wNGc6mIW|(;H*f|{!m%0wqW|ND&|b1;+a!u?)1qtlYyQJkh8(c35>(x zpja$Mt5>hakH>1Q4QTT+^%@OJXSBlkLBdgpy@AC7GWL$bC#|)a$eCfk06ZQik(aqr z_=LS#QJ>Xb+P$vG0@#al>;aSW$ z)ZXO@z=jNbd;mX&y;3d3IT#>Is4dy7WC|!4x_PiX?gzUZg`a7Q6eSjv#iEt7DNr^` zxr=8i2LsJ)CX3AqvN4N+o;rDw2B4^@NCP|G1)%YF@OPa~CykDdQX-MiKQAmSq+Ppq zjbVCnetjcAM&SbygvHW~NFpap2C2YcbN+{a(ryIoS59C}fX(<(vIc-_YOl1vA`S4I z0QfU34S0xEj(Kk^sF_Q#syP%YpH05fS>!67N%e)(shZhbHhU@wo4qclX6Ja9$!LK3 zjc>lH%p~ZcNTS~D<>=k{~F(XB6^ku-RO||H<@Le6Ij3%|u3b-CB3CX@HxIRqWj8E~3`P zLR#r4pr!TmXhF>!iZh$T6=3sB1vWP@&~Lr^GTGOsJ~;}&?8OQN&kmv~E%-hBnVg@=3mEW_&Urd`lMYP^kL~ERdw7g*+EoL^iRL>=5vkI2YqBU_J+1DMn z+(ffkHaNTiraXYX(gsU2fz5&$LrHg8XRK^+f2fpp2TEw0 zub4EOU4^vDV)H@<8f@-;^A$4J=RWf(k|H?IvUJj*z&Qwr__4?a0LSm+_aG}YS`IRR#k$}bS`6uX!Eh92tcf=o0Gr+1xP7o(qBW*-z)d7P2YdCabgH39 zYcCivl#G|1=m}RGX|DWEM^iZ+4410C!4hINt1aGQ+Tga>Tt81OuA580`^~S&Tw7Nz zqkaSF~5yYxlh(4|v7Egi$UYV8&n~RC&h2%6}bgsif|B z1+_)X)PZoBX7hGt^Cp&!b9qNkl#Ev>u=!A=jP|i?>|~&~GMg`L z-$v&8>gPU9vC7#hT&{~CTe=zA(k%>m>9e2uB)$I1OBC`n(hP35lgUI*SFvWz8q+o8 zW%Ec!pz1`=q6$cw_+rT^G{Dx#DXY7a&dxahW|NBi48}4~H%fssrxfCSMStOYGxFfq z@-UcKPPczv0mS}XobPX4ZW-ss2WUNPyP5jldX@} z4Od)3yEm_+CZCJ0yzFAKEflycP;<4?95($6Bp9^;j5kqqSUNkA2{H zA`iwAfF)Envk1Ut|X3)sn^n#SO1se^*n@t*wq<-?*k;U9+m5E?-`&E@n2L zx44?X<{oBq0&HfW|M%~IlDY1>>@0fc`N!$DOU}}4ZmFI_P26t7(s{WPbRyT7HyvzN zJDJV)ro#?uu3UNQl!@QP9wB9^PFJ}p6JW8a!=^;Yv_o2F0X5(8S5qcT4~*;=3^vY@ zO_(b7%xsO#&TVMFy9||CGovS3d+$c)$nEPLbko`fx^8v7Vm7Nwm(|jROR8Bms_6^{ z8f;Fz_7s`xPrv;Y?TtHBYolT5YUV0fx(GKYV6&UG84b$FKrfl=m6u+msp6dl++6wa zw231_?a^B76{Hy2A1}+T!|6gNXW(+R%|?rCVroBrY5;7vXn7oj_+PPSqZWg)X>9(n z9qt?N+tf&RGRU{CYanJbU9+kVY$mXoiy)n~uu9!~#vZb-*B`lyVCm4HtZhs;D3A?i zvx-$B*O;ZX*}kGamzB~@f)x``$4o*>XHUH!d&JuYQlNH-T?4=%&)eLgibR-WemTHs zX2b@lCVO*_=%q56V|j59xS7sQ&(35I47zp@U@(dXUcFQ@T=(p5@1aMxx#)q-jdTwK z4L0A*Y`%VVJzd4xeA%)Zb=8J|dg!dZ^o9Pn$iBYwrO(p&J6CciSPV<2*}RO|eCEE* z^c8j+_JwvE4NA$(sWf-mWHoEbBr9{y04yML5j~hnE~o<;P?XUaNmnOX@yi=3v_!~A zN#aX$lq6VvWK=2Ni=LPgA>q0>2mx3o7AAwi0sxFn1K^WK0}W5_^!)3I?Jo83Ru|pR zAm6pYLAR|-%f_QeH_=1MjdTeY!7JAX=x@LO4dq&YWXbr}mp((^{NiVH5zMuI%l>&~ zlV3L|lF}8;m;#_->7*0HrTE9c8BW9;U~umtpW!6Z0KdII4X|jiI0>1a3&7%o$9K9C z7qeJsFG4OEgb8rpc9w`sEs4moXa<81h3oJTuk7_b_}nfJJ+;HF9^2-ohc-8=dp0`h z4rcQ$t(wj1YL*RHx?A@yroa6GAdi1ZbFyiEfPyR=I;AU`iEtl95Dg0H%$eKmX;ZW| zW1{jd_Vyu@0A#?P@%EWk&CG~#SS45RBRXtmIUhNX%gQ3G!*Bo>=XpgU!~@$k`2F4f z63qhEvtEnAc!vVs7;E!G4D`L5oOI^~6hQ~wz(w$Cb{dy!HZP(t4Zg*)@oTcL|FW&?d+7-A(ukH8I zi+jBE+)j^rl7W6?Yq|*DZL#@g&E`5?1k;wTMqRqjPxqg>mu@`VN|$V%&kaf$A*I_D zC{f$2T!Ss0GEzDeF$$kz^9Jt{zA-z-@sBv1z@BotnYWV2rvAF~;<0d1BB<%$*AmJYc_!pJp{((Uw@u%#J6S*z77Nh z-|XasltRpp`_ip3Q6;XY@&-L-qagqlf-1QeQyuRay_fLM~InSr|;3d{sNHZPp-V6l1NM6w8x z37KX{Txm8N*re#NI0-Ei$uz)_iGj{=V5GY#bRrpkg@LBw&XDSBPqX>0g8_o2LlFd< zpWN4nt7K=>uv)1)N^Z3Dz zaj_dd67}JMQ=NhE$zRtMU$bY`6Xat4D2B1{pwAV!6Fs;GGU1+za=_8zk-l+AIDS^3Z3SXqYoONzx#ZS?mSCA9rjj|3ox96DGa@uARm5rBisN z#1DfBUaZ4(M#UtIp5P;}E5^6e@h-^8L2=}GBL%$pB3{x)yon`5E zTb6E{OK~TtbV|oS-`dKuv8Mjtx3xN+eC_ky44{o9qs{07nbGs{{Xm<)g_+l!>W=XD z(Pn%Y_)z*gLQUxpC<1VGQNzCtX~4a3Puv^M0osfDAneVGD0htQ-c0{%o_fz6Q)VPK zrv{HHdIEA*E(|}I8Gf2t43GhECceakBQrvh04UYzbHa}T01a|avj%y9K^8WTbU-#@ zF@SyiC@#A`avT8s ziN#*CMMlCXxJV9>4?`QE=J?($bQwP^ZbF)ljAg5qd{{e*QDa6YQqg-TUVT!>m`2e% z72qaNq(W5Tk4jT9 znJx?)%Qx9nwhig*ta?)_S0Q-^}19t;FwfCW& ze(G-Qy|qQ(sDrdOtQMBX3|?TfnRKwUIFRQe&}@cjo#L-g&rZ*!`Rye}=E+sn z03o2I)ky~?GOP^r44};O!ml4bd<(EQ85;R%BQwp#+`vtDSJZG_HM?YO(&FUdZY|nB z0sF+MCkJi%4UpR*TggXyOe%I){Y*m2^f7<*$QV;o zqS!NCW^FYA=8Fs1F&p69uoRe{$5tn(g>&oCKGR8zwN#6qPWq_dbmEIW@TC%6e_pu3zhqHnEz$`r`7drt-E@EvCXUo;2P`t4gvMcS=Ic4cG~8`;Rd znC#M&@_|9ZU#ih0PSRW4|9^*k;swFrtc{U8{E&V^^SPAD)yZF zCfc53e1zZeB)jCHA`3P^-mL~PIoSX-knPaMq6TynGh67MjWmUK>1Qo*j7UcJnB+1#kDfVM4O`)wM{ zFq;7#;24>MWNv$mwl)L8N|@NYhQh9xw6=y8@>Lsf4lQ!rs+uH)wal^y@OaV)^8YhT zK9J`S<=Lz^SKg{?E6Qk3k3BTn3s{)QN(%mM?o4jjh+!zodQ*jK$StSb(?qIBKVIZ# zykTT~XuJdTzW$*|N|v55JapJV#n9b7do1s5I-nUnzl3-6(kw6b9%j!qGp$y6!Z~0& z?syd_Nv{+CVBgI6Y2dY7H_za7mnM#I;JSW{W>1)L;sP0FjF-oBJ-)yII`MWejj3~K zrNWobD~AlSUS#9yF)`U`Qsok^ZbEN6C0lMKLePw7G(aB!nmxwru)l}@;i3NyEb2D? z782|*9EDcd76vU)u>*ZI!tXK70z%{sXj5b=ycv-Zc=Q0r;7W&t+8{*znE*n6%TswT z{^mIw;lR8~1a`aywr2p+B-Tcl_1+NCKcr1`({uR3nq%Csi%NomhQa~9T(4WqMmW&6 zzWjMkSgKY$&7Zo~9&2)mt&^nEIC-*Vy!ajO?!s?6BYlvFio^f$AvQwv5|42X-{wI0 zJ{yA4YFr_B*wsn8kC63+nOWpT%y<(1ZcMsFGT0Pn?O5UQ-5Wt=&u%kZ+$r(8k3%(BKGp!Eh=V!2IONbGoUr`fgsjd# zb6BWQo-Tl^!zl@E0lNt|-s%1&xTxpSnj}c9MiBPR;C>5he7P?X)D&)i7N0%MEg}Ep zs%!twTk*{k1KtJuMqE6}CN?pG_3_w?@Qlsc^qySuesw+gR0uT-d!fViwC#45Gidkh zfE?^zZm;&zD2s)F8;)^%U0ns7d1(!6>nSRK=U443x5~=J;(KUsqbiLv=kjnQQHxT( zKG}vs_t&(RO;tj^?yGTc84nUeEY oh@8atX+5cAPg{LWe*SY#N78y0TNf7)oB#j-07*qoM6N<$f~U@PK>z>% literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravityBadge.imageset/gravityBadge@3x.png b/ios/Images.xcassets/badges/gravityBadge.imageset/gravityBadge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6bdddc381bb581cfecd94e22e49e3a4731889e GIT binary patch literal 15564 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 IM6N<$f>g;PU;qFB literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravityBadgeNoShadow.imageset/gravityBadgeNoShadow@3x.png b/ios/Images.xcassets/badges/gravityBadgeNoShadow.imageset/gravityBadgeNoShadow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..474f948bf993592dc17075ddf903100488972954 GIT binary patch literal 4479 zcmV-_5rFQAP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGRCodGm<4PzM-YYIl)0BO_flqNJeS3Zm=iI}PQ_#pV@ON^ahVxxi@ATq{5xWn zBP!kP>y5Iyu10rZqWNKVy=$27-n;|BS!@`Bvk2l0&>5gJKxcr?07U>20PzJET<`?R zrvY3GVAQYE=T(ve5gC#^2cQo?^YA1BigFlrl8J}I@ViN(EJOt19zXAq{0hLA00ze$ zP$D8t4@HbZ#EwZy0Ec!hk7AD>_brm zp{nYr1BwAGibz5dRtdgMssJI3ioL~}pX<2D0G0rB6xfji+AcB^HR;U*r;xDm8t3O=S<3hx0Um;ei0UK;#dSPqD;fY*05st;TSDsmnf~=Zg!CD1XDAA8Mgd#Ru zQpu3{W7BlB2 zR6VI9G7@=GFv$Eo^=)Tcz!qVD_}zEkjW~{>|Axb1@o!~i#VEi)GmxzpRshn}15n#D zKo4Ah#aKr7dFlX1N=AlYn2*H+;`%yt00Ko(R!MKZ`6ebNCNMTOhA4_q77D4?>*1@f zzQXeIvV{%nb0sPa;aZ3_4{G;-9=Yj?^O@t_+D`vNAp$kgc}N*OIIkvWl$1k}R;vY7 z%XVTg7@*VXU}xl$0oI11A6X`tCD|H{$8kt6h|P<$c$W{ zJ0LCAH8WHf2#B`P;^HEbB*AV%LDgzCXjVYE`lQ)xqS0tzZf*`!Q&U9?<_AJE+U<6! zX#?;o+6AB&@3^{~kx5v*wo-5=qhIrL?@tc+*E#CG$DVispMLg*QO)ikjgOBLfPC@A z7XYAOpsh#}dJtx2X7JQgPeEgJbd;;Bt7W%1eO1wp0VQ!1=S7}(MCdQ;kURtn&CluE z5syCp1it(EH|sOI4)rGhsv7;rd@lMO)6>(KoSZE7Xj|&K^{c>(Ms(|r0KI)rRL{uS zbydKcG7As#{~S=9$_B-#wmp}fByY7xRRfL-H+S(els3)I%Qjh+Iic>Gr;&Wx_ zl=XUDy$uRUKVyD=p0l&FITP3P4RUK|EJSi`3>;>m5uvU7b##3jWx6^9VgCSoJNMU1!%38?Pgi?13#HS_)F zyIno%h{NziE*HPYUkE(;(Pf7R!SPJK-TTG4j^*#U*Fxa3{3tZ1!U6a)D+r*&w_P(& z%(=)C6W|vu?cD>#x@)E7M#=q0Uwsc7R#aw!(|*?-@%iU6SM@0Dec_uzz+ ze>lJf!|!YW0}29YQ0sMa5zr|m-*h<5?q+f&Jn~K>ic3ln#=)I-#oKPtgj8*Z>f3Sx z8o?0YN0AvbX86UsQt}xjrKa_c5cI%-1Dh);A?*;fyua0^Ab^hEY2D8)p-KUvcAi

1wmaqh`z?DSc_K2;;_S<8kFh=Xii9nA@a7?zDS* zGiuUQFbqx@I*6Ziok_T=XP>^f`kI;$m@I(85<@cwllod1KxekwkpC%`U3jq(2 zjbH0j-5sZ1Iu2pnJbeOchMj|mICu}ndK*^Y(y>#pwHr&Wx%6+CGGQ#F2{@r?&N}}h zwC~UnI+_7U0BG)1MS--48FX%ka*`d^CYfsYkT$J=GF!FX9V2JojW8a(?FRh)jN?4W z^53sgT!J2hk4N=Uy>Q2k*I~xQahN-Au7Cga%PTSLk}I+AK?kGJaZi1HYyh@v2Bn*Jsu$MWyUixXE|H=bm|r-+uEg^W)qfS^muKz5AGn zQ)eJ6+O%nd*I$1fDnj2n5G5c9Kq3^UJ@YYE z$!PPZ_d1BbZmc)QUT~?G0V7X47GE^hLpEULq7p7DDK#!z;w)3zN~FbZ?K+sd-2j|5 z-LJm->RBZeUV~Pz=CMKmx^(ZVSw!gPZH=_sctB)9!V@ygitRdh_-NDN;O+?HTbD(j zeee!$pE(h)JpZ(~kdUklvs8CGN<8nHiBoY@uf7Q5o_p@$Zr!SratU-!kTDte@|@7E zAb_sgXXBHJsU}Ju)SqN1J)}#|^O2hBH*dSUIeW?-*_nBKA3XQy{idFjyo5E^FGm`W}o=-hT%+>3(9(5`0$+z>7g&cf$%Z=dOn`2jB)* zlG|;$S@KMPweeY!ud7ItvSMh`c=z}Q0?XDdHz$q16|1jTj^^UKFCBTilFI|d46L<5 zIa=+~4z8@wTzu)k>2dHruEgq*c2-J7tYkHV6Az046KbGS0gPHCfM&WfBeVQmG3QfK zCQsNx+-q&Tl_%FcIH3)@-lp4_6UN<&m7OSDlCjWnS- zFh)rz$PcM?1p_28=ddkumZ%dkIPNOKJ-~9S6yeu}3uLGASA^|3%7e7oHfG>u)3N%x z8!j<$h915jzyJ1ICJJPLl)U`emVp>FlAjHwl@OL!;Q-xu_?De4I2YO)Rx&6_=fK|) z<;^mxl&-S@jykUfn}(cJV7&3dGZ=B&G5E5vK^t#riOKWn=VECj#FkRwxs0XGzb($e zp~Ou`ZJ8tDj*>y~ZpE!$ce#Wd|7^tulY85JkH9{IPcJB&L>|l;b2)CAF#!~gKMWC_ z8ng^+B~|`SmOlTbi8fv$XY;pq-?9@JPeh@*CE~c`5REfiU-GzLY!$^AHUrQA(Y@sIf8Krn7mG`o{ z@}Nrc2RxK$5=iHf_6&c&naosjBeYuNy|jXsQ6}kREMN}!^oQSOFSQSGKG0{I8e%@# zFI-RcYC&X)BN!8iOIUwjov{S~D34l~L_qWcsPK`}Kgm^dUT_>f`kiloK4qzX$~D)& zRoU+x<=cKMPE>T@E$d@x1zgaIt*BgCNYI|cQe!q@>8Z>>BxD_EvGiH+#w%YfSo$9W z7Lb}?U$;b66p*tb(y+9|07ImAH33->t@z)pgs0L~(1!>bET*(Xh0CP7)zLD`bbg_3 zUfog$NP$#kjm_($%7|FT4h0H9vdD6xz%{YUH5g&SvJpL%XcxAr{StPl08rsZ2M(cg zt$?%i0SZBi?qo)*bdl*m8+u4yCnaU#OHcSpWs?=|N=!InWBgUXv>ISWa@fc!o3z9E z#tMIM=ez3W&HJ~09qRD`+m2#3ClfP^k`@t330S(U1Te{{CSq;MWfON$%7oNxBZ85S z=ZOAs|BSio{U1*GkNHAfZs2zPna#zPsmj+rAsK85si_YQTp}I`WI4Xa8Wc^&N)QG> zCl012^0}6m8FAxV-;Vl^`o^J@9E=@CK)v|Tj_HI`AONn6x+q+LI0=YjGSiID0iV}!3r5qm5&skR9`e9{Zw z)c%)z>sc~t+fEEz908qlCJ9KAWwKDo9u1Tndy}QK8_H{zYnzydU-irv|4m;D&n~?P zRBbICLf}rCh&4EY=cMi3G;0X85#dQo7&XlG?*F-8O>t*`_r0O0s1<=aT0$$!Ttuk0004LX+uL$L}_zy zY+-pIP%{7kc${^Ry-UMT6va=gQqVex4jmjai9^)V3U+a5D-=aAR0XS3ntlmwd?YDS zaT8Z5_#aroS#Yq3RB&-{5JU$N-JCipxM+CZmsHv!-pA$rIGl62T)-Pp87uYzDCw4w zOvI$M)Vkz*gNL3|s%EmNqAUvj{k!Y)(e>U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG%;z$c=5f_Au<$_K~NJJ3Pu7RA4Xha}HT3U3tfFcNLYGRQCSpkB) z^3@yn?|z*Yv{S=n*CMp|_LZOQ58o$2$C9L{o_2d1<+WGf?R$i95?JoO=bO)H+yJ5_ z9qn2YOr-nw-sJYnMA1%?M3h$R-7j9h`TR#|VVwv9a7}JLhO!6;D>O)p5Oy`tksv`_ zmR6Qki%uX26QNofi<}??E=0>hiPp(#5+K$hL|6`4!hf=035S*dBq(UtqUAKH1xiQ@ zT39*?3wY-(0N=e&h;Tv(Jo5~IR|x?fA}9bLL_~WGA@cuEy7OS5AT)$%2;4c-5!e11t=xqQ1002ovPDHLkV1nE_cYFW< literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/linea.imageset/linea@2x.png b/ios/Images.xcassets/badges/linea.imageset/linea@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..42f41b35f9dfe84bdc0c9b0f0c5b43079a191ce3 GIT binary patch literal 1781 zcmVU>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGfTR|lc$4n*eYu1moPKGUc+HTLm_K3}oO6uRf6K+&(S$89xMM~)xt+}5 z_mV@VR-xuSz@CLu>quEw0 zRn2D1?Igl}nS<4XI==9tYxFmXUozX?!2n*bI}65L8%Xd5qZ{U`p4)>dzi}u4OLyqj)0IKz_XeO z@GoR}Fr?!-7?vMt7q4P*cp|!3-L>Wl)AW7L+BBMCQOe$*Q#VAU?;+mb>hSeNlyQbI z6aRga$x5qzZoWxme-~n&u(4cG7~cDO-vZM(ak#eOBpfAS>A|U-JWdkqj@?bOoLJ$K z&B0qPxt+P+`h4=pdw|J^OpDf3bLf4ltTMncV;bKqeU7lr1^_*WdB;^3TnJ zZ*HdmdR82^3;*>$+-7p-u!9{Ti!ViP5tIKvgRuB2LV0xA?4#Ne5prxy3ua)+LRvtx z!`|xcljRl0iX@qb7 zy#s!^uoTu^Tt+!KVg~rjHut@ZwLd*x@s=NXXh>ukI^ zx1++E@o(4q%Y*;q6eAyb8?u@tHPZ^*QjYMpDwur0%`#9;@P7u7wqfmID6!D&4yc6O zz{AbJX!n;(gjF#?FM}j_D8mZ)^Hxh#PAS91_0m`6*{0JYfZC@PC>5EUl)e=p+!YWB zz|P5o1iN}@sYt-hRj@cC8RTA#>Nhjrm&!LU>Gfs_m_!B2%ELSr^{@R@iYp#I*#bXp zmCNL#RRXDSF3LMi3E7+-RbY65Pg=Ltci8wCz=}`L`?KodChbg=EJw(Bi^j$BPW?o# zrzZfp0w@`_Do=SEUrBekkv)tu)xjs%VI#%Kg7lWsv-g5sfj@33Sw3f=YxD;|?xZJj zJlsIngiRdwV09-#Zkp0!Kd&Bca(8Ipxiq%%?p9D6`K0^Z!pdTrmN<2+A>M!zk z`REEjdFd^wAVFD?JtTq0GJuhBtdrg0q0<_OjhWWf*hi)Fa5ZcHpz3u(SbSL3!9cfHuo{N?=^)&mBN; z%zOI(GN+Pm?*Kk^uIO(ii~@DR@X(!Ry-HvVyF83n;(*(>;RaOT4xolP#mj2!3|DX0 X#TT+_QIn~H00000NkvXXu0mjfjq`Tr literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/linea.imageset/linea@3x.png b/ios/Images.xcassets/badges/linea.imageset/linea@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc7abd0cdc64e8aa8a18c8bc4114ff35f1e1932 GIT binary patch literal 3030 zcmV;{3n}!8P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGhW+vUw0j;TM#CDGyG^UXgFgBd!<{ojCxZ87Hrb zoqFiII#Iz;5^$_=C>q=0m+X>G?g$TGTxmY~`eD#erPnfyGVY9@}0!VG7z z87R>fc#tiC;}s^Hu+o}$L5n#8;|7$omH%)B;0*@~p@7+(PompzUa_=E8>`n4G5KP% zvcfS9Gj`?zipj>jOKOFP4*j2#)kWG;uqgk66HemmJ!@6O+jUEl?a4aYp?wl(fn;66 z0!HS|p(e(SUj5-zVsXV&V|{R2RXEB<94eIBr;CgM-9@VNQ~GQav0Y=isKz-r6hsB!we&F z-677=nYtlH;<)$1(_B+OVHDn$I|H)EjDX}zG4RB3Z5@u+gXcXI#j4{t)}Jkd(G8#l3BIU_q{HHTAjs_(CDQ zTCb`XPE|h3I$PwY#h7R10Mu$la_-O{b^cr1C+cP8xH(!zA97a+tBq!t=*K%1cX~8O`N+0B!Lp*kxi_WF2#hBr?pH$$ZTj6#NPNH?e2d3g&0-rHCPOQHC zSgZPeLAqt~e7$f9=WcK&;O9M?c6@a75fG-%r&bQl4HTlNYED~u& zFl~d|Pmii@@=LQRKr}dP)sot<4Cb2rEEL;+Nz5tb9HGKU&V$_|116U0z0vy@X z7z(2N?%sBb+WO2C*z;9tf2ti8o(2?Ai!vcC&N*a z)RoYo>m(1vO8_U<1ufXp^`K`Z2@k0n{+G6dW-fs#^}~YFmR^HVIMRnL-?)2|EQI3F zSK!yiI?UNf7%8yx`NBBKM*fO^?@xfgw~gPox3!;AXrC3I_q#f2ddzMo;O*bncb{fi zZ|2^4)v1>ceju3c0e%ZmF$<=_WOI$(0IBkJu^0H(FSByNeB@~PZur~U5B%jly#Q29 zXoidz$82)7{KuQW`xs|9G@=!E>)5ar6w_)0*o-p>jhrgX0?f2gO_P1Vl*!`GRle7u zKDM8k$n0bMhDJoOD0K2JcjRgI7xPkr-3> zpAe9wrO}6s~o0Q{byk+c8&9GcOk4(xJzJ**c;mj1saZQI~mM?>dt( zI>&lN8P3Zof98_&x;i>?952hfy8pr0DMbPzk)Q+Xcz}Z-=90-1xKL#^8UZrX93F$l znd&L5Vqumjv(#BtWCPctop2wy-&@yQwVubcJpjMt^V2CvHwJF!9DMFCkVU#=46Vl`Hp=Oetv}ROTtA5rvz78~ADPyc=|5K{+$7gbN`npJ0ov zfLpa|EBh?;&Y5{c@tSgrZBzjRCs=3@YU>DS8`Z!A)oP408E8wLpLRbmbs9k73cbp=rG*IkU1VMLA_cKObs<_r1hP~-N$9Ptd!b=DCnCrlsf1a_oHLe_SdH=cJ YKVX4T;VEMiX#fBK07*qoM6N<$f|xhU@Bjb+ literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadge.imageset/Contents.json b/ios/Images.xcassets/badges/lineaBadge.imageset/Contents.json new file mode 100644 index 00000000000..01ecb7425f8 --- /dev/null +++ b/ios/Images.xcassets/badges/lineaBadge.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "lineaBadge.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "lineaBadge@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "lineaBadge@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/lineaBadge.imageset/lineaBadge.png b/ios/Images.xcassets/badges/lineaBadge.imageset/lineaBadge.png new file mode 100644 index 0000000000000000000000000000000000000000..267723587ca5032ebaa0f419aecdde77f2a2c3a1 GIT binary patch literal 2554 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadge.imageset/lineaBadge@2x.png b/ios/Images.xcassets/badges/lineaBadge.imageset/lineaBadge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..70bb69fae249fad9a4b60480a7842a7e95a98f1a GIT binary patch literal 6485 zcmV-b8LH-qP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGHr1rR0hs(7w9F7d06{}+1;^!fp2tpnT*W`(d}kf+mW+hVqWijw;PxR(sv)j13KFMLZ9OK(s3-RZsu z`JfCcz^PDOsI$y0);AE3jq{_<&|?Cio-k4V*I)l*;EWA2&RD>9SuNXvAtR`+aU6G$ zh59g*y_Y>Z3gMbMv{Z?`2(&HF?&Q#ZSJf9s-fH>@jQuf!j zT8ECu>5%yt$IyNLkkMgnWU_H4zw{^31>CtMzL7h(N^tp|=ZE^wP(ZDjX*ZxK8@S_P znx;Qa&H~19Z0W+o%>?Q0NvAVmbf=TaGK+p@7W0yrer6_mM8e0+1fnJ33LlYhQA9hl zV$8c=;*+V==KbluD&##;}ht^7RwT+9m{>ZAO&N=+&+8 z%GU8Nm}k!8&z{-&W$zShJk~`xc!Bk|zaU%yj6eoxzym1bgAYEq!gj%og~DW;pAmdd ze)9GQS>I|JZsVE}utRc0{ju>vcoPN~2UoGG+IVH)A@R*7D( zx0cW6SM&MdYCioQBVV)4-!XCl1e_3PeXbzK6g``d`}rkOJViL3Tfr8tpTs;|uhbc!RIm&V^tk4i694_?vP3(l3oi_9@s>zb+_h zwv(kY5}$F9yBp98`yUJ8W{~*YJTW$b5vZ2%VCA0xRiMh=6sTY}H;#^ue)Zts;7@b8 z+&9AbY8Y?r@9&QYwnKbBY=1M1|H|(+AAWd)i@@ItIFPvubTP3Y{2I_eHfnaMou5nQ z&rig{!sDD}udn@m#xPg8f?F~cpc6klG*APaYPEV26#1_yz>y8X-P_x{D|UBxiC4q+ zrw&g}5)`ie3N+!p8qnUG=TwPaSectzvC=r2Irxmhl(11tP!^!uRen0Y)pHZI<^$NE z(hr6h5e6&(qi_LhV`pba@u_g35-wWKC_3*Ht&1OnY;$IxRb}ptXPnsVAA04=9%KtM zmLSz|Vw|9q#Vs9vcPl{rvjFv$RjLocw4-49*xugO_-YuR;R4=&|NWZ}htCsej)gnv zf>JyKnsczFy3Z<{4ZLGJbfHD~k#N2{H~nG~1FkXy)Qi{33TokmE0y8a!NJi7y$yJ^ zTBric*BS-Y$JW-CV1KX@E~FrH3{taFJP%prI5~U_bQX)%M&^bG;Y!UhU^64n*aC1l z5xiEDSFHxzN-=kE@X|b}j1Fwf2BJ_I6`PxzVch;fK3^$@Z{*;W*bwArfB?%$Bar zX*Z6qq~K0&B@0)|r9dD{;3QB@3FRIgJ-bM;f|=D0JXjA`#NUkBG!YIv1Amr#z2zX29oK)I)kn!%WN#T-Jo7gXsD&r zd2ly?{j>+`fu6@>6;`cYu|C$;)(Eyg)ai6~W01$C^|-8___1%``x1I#4>`Jc=Nsk* zvf!#4CTqZZm5NO~x3oQ0@9{C}71+2XoYM-DBpJQ*(n}-$z542_qo<#KdJIyK1yr%R zx;l+wu~-2z0ze2kS%t|gl)kBFA;2o7vs8F(;GNyWL(0SAdDt_4U8XhhuED?%OLG6$9C46vWILpIdj7zh?4aYYi@gxXT{Y zz)?yzRc}y6tv1L7px@3~d3nHIwLT*V{f*HlKJkgs_rL%B(F-rUFnZvD2cn9#v9z>A zu>GBCuXk`9#85C3o=RygPst`+@i7G~ewp)N57>II1+0oqeFhYOdQk*$ljQ!xot@nu zdZ-?(0;mRX6s#g<1#Ek$0_y<3RxT%p){A}G=2a}nv6Rh=bcVXm>nvQt_jrLTdter( zI^sY%V3bknc8>zs+YWHF@^XNqP(56))|hG)*REYt+~ycLRxFKU?@Pt$WLGfRgaG@} z8CKDfIo8-=v`g;-O!7?79%)%$A4b z*&O5-Db`zn2fQec^@@#Ifq-gM0GQwyyFtah)QdR>a(KJG2VgQL<;1cG0#@f;w)YE~ zcUgoQ=}ZLjU+jUB81WcMjl44jYFWu>lWO5q@XsyR}}gfQmV0G9US{RzCo& zhgmM93Z@qDWpkh>W`?QzVsVNl|8*0bX-SSJxKzOa=HR!tcmF|PldO5H1^n@ke|(`8c%^1hEKp5^n$1g8(oG4d8Nna3g@d z4NL(Brf zRng5VSQe2vix6O6BCEk;pLJk%Wzle61;@cMc~q;(2`3RIxc|?P!wT@Z|4}AKtUyrx z$j`pWu^|FHm{cuDILBS6zJz+jJYWc5-}teR=e^4p0~|uz%7X!%dhoBRgEs5I9298| zD!|XAU{2!rxYRd5qx}MG;obau{`uzt3%saeiHjF6PGdWldrW{iRwlW@U@!w%#RhjP zqH@noq;T&ve4@*5o;)${;S#T40j_A0O93kf#@|YNc@*XU}@?e$A@?eDKo-y`ST-+iYT#fSJvG?eC-n`N@XAvaqs6kmo ztKT03E*7i9U=z0mS0K*`*29gdR@(se@y7oC(G&I4(@MGBz9A1*7Qs0%VatQ{fQl?) zwxcF{a1RLjf9{8Vu~Rwl*e0alp;;nQlbx0ylU!l|a}v#7uiWnU>p{i;l2x$+=>fkR z#VR<}aB=^<)45q|HhbktrCa0}1IQ_0wJp_EBU3_5vIz2E#O5nG&07lr3-Y|DCzS{P z>YPT8T_OT7c`y?P>Zo+PMbyGcRa$3_wY80pWhiMqSPyg&TmkiP+0VyX;TQzC+Z`5F z$#K`&w&hHrLBq!^f*N~J77_R01y7?e-qo&Dqa9!3!yisNX)J+raMMoOa5yfN0nEuH z$*>CGM&q=#vaY#9b6CgyjCEf8WsG_%Y{Pe{zmxhO1od@SjZp%jFoY$c7hXN>_HC*A}rrc`+NJm z8gOH4a&sFMvmP8`w&Bi)=Iv@mnyPV-vI%7p6PviFQtfnV;mjKK=Ro%qlWCml?om2BA{fKZxR?W^P&92dsU& zQctb-W-^IK#y(6wNq0&%f!ARZcyT)@C~PG_mcI^&A$#!mp2!wHG>s+(0u*& z($dO*@ENtvpo2Z|*|l0yZT9XP`!D5un?6JeSQ8w8^}x0)LNCzR7aQ$Mj70S5N`-%# z(!P4?d&05_Jr5xtE*2*?(d#{w797pIY=Uf}mLye_)HpqDb5Wuy7 z3B5X1Gpia(*HA{govL^^ES7@rq2kGj-qWln$=E7d;g1^K!P!xv@M{6|*8|iyJ=iRY zy}Gpg;ggf{W94SjtAw4hZ{U{09a9Yx8=p;Hj%5LuE}F6j?14K_`R}}?d!0Wl{9B?i zyNx~qZ__nhF$-APgl$_YAI2t71U8|njuYal@8Nk%L{eJj* zu(iAUL9?!m8XJ-w3m(S$0$sF)r<_9J>J$Pc5?0thr`S0WfnY-RX^87SLJlIWo%JuBi zJ<135;Gcgs4J8y!cMUHVWHo>S za50+6&9Q397VupBJ$P-C3#g)kiW0aSgGyt1*Ltc)s~GZLrDq5!ocqi}C;p|FMGT|W zoJOAy+c!7?tdxx_uKq9!pd7FY53E8xVzn_f>7g!iQ$XXFod5{SX!m+awc1XA$8FEp z=yuQ8mJM(rxF7_oy%AK)K7d;>aQQ4QtbA9!UsZ0h2K9es4SF_B_5cH~UjHWOT;Q=8 z&_nhQ|Ai0MLntnzm`r$Dr_*Cps91hXnuL-8FfKwUrBlnmH^;eh3LAI=sc5HAYeDw> zE@1gvE)@HcEtCZp-yKY{hHAAM;7+UoJ0mUQ&I7L0YnST1dUaR(2`vhjSd>xt6=oG3 z+&X$=-oE&fOVc)41+K#Dk>)Y7MTR8$m;^Q}RpF>s@R7px>_PSpsf;)Rb==>-^Bg?)u!vR6<1#AgH7+rM5w+3rBIn z2uMQTBNJgn{ro-+9PS7%82e=3z_p&MXV8F)a{@|HOFG)3a+pCdudIfuJ-FI0T?53Q!}tv!J6;Mg>3T zcRg5DY1jgvrDi&JlYDoPHIOOkH8p1qeu+NY|9bLHuj$*JD`oTVDEr)4O14FaDm|W} zQJyR{%bNw8Tbw}IcVajmyXlDXWd(ukvAmXjasf%jG@(hks@Ck9o8FN_xrAxzn7ntk zxQO$LOmeYY*oOtIv>;c=u!cSK{f`)w>PM?IV!rKwuxHy;zg3&-g_)W%7k)$@*^*Y6iwdhJqF{J* zs_)a)Wy}qkD-)2lzJoZZWTw>2_=pYdBq%y$%+~9_;d^+uO_%wSDwKOh2Ksz8l%fD* z{qVO(0#jkOf$}`uTfc_WowtzX>pBE9*C;v!3HF&xCYMz;pbfrkCqza|j5Z{_v}KsC z%IlZ(+E+!2?vWZs(kp_Bk4VRo7jv$5VC{GYn_xS zOjhLpK_Z)p4wnm)XIE8GcXGT-acI@kq8LdD5D~y(8v-^$Nz7A5`LJlp%rklAJ;%In0CXra}>; z0tq}A-y5V269_*^FGc0@ceK1kRP8;U@Xu4_9{@>F!N`8;%1?u1CbJngJDiS%7mOpj zW!_uNkooU*5Fb~)60q$#{Lqf@kh>w*~8trB?;y`Y?%*zJA zObq2~*h8aY0nyQs$ z&d@NqVaL1q4><1QBxAs+G~~GN>$#{X3_uQC%4*y?-t0o7S?($%YG5EkEyLG6rWXbi*EitJh=mPew+RwSFeK!FJtTC%=xqW&}+=s>~B)f%pJh+bG7$JvNH29BaNr(GQ)YB`&1%$ z{}p!*SP%mN6ubYaSE%#SKddpf^EfSsNMp&I-qj4ZLmElw4e4B$tRiF+ZN)6_Anz)a z{!Z@+_9U@A;w*9SyJ`^FO{lP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG<*W+>fEsSZdTICMG|sy5@r-kfxa# zaPXbS@p$~FpkHlD2OY<2oI5w?N%*_>>3psI>Dqts$OI%s6tNT6;Gx&BLGl6Y6Cg_} zyC-JOKS7Y>!u?`98<`7K-l?U6N|84^M7`VD?XkI*5>l9X*1lt`nE z>(~wAc+TSklk6j0hRX%n2RA|H?>kbgZr^OTiE2q1Q*TC~!;x%p zua(J|-(Dt`*6v)I^BdgRKtlb6#JujKwmX4s-V0G?yoxl59_!q4{B5Lg7tWC6lT6oh z1WaH&IU2sh;c!78?fTmFxqu;06Um2YQEB>Are5<%q_Ir5U+ME2Z_{_TR zJ7Ba!C&Z?Y<3O@_e9SLol687=mvTwD6Fc?ly?Tl0F)sOmM;C23izqjq=jo@f9o$jI zSo$a{eZSvd#@Mh!=ehE_4oV0BM%L?h1X|KiXS38Q#Bg2Mf zXitGH#z+RBua*NipGb2(OawE;KtId*r&@!bZ8%pa1ZB2n`Nq&MRDDVc2ob0UY9fTB zj*u0$+wGN(A;NY5YO;XksFAH^y$PCo;Rvz#LtFA&Nd8EFOzPA_u@{`1mxz$u_>K@lVl6RlnU+_d=^fA!cP&w`0YgEr`{ldzMhc;ly&n*skL7N!hk6NjM$8U zf4vDrz=Hk-OrE}dU93C7IP>_f`6q0kk8@41eE`%>zO;eG3r4ZVomn9T}}*F}^* zX%IsS3AovzdlE#Tfq9U3yWK7ImzU7#qdmyMetCJB!1EJ%Eq<$3%_; zpal7+y~mRN%fw{8AH$OWxS>)AVj4|m37+S>fAcK>k`*wK0jP-(L81&qP$|n`Bc$Nr zVS6{sdqDH;aFYQ_T=OXnluvp#_dA_`MJ!@n%w<<1Gj7Cyos8sC%4)I_ z#}auhg!$LyERjn!a{|pYh$0H(JZ4~03H}5G4+8sS3k-HqwcvYu)4R2r#=X0H)9Kx5 zFnv#>Y%-bL3!{1cj(alwKl&Md2fq(+05(7pi#w7*sCOl)0MxjW3_XIea$zy6W|51i z#2@piB-aK6!A!h>*)&mR149b}MxI!ndKT6$xE5BUwc+qhi#t1$dpkQjvupqFJH-fq z_KFcO!8ih;Mi|M)CNXdb=zx8}00Z-qdqVxpiPbXuPV$>%xz6p6H0D_$ojqV)JMjM5 z27I^$n1IFCqL~HNVi$`)T*S7vF2-*6wM*UC2J3d0bj|k!4qamc4cB50Kq8Q76d3d# zV2;bN$Av2a5R6tB^TD&moB~?9M?}GP{K9>kdTHR#R}I67B(in*sup3|#{T z3j`LQ#noc#dcWPS?dHr*1v3TZ$GoSxp{7F_PwpGKMViyMl$Q%_$ z*+Di`jvocX1rT@|p>NL!76`3Y>mV?M7F7#;ZcU5N=xt+T!<)XZ-|-DQI|rj~0S>@s z-3zQC)B7a0@h${Q$>naoVAv#6*Yxmt-+uMLZPrU_!140@Q>+9=`-t@cQv#GyXm{`NcA%N9pG6bF&fLJK( zON+XS=EfH1%G`&a`;WJ!F|#Ww?x!?jv7e1~Bl*fb`a3d9Jcf7UI`nBYxs zTHJDR!0ztud&C9;03fh74*(tr77S}^YmD|XvP|R& zmT)ZW-AAggGrN;5X9rcTQt829bL^yxAlOQ13D7Sz@m*X{`6se*AcuI0N7c$N*cT6}n(VR9Avb0?n9^<7phU*C2ZwCO-U*75VjGFL}3s`Nd}}1Ax6Q0Rh+8GvRw* zuJWC<`{zl~Y?3j02-u8-G3^QWZ^4U%vhy%GIV0VKfGUN8$w- z!Nv*#1A(FppDlWBHiw5HTljDlm%w!#2v{5lm~vc)_hOGcbVEvQT#=KJ&HgY05fSwpNvsOw{tT}`!CJ`VsG-}4~gdU<)7*Z;b+QyVwM76H6uBV;6~r81v|EG(3#rnWE! zDCYE-EL6%i^0%>Q){|GOH74i>+3`U>6XduD z0Du7ojMvYsg}4Gx2+W9I)`d_%5koR3l<+N6*xJW}Yt@^#Ny%F_AS&&Y@@b}TaCMC= z_U2#*+yq4=rD`^vRMf7?6f0M&T+Gg*N z=+o2FRoxF+h?T#|KB$EdTlu0`Jiv^rm@%Cw)z5-ubW$f#vDl|ABb3@4swiTd^A#@#4pv&2z^7e6?X4;l{7eB-rTR=U4 zK!KD$)x-!8nkWIHHW&yDpIs$mz&r@@*`d07aO@BTgY53zyE6T)4-CS+9Rdon4+jca zD#-Nlgm2nSoLf;E4_4`xiuXtwMEWl2m^3Yuo3JXREmeydPEX%73%m{w$7{XbqYb%= zsGyY31ld_b$_@_?&%gZ3zx@3BzyJGZ<7hPUE`iqofDr=_jDN0s(>;nQtav3;ETw8L z@dRq76|63F3RCM45S;r+Jm6ecYphM3hLUQMg&AlhwS5f)Mr0L~g>~ah0ZL;xQ-ZsEw4Pa~xmysI^Wbev~)hwVXpJsY@VN2OQZqNiMy+mgi7jZ+c z*AqMZ`Mel`5hlot5pvi;OaK_7U%?H=fRF`>J9oqqy$wJ?=0V*#G6tnodW ztcl+RmMdBG_fV<{WN0>yv**MBVq#M4hdZDRw>F223?rvLYc&d$!Z#1eWCpyR|&$jdc^d1$iqi&T<8(=!u z;bIBD@dr?NH_tjI-9?qAOus{$KPs0IYm()SQ_Ul801&!y(Il=yfY9XBYOS`*8meUu zaX^#Xu-39U>AF= zk;Z{Qmi0*jr2%F9loJ6W-WG={X(ei0#pE6DxKz%b7Op}Q0T?tn+uM5|DsvGDAY=d{ z&IF9!_V@RrzlTht-|v^k3Elt!cI(zH{q4_(B@|B(U`~rv^tDc#AO(#v1b|?aSs>(` z_dQp(PPz*R2)7+yLX>eAu!9A|+g>hONr2i9lOZs)T9fVd&CMVAI5UPaKmY=7rRri} zE(MQ1m=qZNVgm*io-t|ygY53&;5Sb|g(ZNiIHwBGr)J74(vPS-#q%Q`_*1``-Moz9FM8l%xpV29s#Swj{GOpK5P2o~Lg zz>c^B0pOkQe5b}38|MrWz=SctsEOAI0YFr1q&k*)(8p^3RGVeMPu|xGn z+tleKfWeo!edCMXDE*P>4rCUhL)1v6TnZ%hgy=~r0Pz>m^fA8-T?z;XfXX^T0sz^p zfZe=#Q{%tuo=3rmC6KjIFcoikvC7916ulPA0VS5r%eVT)8KP`Um^~fsDyB3?=7lI? z2MY!@m`bbn45252*g+Fh9}af|5T1h#a*Iyx>5l^qE_ETOo{yA1?A_IBVl z1O^*edeu@1!9t1K@K##lw&xtVHv1<6N}p;%Z^RFXPy~~@@#)N6w6}Izt!=SGw|llX z4+y$u;XhtL#Kfeui%4b*)q&u^AnTr;?djfIVGdvkxecY`w&hMN%Z6eAK^y@nWW*4* z*j4G!5KkFpn{Pm!3`DXY5&ePqfx14~g>DRn5GA5YDs~tZ?9l0)?9Ty2Y5IssMRZ>* zc(f#qWdw|}N?`CH@D>((1_**n1=s?FOmiiM(A;_D(n{Gr(}>F0kM!3!2&||obFkG7(RTs zYc&aFV8ju=zCos8k1=Au3w;v)m}SfME{IGsMC^OMdbVI1VahTLv4iiGq%}@Aycei( zGIJM?XYS%G_|kTJQVT)le^?OMYuk{*7zq-ifXIvulB2h@Yrv8~!1V8b)t*dhVn?y0 z=0Y)*QgH#oid37_Hca|Sy@O4ks6=pB4hR@wUTolBI|ksj8%u$}D1$xzP!GXDw>xtiNySxR%S1D^-j|93i(s zU@6to_FH;^3NR2qSW9V5Q9z`|m~0IoB$q1Xkr6}aO|p%j41=wBr$&EJG%bo0RURE( z0Ae(Hcn~_JzBmE~0Fa|0!~v0?J_3Ze#hHNDQ8vJ?UAuCTFYcx8j zHJjs{F6M}ikO>HYkTfl<#<`5Zm~st(fYD#qYRz%0H9F9}lWCw@Qr8fxB2d}XQxBco zGbi0qSdL+(cN9yx4J2#?DrIMyL;5Xk zIouxS?1M@Rh};js&l0EXCSJ@3l$5+tDP?v8&Z*gaBRcd9A?noA(my*p3US0wmVv>6 zAPW%s-X~&T{ncL`1A?_2FaQVv@Vj;Bi5>zm#8HuHXijVlp@(Qau!BuKQ7nleXwi=X z!u3{aOaznphmQF^N*P=HJs{*Rd<}!nYBY%b8AH5&Yo<_6r%wqG3Mloo=&8~6y&NV; zq>=#Qllt}D-~HWLfG~@m1cPjA>#5g^4Ry}~gyw)kmjEG_01!0b5>#3(!m5=E1`ruX z1*A_0O7z+#L19HH1QFkEZvjDv6e%YvB?T>F2r+~vsoR}278jTP%7G!b7vWP4h$sk3 z+=DX#<@#UOd%e2AFNV;=pgE}5hfgrXn2v1A5K@5?^0nK|m2?@|8bsuW+~%Cv?rs24 zN0f>Jf_)ca2t+AOg7kdL5CX*7+U93gUFp%J@rqMo1PJ^*A#JF%7 zbXN-yh*FvqF@z>blXZMNZr;1M^w(zLv#XC^`?X(t{ypFGJ*B26zRUywd;Qk8zBM~W z00dXAT#*3;zW3Z=xHo|wK!_btD**&*B|#-FBU#Td2aC9mo=oZx?sXaznEl|d9EOl_ zJdjXK+R5P`x;b2ia&5T`O@aVHmH|VwN269?iO-s|zo9gHs9uFkr;pys7y%G48gPXB zSp0H@z|$; z9~TVKFbpAg;j;|-PVK2PumgZdDU}PZ1TOQ7K3BSS*Z%zKsB~?cYXt^6de9*R2!ts` z%whbHRH{|ZGY2TM8+82U z9L_|tN~KJD3vd~<&an@JUWgeWI&nbsdMBNwrIqjVU?`E5v)I5CnQV}lqaiTP1%jS0 zuJ7Er_l>=ila5#qmq84nhXEaeo`^?}E~M*I<1z>;`IH~Z-!APm#{{^vGZ{m~zse3C zi`Fu{+u+Pe8f5se5*R{&kjsemQo<0;;qXwCrAbp9(eIxg2YT%W*YQ&s?jhGLWGRbI zSI7YYKwy;V@BCBwqKDS!Y}S#vV*q0P5E?H|w5P$=w%4QmB-A7&HfZIOHy*)2NoARzr>*vInW#(`76m_y}v?Wb4lq#d6EvN%$W|^3fm@uXsM3xeZO4;s^l(x6v6-dwY9_Z@&d7(rl2OK6+q8Qpd_b z01RQD>f4V;_xpP9x(5MVuCN~5h3=8~fzE4WYf9gAUTf}rPbKqA=QSEc>P&2F4h;Ej z!)F35Sm0yW+O~$J+MUJ-2V37!8>l< zy8T}c0F`PDTvrGdQ-Na)4FA2eUw>75a5m8Umdn#Uh#e55a2EoEO*u6uh*EW$Y>U!2 z41v}|{IGEOOl)>;`IG5nnRN`lTvsk;^$6SsNQ`aNA@vj>6i3)ItLsLw)Xj?}Xu~It z(32z4M!uG8LlJr-AnWLO)Nh9$?)N97JNNGWOePqz0f3bNfYBQPNE;a90#TlAez1Lc(+!2_pLj3ek+3!uv{HMHV+J{UjE(IZtdN@@pL>0U=WMxJqo~L zHrT;u7wpMUU~Tty+8PG&17~7;$y)kPOq9Z0lPwmFAG1%xkAD#BD<7K_V+d4Bd%``N zb?ojffucn_{#0&5!KKk8PGJdw;{Gh-&_oZ!62SzDfQfNucy_Y9y8cySi^^hB+%04P z;o9E?(d>)5qtQgb)O!&-$W;gs64eMM6+3t_3P7+Q<5CTyZn6s#OiJTfSm59gw`ZLncSlt}lKSb}o+k`U zU?6r7AlSmEx{knLdm#9X4VzscS(^jM3?Sm{VE5?ed{|EQC-=Iu2BLwb^a$IIFZ1VF z%Y1ODKuQXo{3x!2E^N`OCXC&m$Erh2q~KslpYC1=eQ2h zu%12}WC9BLaV?aXVi*=JEYw-ZNbc{}>Tg_G+x)ViVSMbyjaz?o?E)k(JRv4sz4~JK z{{LLRe)D%i{ozONEiHXb_}MqL!|xb`-z6Ic(CKew_qbAyRNT{;M3TdL)4K7fKB@|$aDUOO>2`PUtMV-vUFopcO77fM_Fl4>){i&=Kkkbp+ z9i2UBnUQM&0MpOucL-$qeFB31M&HB?dJl3Fig92DFG5k->?hcP{s-$S=(6_50C+%9 z%t{87C3`WlTt*TQ1^Qy=RI*tFP}I#im9{Nkff7R1*rlLy9kkZbC!vWXz!WHyb;vhs z;+4{k!`e!tko(Y+szuU*$r=SH8euU3#-IR4e^M-Xdl0Ut_xlC_7dDsyp<#f~EPx;r zD=FL2-)$7kfB;2Sfe0l)oD?F||C4qWNOB}W5L~+#95XZX1N4dekDh+x>h-diP=UxS zt#=k%Q_+!836-*g?f;${W4e2Olu(RdS{yhAYj^uzGlbVwbb8yyH-6#6bB({}#+{Mu zy0V|fC9I-y90J=bL1CRlyAEg;k!b{zr;a!LGoqL`cg{i>+Gc@di=Te~_g5JMU|it% z1#mobCxQfka8-NwF(80tbPuf;UrJ-^WOUatj)Rgg+R^!UYQ35+Ktv!FKd$Pzqdx({3j zZ@iUNneSkcSgh0*0s~`lS!@h|xH|zbxEj8$U`!wwW8n9q7hnYhB<@Q$!95wC77WH5 zbQLgzQArzeVjh==md*|c5fGPF0}LY&HLs!c>5td`o9;MTSnMc8hS&zG1Vr|GdS0bR z40Wv~KGSkBa~xSw)gqHOI*V~x2waG|0$}Ziep0)ON){uW1f{l3 zYHiq~163e&8OjFL$rPS*pz9coz_ATYk;#4?P(Zo2pBuRjtE+e_0R>Efx(66vha17i zV=SuRXj2yenxFmr?Pg#EepdIu?*njFKfzFdl6&A@zItQ^fGZem!a+A=04jwfOqqqW z4yVIbvph*GCOfPtEx(?m;x{mp3uBeM74&CEm-*Y=j-zq0Iq*V%G^=p z_R{24G6Uv7wj3aDR`cTkLjxi~(QSLDX}`Oj@Xj()a7+ON9em<+?*iRemnCkjww7?}ByWB|927(a_^00K{+TL1`kg{^=X3#RDgiDpN_!m_}Iz%ds+U-NzboFKqt z1Q;nudH1}=ujjjTAV8$4Yylyk?%5t08K`6nHl~LO2EQnaUt)1LNfAev& zj@KtopAKggUDBOiQH_oQi8$j z&)@-@}bvH>R81cF+Izb!LZ8)%1ld6r zeX`IFcR7p6F~*0=s6+1R@Woj<9X9@WvIG-;Cvl04UMeuHnV3!Y%^9AEF5bvbKXvzU z^@V0KOc!Eg^R_}H#_;E3iwZb+sxd)AeuR1p7Tv21;EsXs7YKmBxPm~y6p!cyBaqpW zhuPY%h&0jHy1|(kT#ZOpzT&0EJfGrB=g@V7Vk127Tt^&istJl7-Kd^OrZ7$3Bbam_ zP_0EZ9EogS2S)h37J$OD8AjsMV z?v?v?Yl&Xyi8;B&lobF(ho?KE`B1u{Sz=cZv$NCIa>@|C?wiqIz+mpwNv73J0<% zKGhl4Y`Un!zWQo>%%XcWm?Q&e76fAn1X;mj1PwTO;Alo5Go6hoB4vizC}&Mp&^FP@ zY^&JSyu4g+D(yr&o!c1Jnu3qReP{y05_21U+J)pUM8PRN=P7sCC!hTIj5&CcvD6$c zu5N~_;6V$x@EYs`2n2#6*E$C8LHD3ma9b%DbQ5ZZj6@oZq|iuam~~>w#4|7$huAUy z_T$wz99qUZZXrvwmB^fH3U(is@Vf^W6!_WoHr3**9u!1(xmvwJ%6qRD(q_ z3IOr*>Jk8DX*>oHj3*d+hN*}+3IxxSoUsCy0@7gJyx}ImFq!L}R_n1`!($8IPJNyP zN?*%&^$law1|RHU5xkNyKAx}zpy26a0qhF19#Pu1+uTvoKGiI$u>lvEIEVC~ngEjt zXhW0<0H8YuMXx}}_(FmqcM_|h6Fn{hAr24Qo*8wTn|8Lt+|J!~mt%LnQ{Hf~gtNK^ zQ+VxqOxZ#M7=S|2*;~}!rl!u|%3`vpm<+-d@VG1RnkExqDHNL#EQl2dxr@kp$UJOx zCLnV+Q7w7#aAh88lV*s2uM3LP9(MjSp>|~ot<&Uf9jBlpY34@k8NFD;BL_H`4xGl;{&qEpYi%Ft_1*op5T(;6NtJ7?#0F=;|qBvwLo9hHW;@lG5&@oC=Ow2 z*XJN84-LO3R?tGdZtElfhaXP_X8wm`yx>f1USi8|cjiDkZlOurnr=mE7aT6MjDr1N z-I?gN62efFPw%Hcp}f;NXRz+Ldyy>2I?DKZH-z`_7l|;Q&=INt00dPV5Kf}uUcmqu zbZVUZ1(}FV+|%nW?vy@o%Ut+uMp5^=!kcjD>B4k808&74N^vvS8VL56PHr4e&c(E! z!3=Q_JCVwsO=uY&lMAVPBsg9e!ZgtC_8LL_2Qjn2tMf@mR#n>%1_~e|OwMUdgah;UpW0)xFk5H?S1BPt zKuGCA73t`chOmjS@Of>1=GMsEJ_m)ecyqo4vzuz%Ov4Xmtvw!Siw+n_9mSx{2nYtz zhE^R>vruPhOO0$S^u-2@Cco%MJ=)b%E8`6e?G29p)_nsArTW1^}?+Vj>{$wzMx_?<(K(;v6d-fmk;dL!72dIvhKW24O~nKsbIx zF|4cfqXBr%AizH$3yW!hoy6tpA zwyme8o0{pw0VTd?rr8A3!n%6@mBG{&SOY4w5wja#9YUUVRh>?Fff_-{+wbNMWDF95 z`N+i(y^on85Ip8UMPoe3X5{2}GTYav%!H~RQV9*?*NAk`1SXpWv;z5sY7$?h9a(P^ zy64VOk9CMF*fR~0auU&}006jxxnv<*O_A~pITJk`N%crG^xmyo@0t#7=yHlKP8gu*GzLx^%p$KL z+s+KLS-X+v`Ln$Sz!b0+s8y+aGn0)b5R-$D1xgwvj_4;qxz29T#KPFMKal5ib8*Pz zbGT9nV5)8Bu~mE^q63Hn##<0TYHk4;?D*3Glsu(aKY>V<+{G4 zNxlc_SP@D?N9p!+>nRMbdmxJR*GQqOMwWHM%%-bdW+Uv_?wI}QfXH9ghn+XWRx^He zngZe`yTR9;TMq5aRQo06Gn${julxR`>!)mE=y;FqZ&M-t676t$KAQkj_9;wmBDJq! zG6Rw7g^Kt4DxhF;!(7j-Lj=HY@NXr=oHw=%0kS@GO#KGGK5Ezq4pO+`%x>JV&Gy^^ zi`V_VzHSpf=4c>?hVjtR&o>caOjJ<_c~ZWe^*Czj!df+>7IO0E8tpXB-tCHTvg<*B z{9REH+xLF;h+(N{g61LMc+MeOf0(;oGXPGW|MF)-ond+(QibyF{rF}eWTs3u4-dTN z*gMF3g0q^o$#>WD_r|bqBDup>`9Xv94~)qV=~e&CJfsdFQAn`|6F8O7hJvJz9K|S* zKQ$&5wmTI%&p}cbBPGBF=BG=;x7TcvMdQL?(wd`k_D_#VmCfrUF;>exBeMMtPTM#O zJ7_zcB#h>puz%y2gp>*Wb2Xep(iFi=O+wNDGp1*te4?N5^QI&-JA26!Kz)YBN+xZ_ z2b*J&Naa|kAHhS;#VnQ`!)ao002ovPDHLkV1gk7 B&ZqzY literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadgeDark.imageset/Contents.json b/ios/Images.xcassets/badges/lineaBadgeDark.imageset/Contents.json new file mode 100644 index 00000000000..18b85aa99d7 --- /dev/null +++ b/ios/Images.xcassets/badges/lineaBadgeDark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "lineaBadgeDark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "lineaBadgeDark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "lineaBadgeDark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/lineaBadgeDark.imageset/lineaBadgeDark.png b/ios/Images.xcassets/badges/lineaBadgeDark.imageset/lineaBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa46075d00de33b041352907da47fda5a5484de GIT binary patch literal 1862 zcmV-M2f6r(P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG+{U|qsK-Mkg}fC~U|j~U~$tu{2)oLEk%H^-22d4S^*FoOAX z4AWPCSOc zqarJ_idey5K%E@G**D_XL_jD0px;Ts{PS^yyk< z7v5m!6E+L$>Ea&M*ghf-{ zTfZ~>wQ5CQ2pXBL43o}Vv6t1t%hr31?)huh>E0s zj!g74)&6_|Ut_R}?4SecyI_hTa>P(D9e2e8x+p*}6CMWB=p#a@^8|dg z1vN-KYsCT!3M^e6o zV0CPT!RF9C%qR#Bj|Tr}rd#b(Mo)^KXzwu4p3#BdvFbO`kYE@vwEGmzD$=n=fm4pL z65KdfC|$fdRj3H}5gd*{aG+6O{-{#$z9YX1s#r7jmfa2K4Q~!g^=8nv_lmpeEklZz z=2hJI>bRZXY}(M~#0VhZxWdF=!n(8LzUp*P+iQ!ru;Z@#OTi?r2%ZK!PuO{w&13V$ zsR4utra}D1TXi?F*MGSGr-h{c#cj?Ww!9TI7@^G5I)Vpwo)&LbJ{~SQf|zoeLs|q& zSi`m)Y)AT!9{BvgPX_xZzUaNwKgZd3x3TUm2UE5*$IyyL$0lLL8al$$yJUBKuF*qsjCvem`A`jcahWd?7L&NX-&Kg4cExH1Rg^W$fdF(eJdJDVQ zcMdy;aTtf3J!e@Lag33CT}#1=EGrVl!qHZSaI7c*MQfvI((0P%A`xGCQV6V!#br{YIiZ|q@GZ9@ z>soAIstG5W?b7+KVkAgaLKdfl!h^dnZmp9}{mwbommaEmDHOQbd;&*+km9vU6f{2f zt%;!Dh0s~E%BSkSBD%Y5=`~ibuu?t2{a1KB7ytkQ0TkVT>-e&be;G;C0IkpO<@ru^ zDJD|O%ZMidNrX`9zUOOi63zyeU|9OEgO0G_lh9V}_A#UO$E*T|CTe~{0xH|r?*^We zJCq2*P1F9BRFC?6%lQ3^CIyuHRr^%zA^r;-00_K!N(udkp8x;=07*qoM6N<$f<#V* Ay8r+H literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadgeDark.imageset/lineaBadgeDark@2x.png b/ios/Images.xcassets/badges/lineaBadgeDark.imageset/lineaBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..152eb8d61772daf29b92c3ca58d2f00beb3d6e13 GIT binary patch literal 4617 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadgeDark.imageset/lineaBadgeDark@3x.png b/ios/Images.xcassets/badges/lineaBadgeDark.imageset/lineaBadgeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a58ff5b93acb96e0741cca23a67747fecf54669b GIT binary patch literal 8570 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 AFaQ7m literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadgeLarge.imageset/Contents.json b/ios/Images.xcassets/badges/lineaBadgeLarge.imageset/Contents.json new file mode 100644 index 00000000000..ed3cb5016ee --- /dev/null +++ b/ios/Images.xcassets/badges/lineaBadgeLarge.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "lineaBadgeLarge.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "lineaBadgeLarge@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "lineaBadgeLarge@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/lineaBadgeLarge.imageset/lineaBadgeLarge.png b/ios/Images.xcassets/badges/lineaBadgeLarge.imageset/lineaBadgeLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..93a23a923477cf9ba5b718d606268aa45f2cdbca GIT binary patch literal 4208 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/Contents.json b/ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/Contents.json new file mode 100644 index 00000000000..0a56a80d868 --- /dev/null +++ b/ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "lineaBadgeLargeDark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "lineaBadgeLargeDark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "lineaBadgeLargeDark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/lineaBadgeLargeDark.png b/ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/lineaBadgeLargeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..f463c5abcc7c9312a5f5966f474704c11ec7ae31 GIT binary patch literal 3057 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/lineaBadgeLargeDark@2x.png b/ios/Images.xcassets/badges/lineaBadgeLargeDark.imageset/lineaBadgeLargeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f417f8f1f1608d67edbe8acc7794158a83c683eb GIT binary patch literal 8225 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
    J^iNq55 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/Contents.json b/ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/Contents.json new file mode 100644 index 00000000000..1e5565d1c2c --- /dev/null +++ b/ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "lineaBadgeNoShadow.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "lineaBadgeNoShadow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "lineaBadgeNoShadow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/lineaBadgeNoShadow.png b/ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/lineaBadgeNoShadow.png new file mode 100644 index 0000000000000000000000000000000000000000..1af3c5fd42da4170617e965fcd14871cd69e2293 GIT binary patch literal 769 zcmV+c1OEJpP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGnGhZsObA84S}o13 z>)z^9E$hyv6U0#xnGgYj)KC1&m3nj@W>n$BBQ9LyEGvawEBk~p=_u`&1$yu@ec4ec zD=oCUGrE7t%TzteL%l_sXq`_N%y0x{s{ineM>Lg&QqLS`;{I6fke2cdn;k1FHPqs9 zAsNa?03HV;zF63%OnycMC+&dX5SW;8fj#O~R4is(;AVw|2Q-MPlvO8Xj0)5_;{d?@ zoLnZQaiMKmgBklQ%*rLDh+;Y_G!vD1cMrhbSf)xD1r)|lH)86_E++FklJmB3Ieyxy zXPkj8e2{nL4NsH{EaZ$#rhZ<9GTzMFRIRMYrA(*RQ<)S;a)B!KSD8=om3OBu3rJ5E zr*v5`s`Bzk&*WTIrEpnDa;aF|NFuQ~vgZ5&6m4KtI?=&500000NkvXXu0mjfaHv`L literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/lineaBadgeNoShadow@2x.png b/ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/lineaBadgeNoShadow@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cddfa99c67f87af97b23e34271eba193ee88d30e GIT binary patch literal 1185 zcmV;S1YY}zP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG?H-aFDj&e$?=#&H$TvoQcdq-w3;NNbYz{(Ux z(I8VY+>EAYfREp-(J&YiF28+IbUKsqOC|?;gyb0<_)JMOKOtVS6Au9{8v$>7PTe;r zspgA^W_Bhge7$iL9WQ+>cpr`23NIF-&X;50M{o4CKmf}xz_L*L=%U8+u{@^gTo^d5PgB((6-HwKz#~**3B}HM8G02j*vPeJ%Py z@7f>M+TZpCazkRG{sZ%?2L+g&Be_Fko(sMWxKqP6mqCL;0yL|+VedIz=OKz7SJxL0v5BGe7@Q-HT{XAbYk$ywveM$N#anveZZ}_?lD0 zKi2+=aNf&43`D$^%XZiPbT$vN)WnNw*?#g3V#4{H_y-QG9}{RM2i&Qecm}E{S0Pyh;tUUCBv}a6?#%aI@C0JJ@$#a!w#-DcD)~A>or1n=p+m`78FUl4Z6Por?UpWlI^G(4a zXRsMGh@xhG>AdlsLk$227&226p4MBWXXAC%x}=5_x*!|OkN?m}{cEX0g2w9X1tX>o+0M=3(|C(o^eG;m+^q3$&Cyf;qHAF>esZRFip{Yms>Xp&$SuGn zf&tI;#YE<~Q+~^P2`5)@lym&4%qz+N$u-Ir&UWTgAjX zMJ8VYezutvmxWa!E~Gg&F)LTf-#IW02`~x(C%}MZN;-i`00000NkvXXu0mjf&}bsT literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/lineaBadgeNoShadow@3x.png b/ios/Images.xcassets/badges/lineaBadgeNoShadow.imageset/lineaBadgeNoShadow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..22007385103d19551558d8e0cf59ae18cedb5b77 GIT binary patch literal 1723 zcmV;s21NOZP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGVbjW10(gtxo_xw;Qc{=_rML8_<=)5>4(Qh^3;zvhDW2r$Gx`K^-?b#jnnIn znxmITw~hw=c)gUHy~YqgN)Ah!gVDSFE62P$_&=pr!5o}sKkYYhaK#u>7@l&NIhmAV z7l)UR>4Q0PAOeUOhQ!D5GPkeyTkqrs48;g3*F-Uqbn*DII1kyTDn+Z}ID4lvKD>+* z)t0R?LeD4`D8y3)l;>U>`xon+u3!p-^*~6O!GuyUyE&bZ=I0#w76u~}IDo+H+G?@C zf)vl!JFQ_9Qa{{~2&BTv*%@cIJ!dOduRJhtW~A86*?u@L=NJmJY!iVY)hP_Nh(H;~ zzFVU?yC-vi_>N)qX9>!l0SuBkfMA`>(cHbqhxPMB^Aa%9ynqS>%vRdA*xJmN~;0VRF??>s^^k6){C>tc8O-QrU=x88aL$r0_ zuuA*>oc>LDyiLEPZHZxQS~kXWh8i6v;J_gDx2b@DxNGnI z)BlEZ_9?Xil-4C{X?0ldpj$v}-SZ8spp0_Y-e>6*4Q(7>7bvWwdWBvZp!ygHh`Iog zTX+olaSYq6aR6C;((2dMp+`I(Vl?<>}+LDvplGRVuS)_TR0x1by-u8bPO?wfnVyzj5MUC#g-LR6sPaqrmAnUo(x3kzk0c%qp)_wR!WpV3S79pyM##SbM}z z!IK{Yf0l?=W)VoT86JgsM~rK2r80TygCHEK3XBZOoHooiAgy<$Hu`EWOJL|73a-z-i;k5?iYYbWcx!xB2(5f^ z((!61eFH_R;%g&038Qc+gROfa)sY4!(l^R!=$uO&OT(oO%*1W-m_fLzu{>C61mro_ zg3-}m94$4*n6gQ?I8oO#Vi<&53ojR%(3LwTwBd0Wh2iy5{u?P^6pVsV004^VU+80% RTPpwn002ovPDHLkV1o2>Hk1GW literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/sankBadgeDark.imageset/Contents.json b/ios/Images.xcassets/badges/sankBadgeDark.imageset/Contents.json new file mode 100644 index 00000000000..da70d3d22ef --- /dev/null +++ b/ios/Images.xcassets/badges/sankBadgeDark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "sankBadgeDark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "sankBadgeDark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "sankBadgeDark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/sankBadgeDark.imageset/sankBadgeDark.png b/ios/Images.xcassets/badges/sankBadgeDark.imageset/sankBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab341257ab0ad232f14751ef9fad2d41032018d GIT binary patch literal 3059 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 B>XiTh literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/sankBadgeDark.imageset/sankBadgeDark@2x.png b/ios/Images.xcassets/badges/sankBadgeDark.imageset/sankBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e5beded3f1f59107e548e0ae1c08fddbac2d89 GIT binary patch literal 8911 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

    rLo>fXMR1Y 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 JPDHLkV1iB3kAwgK literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/sanko.imageset/sanko@3x.png b/ios/Images.xcassets/badges/sanko.imageset/sanko@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c5c5e42e57514ea32b4bd6fbf354a6170bd6975a GIT binary patch literal 23754 zcmV)1K+V62P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG3BOTE}_39ZQM1EW?35}Gou#z z^-q5DeEuKIPZ#Ltpr6kSJOZ42+P1$cIN)k0XK9po|LjzJ&)Ke#Ys%19iuychKc@pv=c*h+_^q}z*av>LG;jtkS-WKZ%z*~PfGI*~ zX1j;^-a&UbN_+h%NjdbIQRp{@8xi)96;fE^Kb=J009s(|S8id;+u^)--a43&HV&XK zX5#v)zPu=}&WrO$)#SQvYHbX3{AmZh_CuVo{xIIz%lD7-{e%AIcBj`1K@p5C4ZNz} zasf5tRaVL-Yuu|kdx+Km+N>`z08QEI!*CF?hQ7?Q=^&P>kXM(@-S=j9-Oij%LtD3ZJMa78@bvuy*cpt{D5h|ga|SgebSYH8ro@vs!;97_>;~&|~zAi)nE;81MR&+X9Q7oYHQ1l=OvMgIc zcPr;0CCy?XFCUd}zd3pBrSpr2byX^m(33st0D-0%v^f93hsGcH=;+|62QR&~A|R`O z9sz~2TmYg@)?qwEepO86)Ite-+o;#dn@KN&iaw2aN16KP2oT9lhn~IiVq@k;OXZA@+T0P8kKPprA0%Grr8~Wr}eS z@IPCgDy52|0OD|l2RsaE)}` zdDe;7!w6?#QXYDXh?JT!PYDvzwrYA^yx8dTMqCR$1t(*LZpybS_g;_@qsF?RTAoY# zCJReKVvm?b65LDChANKg5_>9@cE$oo9|V6Ihfqo^s0pm?9b0LS#J8w;cjID=4D z6$V*Qu{yuFo~zdy`jQXpB*&afZ5Bl#OLr@?M>Yy*v&rYlsLNDz9;2LdW{|)*LWnaw zkaZu_T(wPsef2$PT#=(21ZUpv((D@;?hR>uSZf0iVCv>n1g zD2$-mu5C2b;qe6xmF?u=`#(JX#&=FW_ocn9oeY`%$V~lSVh~4bv0mG>UprNXE(_?X6xQyL(yQ z7k~ZR#~=R0xZ8^f!7zL8-5=Zg2WIKEW^EW8o@Ml}^d-zCOy7$dxl{BTnuBvs^-QPaei(D*4%z0JTH8Zaq znL{h1ahA^(*(*b?5U>fMC0~qZ$HX2K>I>HX(%6@|)GH^3IkSZVORVPwn8Es7K#9}9 zMDEpT46GW1UXdBW16lNtyeIMvgpgAF`XvAO_nr=)pWi%tHat4%cn!*RfSIK*mMBfk zA~tz}V8(cbWrdYsWu8J{=sMv^OTa5cExNVcXf}N*msslC_t~%JhZtJeD_Ct zKlrWvgS!pKrnisWMsG@~c&?Ldw8)?5>NxR(DlrcjJjwYo+nEQowfl7TzajYkEU~L1EAj?Y_zdOnHrn58ru$ z(){U1A7NRwd>>jqmsk^O44GU^FV6>I*mNC=K*|UJhAUkd>~l`@T)2+y_?G7)jA6A_ zQM5LH|3E_sESntMY5wqE-2d?VJH1VxQoKeOa4sP<09Fu|Ih>ylKT-PJz!A;!tT?&I ze;wCO=WJGZ3*~cYIU43f&-Wd$RZ?rLwKqe5C-fceMMOjRyYB6)|VrvJm=5a}WCDpvq=pw|5Qbk4F zzt;(SlEc^79%D-9Q}gWWk!?Gj_7ZG&G@K<#g2jzujP zH0-c$=Y@zCYpnlXfL^0aAHC827ygyQCvSIy(1w3#fB2{d#iICPUj4MhpM-_IxcS;K zWy^LJS%h6pYpNg##n{uPC5wJVgWUI1$Ocnzp0G(}J9UCBv{hSpitrj%dkz0#7OQj4_L5L9pyaH)lDXIUifrbz`Ym|TV zFC8x9WzS=`A~F0Ef7VfQa(ew6fX9}ry2_egpJBn71UaZkfR`w9R@lg{VcgTgTDUOA zaGuKZGjTS>rY^bA#0GoqbC4{~?2x_B;NJE5^yKt2$QMmhcwAe=bv?h3)_l@jj1R{H zcQTD<<&^{`O;k~4vaoq>=e+pMZ_Y-;VltaCg8jhxum7w6!FJq@{d-G?osNr}t66`i zp*3fiA^@>502oLRCe*Tw6WFbGSR`c}l}eevJD_ian>4-;5HLm>%xE$ zAap!Zzn(V!XXBJ^UZZJ!9z}{&ot@fF|E`DnlGTv0Pts1U z%`j5LiZ~G5gud?}%Yn}FA3LCFR;IB~O8*@JO)1*H+x+pra`?tOJ;!4Z{$YS21Yay7 zC9&g>tX!O@ue2G`fxZVZ+3at&dX~{;r%q~N-Dx!lZi=}xo#WJju`tt1P}{L~ z9y#4Tr`D|scr%J`ZpLMjZg%cA{EegIpI|V9BI(&KoFf(0hr{yv_;h|YxW3TSvB?#y zRN%0>lDgnZC?qvX;=C$kvWOYNMjIi-Y!)R+Vp(i7nm&JaHXSELrZ|V%hRE^vje0_=s(fsDT7WkIe8nP%VCLys&731LvDIEZPU@YKuVWSV6 z8V~@Zzz?=Pzk7K(Clclvb4+`qftbvmZ0`oZ-VE+cukqRG(AE{L1Xc|t@L(qAc~}&< z%2iPS03D3IvM^baX$>rDYpIv03(l3&Wmy#&S#mD^VkVJXdX*D)`Ud=JQBS>r@ zF$9EX^YNq{PqhWScH&3YZUwx;#kPQ7tZYc%>@52d5UV8JYBw4kZpn$H!6 z#Pi#jI7z0Y0+bkrnN4k8RZ4SUR$l}o$!m;w7&*KGjfOj!4glb-j_=k&+oSDP*zdNW zQH(NWAYv*EEk+1La5~A#LK^e812lvn46S!R-1yPIc-Y$v@E_`MMk$35=9MZlfl3Cj zjW|!9eSZ2opH^STa5`^}A*Zby*jS);!Z9btX;`P{ zuM3&FK0-iJLKQH|7;elwt)jf5mRD+oWo6qCAt_ZppBG%t3Vyx4ySce^Yi1isgSsuS zDm7M$AT24VER4dsSCncp%s5wn2_FT2VY4i9_d)CZ5BuG|jWJy7oU$nLJkN~QQt7-B ziIgf?=Jaj{xBS zakEmC=4lLU*1Eg*s1ddu>bS1cY<92}U{Ek>kV(_@BpRLr8q)p;Tkrj!So6E57jiT# zs*0ysa(;PvesRIMP(~JImE}b#Whq4*r}IS&Fe%Ck5vYJ(B(YFZD(-rAy-~NQ15_}& z20#DltJzE@nKA%EWRx(`RHZR@ZR_w(efOYYS@>^W_{SJ7z4-m_Y#-cfA&maCqa%d= zDC$7afI6sPJW&~^jBY%+zw^*h=syBlQD==cB8Pe$g!W!j7d zx*X0WDEIbz%%W1t*>u|Ov~w*nLJC7dot?eyJk3YL(R4Z&t>(sNA6nEBSKx=4zYR7jeJL}q&R#V`LLHDK?(ANSteBi{V%7r)=SQ=7kt zh-d0m6HGCfcSw$*@PTds9jFW!kHd^IqO=#DdorGtJ7>co!D zUEWBgTCKVQ!1f)^h2>ZueEXdx=3jhv{Q2ic5Zm>B_~fmvupVfok6u4pa$!5zee10^ z{5J6evb*1zTxUso6-T8pe?uH?+hnOM|L|Wt*xswH92dY_sc88>fS>|E0w{#!(^SpV zmmmM*o58C$zV}}H!99XUq?)*3?A0485qgwYgSk10c`QqSwZ%}Yh5Wiq`NipVbNBxA zeEj0H(y&P#i_xA|#wJU+T#BorsK)b%YaCRmQqZzJsUfAQO>)=cmX}yI{p#uB^RMQ4 zUKm*@1%1zHw_1*4Q;TpVPOmS^q6nDd`yR%qQLp)-r;XNT1(Z#yZ-4vn=~pMmug|ig z+Pk~^)_aGxXB#86hG{CY6i((| zSx0gz%kt$vlu~G58fTO-Tfo`#lkv%GJ|Au0-QRxmZRB5+@h@n38H8$@dY*E@O&QHj+~!gHqmM3s^=vM+*KHvi(W)F^Xb5&NMC0+I#tj!03%`!*y$67%*yGT;0qTvwE|E2&NY6g!Ou( z=DMEe`}1g_)VhXiF`F<5{HI@?Uti7Y-S)=z2F7}Hvsg@vJk>$a*x2ZCt%Fu$HoUT6 z*$6G>y9j~NB+U~3=Q=g{^HXh?EUVXd@3$P68l#1fRaqrz5r)JV2s8jG*Q%ltu}TbH zecJZDgM&x3=9h~Y0bW&x&+^fLgL®!!+hL`h9>XPe#a8$YXHj)Tz7I{(Xm6J3=x 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 Hu0mjf>I056 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/sankoBadgeLarge.imageset/sankoBadgeLarge@3x.png b/ios/Images.xcassets/badges/sankoBadgeLarge.imageset/sankoBadgeLarge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..897a700db31447b34457dd0d59e7fbca5b073def GIT binary patch literal 51551 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 Z{sWZ7iDqCo5u*SA002ovPDHLkV1icKIo<#O literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/Contents.json b/ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/Contents.json new file mode 100644 index 00000000000..3b1ea006654 --- /dev/null +++ b/ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "sankoBadgeNoShadow.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "sankoBadgeNoShadow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "sankoBadgeNoShadow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/sankoBadgeNoShadow.png b/ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/sankoBadgeNoShadow.png new file mode 100644 index 0000000000000000000000000000000000000000..b0b2c0385ac6b77152e1a4e8f49a88e14997faab GIT binary patch literal 1721 zcmV;q21fabP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG>BSO&-P9mX1E#wh=o$8QZpE+qTnbV{9`{V;tMI^V^p>T$|6Rsz2|& z-}wLDM54pLSZ*uZv(!d$c&UxNZs)qA%$;-3bKjQP$k+Vci!Zg7i8d_O_T{CQao5<+ z%*-@XQxi-~3_N_kt#2bGx`3s&^18p-&{A7PjK9l8I@$+?#U|6+b2WWWEL!|!|1S39w)#6Kpf$IEQ!osr*joszJ{aEhy?4Y{D30-vVd?+at zQ+qKUscR}*79YcT-B~==T|}LJmnwY^-h0onZjolupGl3puC=9)vC(nr3v@J`3Sm&Z zh0fyvT$5(dVboJCizdTA76-Fz?5*=zZm%HBwFq(Y9j+W{Vch~v-&}M2QSVct3z?dj zrmK0FdzX&UE8a+J+!n5#&Lb;P$*J5^Tu)8H);LZVFTPG@ z-MUk(S(r@p8ZTaY$BS3q_vPjHd@;93=Iu|S`RuDKRyrLa(X)URj>L+AbZzkVr`Yk8=v{{#ybai_08S9^!`3xeD9!e-_N_B zMexQ4@tB%qksp1JZL5x=bp!tU3z=`5OY*`4j74pu<5(zJ zK@kLObmnUlH{SZ#jW<4V=FLxB_~6q(!AJrNoV29)>DaRTD3NJpzxjg>nwg%Vxqb|J z(tYw$Z?kUo36$GiskyM0X{`%GvV-U@tww*;8*8%zyexSC&Ibp1`!jc*`7l&4luD#? z2@W>-)0Z#T{ooIZd`s6xbHgB4jx`bCr^m`Xi#k;jt-AG8=~h!wyoLh(N(>zvs5%xS zMBpaWV;k>%;mZ4_3Ct56!Fla@7COl8{t*nw_T;9P(bF}GzPJak1ErXmWuZwHGj%{z?R-a`4B6Z>)7+539`NbT$ zHP-ZFENd5fx`F+>E@EyP$8B*S)i*ZLZrn;!ftT^LeKsyRf}Nw}-Va`kc>1r_gk|=sHOp)jb#cKrIe)g6 zO^e3?1A8}JVb_|oEVh@kW$&p3@!594^S^NezPnN+U%yPGydtv7AKJ0{ zC_7eZaI%q1i5#VMOXkT#eM1VK`={u$uP@&U%ewK?x7W!ZnKS&2|Ca5yV6L3>ZIp(8 P00000NkvXXu0mjfP8(XM literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/sankoBadgeNoShadow@2x.png b/ios/Images.xcassets/badges/sankoBadgeNoShadow.imageset/sankoBadgeNoShadow@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..990e00a88b0ad1228ce69186cba4d90ca3adee6b GIT binary patch literal 4624 zcmV+r67TJaP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGVrebpvu)e9ZQHhOua!ll$s}WRPYcyu(*3jZ zTiNVqy=~TcPQB-nf9fAx|CHd5q(|TTYrCbCJ7cL_3Ua4VM4Obd4L}G{m6B;r-h?9e zDR3EZ*an41ky4;2f>;7l;@TnOM+)4sXOSZZm&q+O z01)u`Q-k~w0UmkpuRjlX{jC`vTi?OGAGCoTXZB(w5(osbjEJKMsl*V86%aS9U?#c% zjTNw1B7r^E&hmqAjx#r11DF*C6GJr?i>+A0W`TS%`o-;ruh07_7nIq3gZ31 z3r-*4v@PR)57@nCT?bEm_SuY%wS$a_rH_;f^@>Bz`6XfIIHHopO)b%0JeTb1gTzLJ zU)s&mL@&erooLwulc!9!%VCG1GRTWgLA#NkZ6Q6u0+jjK>a%U>^zyH1O-CvwOz^QGs^PG!T@ucUT zg=r=L@PZQa&37V}euY!HkuW*Q>ZZzu17${LEc~)UsPs{Hi>y`VP{Yee4zyskNGkpT zuK4v;c(%fx>!-Q)WGxi(HKecd@JDQB%l2NRj4yrEeZKa-KgdFlyyw>*F9n}lwWf_% zzwM5sO`SNFH0myOxu5*8kF!R$AU5}riaipGMWmCV)|KY!T#+`mqlOc(H$_k^adYj? zERq@BY!<$8J#7aaI@hnmKVBvHX%2U9gj?*OFfVA!oKLUTPcoUN zmXn0KPI@GVt-Iv&OSqoHOsPPrR%5AD!q;Qgt{dgLJ;$j#3i}Vt5P2EyaraFKMQNEh zR(<{L0$9mDJifit^R_<`x$D#bwi=b?~$A?O}c*;Fg*@hVlO=r?W ztNM7}2=!Ww01E5|IPZcXBoYAEb*WTc3i&F+so<#VC`-wKIg9Vy81dmB z*ZJAiRf;u*AO2#3H@)F!1hR{k^a$?U4IH{(oVk6&+&c96niP!-!x~6@_K0y#btO6Qwtg&#c zfHQG5J<0+{XC1D+X_=)$0VAuBZf~V`WQc6XF#D!-e(~Mkk-7Hg47X?4cicbF;kQVII$Y zkmMcTsB*NauzAfGp)c6GZyYzU@JaHny%8EAMidY#E|FA;LXdG1p}N?CgS10*y$#dU zsn;x!D%EP0%wR9bB!L#AD1sn}lDEu_X94T~1&~s<2?YQYRl#!uq9|f!a*p+@dbnw+ zyb^#*mbZMm#65TS@bXKlOc_}Y%uRD>F{JE6&ayDom?(}>Ly06tRW+ohAf!N5AdCbk z-~~-uGA33dV6cCbTCIuidw?Wqm}FBaQfUJXA+Fq0%bZqEEF}mO0$-t})ugMtgCK6A z=nA1w(GfJXG*?|?(d}B?C4Cdm7#-)c&ua4e`?hmlcbX0}B7+5*L{$w`siH>;D^0T! ztYmfNIbheTw6$c&j#Kbm(^Pausx6d!M>AVeH0xR-&YV`hOC(++1kq;TgLg=Gj+c7<`KUAtX4kvv_bB8 zPKM47lZ2T10I~^-~wI5PKVzKWf_{>9j_|1jlu$S0iLImUt{P^a!t)<#(*BJMUp*FM2P(dF3H^Yc?oLn>6zWw_ zI*~F-)%QsW4XfF}s=3%rAI;FLv-?`Br>+4RUk-5WP=Pp(&^3Xo`&@L%2wQiwad6)P z`}PzuO@m6V$fNJqfsB0yPBdvrrQ}t$<-LXWqqlT0|MlH#5#wJ`><{9@-@`SsN zqUtJ|rV)yW`NAUAW|`iOR(e}Abf!!)hRK?tRk)5vxmLrm1B9j=yX#$hol{##h`qo` z%Pb>=O0#)umJBYxY>wr!OHWT1wjGmS&JiFvUh5>a{SIW5Rx*W%V5dU!&L+Jnjh0Lb zb6XplRv|&aq}jkS=DF7$yO3%`6oh!8Ppn1MZJYVUMHX^%s0oGMwhny9p{=8hLdil( zNubFqf%udFz-6}<^7U8E;xq%=J5!`Gk_&eakjR)!P3O@x6&Y(JO_ROjH3~@swSO(0 zg)xM!qL^8n`5f+Wf|(hInYx1K=;Ri`8CcCiLDJFQM|*o0ecippp&*LDml99Ym@gE_ z7jg&@km^k0cpl9lz&3;5p4MnIMt-1Da=GS;8Dtz0_@F0DjHFJ}(y*O69bIW`+aWjK zzzIV9W`w>}M4MA_=Pb-s19%G|Nxhe}-$kY{Oz)8h-`++^3^13Qqg*c1s5~xbRB84H*$ttgl&C$7ZFQ3D3_R%EFK9u=i zkx_M8+FLM_Nn|YO>F&lfdPoqEiUe83z>E{*7AwTD#K|aM1gz5n0ICT2f!XOAKl}a! zt!b0As#40^baW=T`pV;s4)mdh(APi475id-ag&DEnnZ~-&eBFn`!2RWPm7bJx9?79 z=_J9(CJM1&LQNBe0cq7Fo5_+s31T&?w08C(rH-L%Y#1FN2p#H{OCfT~Tko>%v$tzb zY-rx=Z>@!2{CJ#lrGbj1y}gaeV>az=8FWR^)z*UNN38B2=9*hVZc$T+p);768fLoQ zgS~Al;W=YOt&>DT!3-lZ${K$7eHS5=l@+>TrA~lKYia|PhKH_b^kma?wq{wX6wy;U zaYlI`Fm<~CfNCV;H&n_lAARq2$W%;Qx5kF81}$wVteV2w4PA_kwBa~43bkIo@vVr- z+&KEWtu&fjSYE2(Hu5y9wX>B##zdNeW@PalgKDiz+;A93WZ1ZR zGnHDEAdHxFo0E@!%H7}hdoL|M;@)3FQJp6GxQ3Tv_l|@){nVzpP zv)sg%F%`Sc^4wA0`hrau>H^vB9`c8O%XO1o{Or0O78^~nW}4Pk1C%uNl0#cMgDN1Q z8}zreqee9vwu23R=cQwh0KWSNuZ4+CAqh-8*QZ=+5ZD1vc>D!C{t3Hy`O9~6 zmphH332Pyu6==)G$<)SU@&;5_Wi)F2mri_a3ECsB!sk zj?-v(1ns(GZt8#Hnpa-%O(6cGZ*V;7zTbEvar_2VSBD0NTG@Hl5a(YqM4@U?w+;5+ zlB0UK&J!*gBK2FxiN^dRV6iQ&TYx^WYImhRJv<<7uN(ZN_ zF|iC;oG;?K0dX8-CE`X!bKd*qZ$9a5fct0L435fOzEt``!8@k+)mJ<8K>e7;4v9|9KsV%w~Xi!$}5SAPGlVI=Qn zH~e$zj=$Xyil!?n0HKh0et;c@zQ}45nl65x9yBj|{zJB14p{s(NlK~QcoOKU>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGmtDepC`k2-8dS1`#c|9+|hgqNUDgRtZdV`lp$&5xE(TE$- zx`1GYe=E%bf(5i_3aL*?xVLL2P6Ex3H$X9zl<$7C7Q6&_2_Km5mFT-7OZ*G4@G%YO z3*PY8FNrii{O_O$Fr>gqm^ev`LLotE*dd*AKmr=H*7Q0){a(oSR*ykHBnU#nK%w=& zhh+$U6u9@J6VS5&W7!6&jLo4VBTP=`nB85ZJdz>dNNigmOd9|p1OQdpYthyJtG4C`2Ao6B+?dh2P@om+ZcNe z3{fg(ux$e&_%{!z(HcM_r9l`5L{WrkSs2nlYXt~=Kcw67IDck~Cmva5;Yy1}ZGci5 z00DoZtk|L!KI#B{-W&ern}HwES{DE^IfrAnP4co=&M-NZC6Tm{LZV_45(o$ag(M=- zK0+8MPh**yK)ZNim5eouA+s?crF0CSAcK* zNCJ8W&OM-S1SpnMy!7?6y!;h2E)BZunEvA&d|y)ew^aGLCB1!X{~Xj8AXFkG;02Pqtc z>0{<2u3u^K)_=Leg|pj4p#oUY7B79SkmLsg&cP#NeC@X%5D0>po7F{O$hHb5c} z|4a-=FtcZfFaNq@?3}G2O$mV30$;7tRsX{BwYMR=>nyGQ3pM8v`gV<+fIVu!%yO5J zl_sszZOmeTKXDy9-)D7xo|QB2Af0@Qa^)&7dg(!MdhER^3zU9QHmsB#v<%^4S zLW3(S4F+yNd)sBAl;gFpo#oJtmG?txw&gu8iNc2*(C5DXZ+`iin6vwaVZQM@Z)JEi z^S-pLQ3?<~m#cT-Mh{U4&!g5C5!5iv9usDQsm&zAX9K+Z&QP$SFh0!U1sltIA!n|x zv!l@A_-God-C*N-iW4g>w#@=(uCH_DYMTche1bRK^$`7D#EGY_6ZVswd~A``>s35A zpwrV7i#cBPn%x{a61zNTj%0=Z6CctT^m(uQ>o3uQKL+9=?;F1JHula90U99$p64;> zE0kU3iu+sWYpdK~?!d_@!W}yiL>TqQu~$t*PZFk6td3fo+S;NR-GVo8X?ydGHqxlo zBnj1Gp>~k@{xn`k;mHsyox<=<@O|>dJl#%*VmU)~t3jze#L-*FNDpTyr5!9Yq}J$&t zek57Q&VJAV$smR^BP87Uk|~ZJ9mkXa#Fi6=ihf@cHTzuohd0wY)1gqYPzNovbSchv zQ1feGln`MCts{c4&gGRldv?B#smc+OVw99K15uyyaF6ogm(v-(ovl`vnqTG0@;pNN zv zA2dLp`^LZe6b)YjaOn6LuX@8?Ov^+_f!1J}X6#}j0DXO)My<`BSHA(nDB@mg!Fova zo;K0_U9_I2zviPo2hC3QO}vzpDq;tUbS_6@rHAWgki&UMFH$)m>8d^(s~dE?U3?YM z34P97x=gRz<>HlV_@+cV2DjaDnC;CzPoG)D1;R-2;C-iPRc#I&m|=RVfRqr0>dtTa zio0L?K?8&mzYN43_)A~4i&8NO2m(LEbzQU)xS>LAY;pPIV;p+t`F4o{#Ai>DXnxc|Zx%ie3=X2{b3>=NTCurdzMk>Gts=i&C*fyQ#Qx^)d-%QY@7) zB2w;6z;#2CDH}s- z2E7iAW)iDpk*;jx)*dF+?@}6gI0P6ui_+`}X3C}-9OPO*&7MOAMkfnYtD|(h5qj=A zes>Lbu*PJ;BAL!m_hz~Oa*0g7f?3M4Qr+a@wJTg(T_cmqQW+^zZ`J8{d$^uQJL<8t zy3DyVOQ0Mw$ppPto11Q$#Yve|J1yo8Oi+kD0II9q@BHQ;{4DFa0*W&i@DhLnhetSg zphO&NG$c)vs3Y;)5@jY?TCO78Iy;Y!laKmvwF5Qqx>;6FZ{q0$fiLOW14{ctBFBJ) z$!4p~V~_UP+??jY^NK~io9yvp)W?qTmTN8->miB42phE~y;tJ&xB)e9hfMs|%bcYK`Gu%;LK1g_7-aE9^8I2Pf1(JhaiczXA91|$Og zDFCJ=x#NX9Vv7L*BEsuM44N*@ZONeJvboj5(V!Qv6DD^sNRFe%j?>Ri;+95OyV%9| z%B-wi;oO-gnVC7x{)0Am+?J!;?{Z>(o6A==>D$LxOupz};S_m#VH+6^*j``f(C!;} z^($UQWn=;=B!1xIBr{0MraU%E*L4|mx>$(>*=!zZT9k%U_<`hY@3=z05wK(D6wcJC`Ag#iMT5Ev-~ujZj0Nuvn|c1+@D+Jy2} z`ZX7C>^| zjzWbAwi_WAPF-T}WR5+%ilnmBXluY*-u^WAp14Zd%JRyWznDxW#gk7zg}^{Xk{b^k zVtRUtOg2NS*`hgc@q!@Es0cw6fFh*ZcUfQFKm`$gH>6YRQplC*Y&Q|M#l~ivz>msZ z+`EC*XXRpUn79$ZFa)!Eia3smCKgf%qAye1*VHK8@%_? z8o&7ak8$_A<~e<_PgmKvk;KmDxU${gEpL8`r_a0G`%sruc|WE$k?W^WOVwk%zwk==tN>}m5dbS;GCZ1k z|49RAq%`pciYFhtMBu~bcEEinx43xUGEd#}5UH%9AVc=;8f6gLY_@8crp@fm8I)zv z_C2PCDx?gHFaMHHX1Uqp58m?>cRzUe zv=y;BsA8BQks7eJzD&8CA&L~$YL&|?OUy4UaPHz2F4e0v`wbFFNn^W3DV?HRN&^rK zf}JZXIL|If$HRB1jHGcA*83VkgBXyIq*58i#zuMUk&~=1DFT_`(bWuT=VtsXZEoKa z@P?Un^tCp1Kf$F)vA(@d)AJERkP;?)W@kBb>MU26wy{mY-51&zZh^U>9!mEy4I7~p zXoX=(l=9F-u@#^UyvUrW6X)Rpr~SF^z2*`)ayfI=~WG(`MI1wlmM>-cTY_h>bH?3kR!kVy<>5MWa6 zW%=X3tn$zA-Q>38DZc7;U5@YW&~baL3?eF-A$E<<2d zz^^^hK}j211<24vYd5wK&+nqNOAv;!MM)VVM8JA&10NsDvPdKn2n5S3>vTFDR@OGS zwy+$>%}%d_DKhkS80q{%OJ|>LnvVgc(k6x}5CXcLUJNOp&*Hf*iL{CD zDr}*!%>=GHAk;oiKF3?`U#DC3Id*uIPkTv%s%mh0&0^<)B%A94R@S?0Zf~%2*9?p6 z%Q%*SA8NEz1V#os3ULE3wl2 zN@P%4(Q0>b9Eb8yDK0Pzg&_nA%QSgL*H^c*&#jvm8gvXQ{^PTmJX#CVX`8)!cd@Zq z#YjX*LxHpjB8}Va6Kb0%n`U{@qrYKOa2xD#u5wHN0lsq2B0u-pHGcOyM)`~v>|#nQ zk_t2$J2d0p6Dp9{5K5#nFhYS)l1S?~NXP6D02qdhlCn}%hAS*CF3@aO>Giv$ zQYn%`q7;OBz|)UkKoXB@ct*92R^qtVNWQUVrhS-L{!HoMaA&uB&v=%@NHFh_pA_znJ?e_Z$#t0!J5{?~@W@V^Y zSzRa49tk^1CYQzc0-jNf?^yy`0OAHuDTQeYR1_hw@LZqOqos&5AQ(7-CQ&YdmB1d&Qt}qK^FX&7p_>5PTP~ibKoF<pcD9c5hKCx{}X(l~~RGCW$PZB)907z_}t0i0U| z57goka#a$Zxq{bf;SB}!W;S`_D>Hol?G>!n72M7y2t}lVIK~-+heYGBV7aFW%4G{&8-8;S38a8)PzRq#-edMi_mp zA&K{*ah|?KadD)9AN3#z&^sz9+o87(K`_8Cnruw@3~mEwcY{0kHu$_371&|+up)?C z1_eP70)k$zk7=0XvKbuHCX-ANr+=w24JYp2J8n0g8!fMHFmSy%a1RD9gT4W%X5NG(L?VXq1CvGm$qnbTw>kZW_8GA+t#!P8YWg)F}+^7b= zkMDal8Xn!Q4?t%y*xEN@H=i9K$pR3M9Ijt*GVJd!C%GHD`Bk7Kuta^ukwFMjzf z2`kS#-g1s+O;gBcXm>i`1$@@)hZ!4k@diG_=juS8;TEPF{X^I!^mSgHmyYP2U}`xU$4nZIe{SVQgp! zLr0Wz8S<$FrVv!hLyT62sa9(!BI=Dse8>pUQf{r=9de%)Ajk0T1>(MD;c5fli;&Wy zw(Syz8nnaZ3k}lAB8^5BB?6?*(d$HL(MM>77xW28AD(M_%sL5tB2*aj72;*l15V_=OAb7S}tO>-B7OvH4 z)(3zke&mg!JK~$Xz4skh@4N zwD9*>7QqKYNacvzB&9T4gC3QU^nK51Jp zs1U|RF~m;t?HP=kU|?ztvLyPN{@^OD9X5>(MYEHn+VXKk4zFdiyb;pMWoWg1mNtEa z$S^rI#pJ{!(^EUiB-7{!;zCe`L=qxtGLVXk*RFE$@)g!MmPjTfB4Lm$rf7Et0Q3x1 z{kBg#e$R6PlrY_2dFC3+$tO1$xISSJ#qmW5BQDy?!zq>)w+VwJ$y6FGd<;vIN+t3A zfO@?_5C(XrMj2^>b{}J_hp{BFmL+b#Lz5cz=oq1=349x+3{(hSFG=%4K(P^0yV#(c zeia+~5Xoec?M5>${8koM88lpMWnr2oT5F_m0GlwB=+MS6%(&Vf9UH^4d{$RBaR(s) zs^mNb3)Sa(E*86)*1Y8G$!)G&tj2eNgcMW<0fA>>r~2$aILSNTas}TbHht67acY$~ zbea)c>w?kQ2;pn2%?-5F1o*W2KBbX7W_bcxw=uRmB#K#X5XY%?=a~qm$u>dP+gNjV zP|jyry#63pmamWwb=+v$j?Ki_9yGAtuH$(flqWHaGzMTw9mC1z^Kk{9Oqr~$HDZwU z!2AFI_TK@*=X@@v1wRVV?YKO6&q93uWLg4Y1o5D1yShnb%;8mUoMzXqGGF=yx1s%B ze1C9aVuVKD;@AHC4EH|Zvbxbjl}qT&7Ky-yq~^l4H3$ghH~Gb%p{|=Q3_kT zN%d}G*m)IWOrzchEQU%YQpq&iwGFgZC@hRfVECY2!cJhrymapBtwebOW8-v_!M0HFVDMfbexDsCqrYgsr-QeWSq-*S;8$zJ~xRrrYW>H@$9_dZzHU*2y;r=Qy7p7&m*?|TTX7#%8s)+}H5Xg3{7 zLk=qP*|oDwr96VxMm##58k?Zo)x775#Rch;n7xT^;s}>dhRm-^dZj6PM`rMDJ&HNG zN|5Lwvqf6Su4Zh(|dU8$u3%%@nlg7LA~B2lh2dNHXTgpT-9Aw<)2L+*LYRjyyJW8@{;f$6^d-0&Fd*;mr^4{-KUn}o`ePyzU> zn9&kR&%g{i^jfER@5A>)B8v`;I52A=>4ZK$;P*`$RgdAJGTU3*I9;Ezw3)DrWV0p0 zXu!Z9#D$?YC0Bagr@re8kKV=qK?eVKHMNkQK)l9vgLuhg&kZHA*#y3?$rVFVDGT4T za1u#+y?z|LbNLF(i%Xs#0*}VvT?NtF!T3D4qa%4vR~RjP1}IJ~T$w z5!BcE@iFww$TaCphIBefqy;Ch7x>dZw>W=NvrzwiDwPcTCtgFp8lc-Di^~nxw@;Ez zWqIH|XL##7wn-)Tap`;=*UvJs^C-FEE_&@G!-ZJ}y@>um5k>)8>ln`N$qDi)n?ZL2 zci<9#d^*MS{*mwcehf(W5D!uiDD^3HdmrtPV>Yg zR~a-yUUltBi&ohwb_7Cxbm+j$({UcmFxk0&@r95Qww!7xpT1nzs-FQh(W^K-$ zxklSxrNy18C3CX9v@gOgF$zJk#3xDAAwl~dl{`5MX)&Q+_ z+^kkJ`Yqq|jj#D?VD%%i4yCmgU-T(|_v>M(z8=7F4CeL?bMqZLsf-j!W=wiLmziBj zE}Zsw;<0rO931DJ_s?_r>=Ix8;y$l9e2J)~X{SIIqoqI_8YL7cm$W0O4CPr{+m6rOgUFBD zAEh(^T^UeKM^D^zWb&(j?R#Ev63`!YOTAia`DLH=PoL(y!7nPMr=9_2I|jp*G!s*K zX6H&wOyoca405ck*0|-UK`ONfolTaTBfRTf84z}S^3dz`NT%(0AEVpt)9VEUe)xVc zt|M3)bXIa@>-+!c$6x$+fcsIt79N8#zUfQueod$2{gCHHw*Wi?%P?g;Hq95_w@K*O zP> z>PNrhJ^Qw+gD>dz+)wrg;eP(JVsQWA`_P*Iq?Y!m_WB)NGVa;4Z{&A>_Uqzt>EPqy zr74z|b@Eq#@2!V7R{JmS*1eadgjpO!;jYM4g|ubyZ`Jd?_+*xh8TeAK`(d=wHN*L2 zDtYfWe#tHG8MWrNfRK+<#pS`dbJ{+=*ew3RT~F=)tna+*&X<0{pS=Fo&-v5Oc)=I_ z#ixGiH~iJhzT>wZJ$%op+T^*dt&G;%F0000< KMNUMnLSTX}(^!ZA literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scroll.imageset/Contents.json b/ios/Images.xcassets/badges/scroll.imageset/Contents.json new file mode 100644 index 00000000000..2496dd78ca3 --- /dev/null +++ b/ios/Images.xcassets/badges/scroll.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "scroll.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "scroll@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "scroll@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/scroll.imageset/scroll.png b/ios/Images.xcassets/badges/scroll.imageset/scroll.png new file mode 100644 index 0000000000000000000000000000000000000000..b074e4e54f30119d0a8e26a92d75ee822a57f0ec GIT binary patch literal 780 zcmV+n1M~ceP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG%xu@5DU>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGo?P;g#ImW+YJwy52= zhEzy5EGHmpWL$Z2X|$=EYGYh|X-~AMns{+&T2)V5RZ!BzwH_N7cyeg8sGBYHkOQnw5ghwje>}Ob<)JNM?ElNQ$HUb9q{1IerZpon~uY_r-y%aE-Wf( zV_Zx~L*dfF>%xu@5D;cESc?Dv0h&ofK~#7F?bij8+%OP8(GD}i?l7Zdl=k2MXaNOn z541}uie91Vn@N%+Ns>#fKgWtr@u}jx*+!FdT;clS4#2G3IV+fHdb72a^Bj1&N)Alq zqWapPub`BO!5!2RGgyI-87#nw$hs^?ae`~uhV5h_UzId%b-@y*AxPaFta}BEkAx+c zu3_layPV5c9_m;prH&f324iCeWdI-k2o_~qZZ*L@u=pJ;=`hg*?!=z@00EZRv43L7yP{JY?`YFO=i1{DtnRd8K3?V}&V|2F8Cu2-<2PMJ*CY7qb$HRt?^+Hp zQU*)HR&3y9J9r;*Wzbe3=;7E7K7djad=W0}jfm_!gL6&Lf{|Zx$lAdSrgF6kw!a5D zPs(%E^PvReC3pr;+r1}H%k``Q6F$To9UJ)g0C-U-0E~OI0vI2H<4+F(mZDNroMmoA nYw0+tDy{U=>-RQEk|g;8r$6j+y!7D600000NkvXXu0mjfglo{- literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scroll.imageset/scroll@3x.png b/ios/Images.xcassets/badges/scroll.imageset/scroll@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..04482628c634c75fcf59013afcd1c7d885519362 GIT binary patch literal 1241 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadge.imageset/scrollBadge@2x.png b/ios/Images.xcassets/badges/scrollBadge.imageset/scrollBadge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aea2e050f18e60f47c8d2bd66181b524daedabb3 GIT binary patch literal 6445 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 Hu0mjfgJVeO literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadge.imageset/scrollBadge@3x.png b/ios/Images.xcassets/badges/scrollBadge.imageset/scrollBadge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..40f77762f369bd396b50bab966a01b104244472e GIT binary patch literal 11811 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 RY83zg002ovPDHLkV1iIx96100 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadgeDark.imageset/Contents.json b/ios/Images.xcassets/badges/scrollBadgeDark.imageset/Contents.json new file mode 100644 index 00000000000..a11922fe560 --- /dev/null +++ b/ios/Images.xcassets/badges/scrollBadgeDark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "scrollBadgeDark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "scrollBadgeDark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "scrollBadgeDark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/scrollBadgeDark.imageset/scrollBadgeDark.png b/ios/Images.xcassets/badges/scrollBadgeDark.imageset/scrollBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..71927e891e8792929507c27671dd86b2d41b40f5 GIT binary patch literal 2230 zcmah~c{tSDA0ERnX0eWK8q1&fX zP)>kxPQ{ua5QmqSp`n$L*NuSdZntHufJkW8&4+K!by%UgEK96ur{ee|F-PMKhX!CF zf!FXTV|80diA`n%uWz_K&N@)o9=9#+(B>FW5oa3^7$9K8BRH9L3RizEbSlGkLU!ui z0$VHVMuSW1Au9>|7Fh91dMdH=WzA6Id{{I&+ot%>%2&C{uw8Z&bF-f{Wf|va-V`D* zZt0RiRm}*=2HTL>7l(6tGSTemA^ju?(V5ivG~Wc?sl!ql*Ko7NGtD2~MGdOv=wzo| z$=XhL7=U@l)|)98>U20|L7)sMErr(`FmUtI_dXdvR<-E zkiDywY6@8Sy^)!qaAoHvjp8PBG!UxKcvydf8NpxrtH;-OUF4~6099>b!hlojf0W0= zpC&@N#L*x>2JyHpfkD|?3~K$wtNs)myRKN}w%Crn6-GiVhtYp~AT}hyA!(cCa@19H zOwK(#n@0@i-K>GL`~w663tJIwjraEUfM);@85wD3XLshz89-}lYU1&D85tQs1CW=O z7ZMUeqtO@)Modg>KL{`%A0IzIKMI99h=_=Y>}x0#3JBi+fIuLSNTi^kAP|AUV1N}6 z5I88|;o$*J4=hj!hr{>nfdDK70^$A-K>j`sN)E(+0>D55&<6l8ADGBq8Dq`&yV##M zJ#+dX`Tq)F;{H&eNp$%2=kcW9%rW-L`0nb&?&>&uWfZW#n4`ZKqua~F+si|n^E7~W zzKpO}$9^(Kel8DfFAcC3hc;*XzRuE^pL-Y+-MwuU^{=y9s|z}73%VMLsBIO4e^-B| zHh=oqG}+rsA84H)>i9NC+n`e!(#`b5dvMRz8sK&w23uR$aDX_# zoLpcCHplmtCp?X&>;kd(BH{1F93oRYGdraDd%i~06-V}m|BH@C1b zK0Mf8RaH~l(D1e;!QVR~{8n&O+LJsAnS3YY>NRg47soAw?WoLh_hMp|{a%|Fv(n*97bE?z(1uh( zOE4GcqlyRq1@ffR`@i@6J}1fv39%C6JlYybxAIE{j%&WKG3qAR8A2yh&t3J@^PT0I zv5+mc*Lgb53fo>@jit4(Z!V=_HDqHVR>MzST>J51A-FbLDOEG$CX?+9d1&e_ve2r0 zP6$Ged$ve??%`a&SoK$}@23;Y38!;Yg{Jwz*6ARZD{m^h+ zpTi$+-fwrb8%)H8pJ4HU2_ErS^w=ZCU&zS(7EuFsG~l#-*-N zl}dvPls5tq`L>pJWe$cIldFZ36Y%Yw={A_-SmX$JyC-w-xT^|?50%u#IVVb)aK!5P z`1mvh6ri_)-eyBf$jBN2ky7V!mf4Fm{4>fX*?*(@WoUkAmZFchNApfFbX^7FBv0EM zUZnVO2Rt!9;r=v}AzD&S-WZte(7$ z&7fS~*wCjeyhK8%*YCnG#jj61h+#?{rsep|uS>V>Rv35N5H^h!eDUr?sP#SR_3c#4|?I`*WF&>Tg05uA4yBl+grVLWjTJ9f0i64)Of~=wR1;Oh33?!FEyOJ z&`qsNk!&F`-WC;wSrYp`bI(~*%W1q<;Jo$@_*$p+#CiW`Id7O_J&)h5YqLP%1oCnF z;VZl?Fj-BCo2f|NN{9(;yzTS#u!6~KUES1PejlXrF4tnp&shT!zJKWM@Rvk8>5qI= zVwMD=lHi9<)>(LxjZ(4IR+O}e%sZ`i&!UN(!1j(fMv}k0oN_G8Vw@1C)i!A2MVY%6%egu{lN-y8L;82vd?068m(OeYU1TMmU53MQm3<~1 z!g39I-vskn+fBcEYG#HY>0LnF*Jqfbk^~nY6nS3%WHBCMQZ6r?8-oy#b3|#utI3pw zTsq^9wFc)gZjX`7Kz9hG`Y8AdQ*QW85wi?=<<7W(@J5TvY0&{j4n8l TKWppvzh8oxv4v5Yfos%1RQSma literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadgeDark.imageset/scrollBadgeDark@2x.png b/ios/Images.xcassets/badges/scrollBadgeDark.imageset/scrollBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..53095e2177422657e17d532d84ad699a7c0bf4fe GIT binary patch literal 4883 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 J_Fcs``hT-o1GxYI literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadgeDark.imageset/scrollBadgeDark@3x.png b/ios/Images.xcassets/badges/scrollBadgeDark.imageset/scrollBadgeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..5bfd03fdd2b8cc8262c71a992e8de6cd87b78b66 GIT binary patch literal 9650 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadgeLarge.imageset/Contents.json b/ios/Images.xcassets/badges/scrollBadgeLarge.imageset/Contents.json new file mode 100644 index 00000000000..94fc4d4b6e8 --- /dev/null +++ b/ios/Images.xcassets/badges/scrollBadgeLarge.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "scrollBadgeLarge.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "scrollBadgeLarge@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "scrollBadgeLarge@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/scrollBadgeLarge.imageset/scrollBadgeLarge.png b/ios/Images.xcassets/badges/scrollBadgeLarge.imageset/scrollBadgeLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1dbc31e63ca6b6824ebcc05a501392e67ab324 GIT binary patch literal 4307 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadgeLarge.imageset/scrollBadgeLarge@3x.png b/ios/Images.xcassets/badges/scrollBadgeLarge.imageset/scrollBadgeLarge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8be695f8247ef51802dffda4b393ee196eefb48c GIT binary patch literal 19748 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 DjBDc6 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/Contents.json b/ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/Contents.json new file mode 100644 index 00000000000..e6b3dcb2f44 --- /dev/null +++ b/ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "scrollBadgeLargeDark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "scrollBadgeLargeDark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "scrollBadgeLargeDark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/scrollBadgeLargeDark.png b/ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/scrollBadgeLargeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..5ecf4f2dff789a5b9276dfb468d44de0970dbe4a GIT binary patch literal 3394 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 A?EnA( literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/scrollBadgeLargeDark@2x.png b/ios/Images.xcassets/badges/scrollBadgeLargeDark.imageset/scrollBadgeLargeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6b5d6a50c6a1d481f0ae9f3c4ba8bac0825a50 GIT binary patch literal 8912 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/scrollBadgeNoShadow.imageset/scrollBadgeNoShadow@3x.png b/ios/Images.xcassets/badges/scrollBadgeNoShadow.imageset/scrollBadgeNoShadow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..d140debde922d2e0c07293220b698fee37e4caeb GIT binary patch literal 1359 zcmV-V1+e;wP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG>`HM*vY@)=lyQF6{26W;*i4H8iUQ+ve&8pJN;Xbo`Vkv#B2Wd0J7JB%eG8Y1H;!7eg= zqS%MbBMOm`E@2xte4+@sSV&xwiOh(`&iVJ2W?#;xMPp-E_Xj^f| zU|foBLP;>A&qLw`w*ux5QR6x^rdj_NLoerM&9%u5uR_&mMn_nYAzUAsx*KZG$W|N{ zXosK`>c-5!5}`41B|?6}_!=Qw4lO@yLqFusg&f7L>WAQa;2taPKo0d?n%8QFK>mH? zg&6Wl)CXrO&dLeJp+BN#Z!*>UPSm~S7U|@K0L1hv<$jRs<=?cAK!dy$>|zcmCof4T;=%NJPz3<~7mKWA|%8Wec;S z5eeKV>(~_~+QB^kO2Y6llJpAqKqigWc#!#Ld8wbX-q<_s-{W4LL_ RvuywX002ovPDHLkV1luLss{i7 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zkSyncBadge.imageset/Contents.json b/ios/Images.xcassets/badges/zkSyncBadge.imageset/Contents.json new file mode 100644 index 00000000000..0a103fcddc5 --- /dev/null +++ b/ios/Images.xcassets/badges/zkSyncBadge.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "zkSyncBadge.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "zkSyncBadge@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "zkSyncBadge@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/zkSyncBadge.imageset/zkSyncBadge.png b/ios/Images.xcassets/badges/zkSyncBadge.imageset/zkSyncBadge.png new file mode 100644 index 0000000000000000000000000000000000000000..f84a89c233f4a885eb179292a2788eebe818f726 GIT binary patch literal 2594 zcmV+-3f=XIP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG6KC;$XG&1~rRvWYaHeGrp7Pn8HmIooCAvQa#2Ofa*<0cI}j$=-W``|PN+ zif)GgYr{d(Wfs6pN^5q)%62-?pWeS;=m0yhOgw!!az1RrO<6Kbky`8JK)t?%m;^?5udc=SPh{zr}GIm75ah%a?_Q+T} zTAvXt!j(lt$`i6^wUW-Ub+PM<82@Uz6jsx%ppJ7w;Id=sy?e)#jm88K1i|F0L=YUE zJbLu#B<~yY`Cj=AzXeE)v76mxjPzwQVSdEBlbMZ}El{HmWMHN(3 znp$05y+c5+Da;>&^LHo3J4H!&Y z#3^ieSJic=C=QhHJa1KDHT4Rs$Mx&iQ8iLi{uBQC>#w06Z@>L^1Ufo88jg&Ngu}zb zq3iBkV{9@=Ch@WYBVL!nz1o=q({s!F_fL~D)U8&l2?f>EpFVxM4fNY@zlHLf2o`0p zUAq>V$H|i?0d2?7&``K8W0p#drA?V*zsyB9Qd>0JoA%?FF3~z?7}i!sL69=XsV|r7 z^`t;vwksZwa@>3Gy%DTfC_H!WTogb3^i#<3)?04@smc<({_KIX_*6Yx`AUh5VPnwXH{S?M?G33eM+$)70%Up*{ESFP693$^WzsC*XKI8XvW8o$QR`Cr+F&w`gE{oey`mHF}{5Tq>28s?|oqbsHJS^9rSsUzwVkIc=vtUR8x1 zKA)BUGDcp;qOCDDb5L~5seQOraGh7#-S-Tdz^szh%AcFt@~&Nr6bGJLmsFyVQ>)je zW@cUy=&M^m61=`SJ~{cgBe~C4HcHt_C5s&xGnJB!Bj4OOup%e*0NX{^Wer`CZq4o1 zrdzZ0VpX~5`}uOPqwF{}w_NrDQTw%_q2cdE;eVU3#K2Yg><97d$C*t2fK%IWbLF6n zx>yT4thKgg{7b>vTeE$W#Z=hbINB<+J+s^C$xklltx|mWkBI>Qq*C$yqU&xt)nL24 zZtzT$O6~>=;x{GVuM`S3ry_-mx@`58%C1P=W$WYz4&8lw0u%bBsWJm-KW6)68_l}z z8rH~(NRlzk1)xg67#iCa&2eL4ysVx6x3^GQs(TT_;8KtFi!K=VT?CGV3 zeJzKVS68D8$60p0WT_NEvr7R`Zh0DS%Ih)(iSoSWGr9^EA}c7%f9rB?LMsDSPc50t zZfE~9^DY zu+6UE_PlcDUWn;i^Eu{TZp>wVt83tC`ZJeIOs?PrZ3;Moq5={{Qv#Y!*B1B>3#Nr7 zEm&=1>fIPi#NJlzhHhO!bCS*NC>lMJ=kxhliU%MRr1BMz1(6L3mfx~a7K~>RphH=^ zjaf%rYwIjRqig7`CA|YgIu(3LKma1uEP!W%&*-tFpWm`rY68zHta=t;>m;XJOxq{M zVYa$f5q4U{1WzW78-Ws}oM(d6J6&;vm=&55gs;*4fC-ysNd&z90lT7_NEsS2B8niZ`jyDcft~m;hw=x*&Ba*LP*LFW2+#%SE{@*4z0Jn62f4l$r^#A|>07*qoM6N<$ Ef^zNW=l}o! literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zkSyncBadge.imageset/zkSyncBadge@2x.png b/ios/Images.xcassets/badges/zkSyncBadge.imageset/zkSyncBadge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..02a0f75372715a1ab92ff278d1cef42ea453afd0 GIT binary patch literal 6529 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zkSyncBadge.imageset/zkSyncBadge@3x.png b/ios/Images.xcassets/badges/zkSyncBadge.imageset/zkSyncBadge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..db578e63d79284ab84678f25168f42294f1d7f4d GIT binary patch literal 12002 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 AegFUf literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zksync.imageset/Contents.json b/ios/Images.xcassets/badges/zksync.imageset/Contents.json new file mode 100644 index 00000000000..c6ca19bfaf8 --- /dev/null +++ b/ios/Images.xcassets/badges/zksync.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "zksync.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "zksync@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "zksync@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/zksync.imageset/zksync.png b/ios/Images.xcassets/badges/zksync.imageset/zksync.png new file mode 100644 index 0000000000000000000000000000000000000000..1225b4e6c6ed5345c07df0bd0e327791ab1fcf24 GIT binary patch literal 964 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 Ef(t|&)Bpeg literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zksyncBadgeDark.imageset/Contents.json b/ios/Images.xcassets/badges/zksyncBadgeDark.imageset/Contents.json new file mode 100644 index 00000000000..c595c48304b --- /dev/null +++ b/ios/Images.xcassets/badges/zksyncBadgeDark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "zksyncBadgeDark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "zksyncBadgeDark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "zksyncBadgeDark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/zksyncBadgeDark.imageset/zksyncBadgeDark.png b/ios/Images.xcassets/badges/zksyncBadgeDark.imageset/zksyncBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..b6947dbcd882e44c32e246c696c774ce2f0b42e6 GIT binary patch literal 1885 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

    Vz?LZN1 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/Contents.json b/ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/Contents.json new file mode 100644 index 00000000000..8df41d41eeb --- /dev/null +++ b/ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "zksyncBadgeLarge.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "zksyncBadgeLarge@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "zksyncBadgeLarge@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/zksyncBadgeLarge.png b/ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/zksyncBadgeLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..02190afd30fa53095bdfa25789bdaec2e519ce4e GIT binary patch literal 4282 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/zksyncBadgeLarge@2x.png b/ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/zksyncBadgeLarge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..420b0f8531effb88f08df06308fd5f0a37142b3c GIT binary patch literal 11577 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/zksyncBadgeLarge@3x.png b/ios/Images.xcassets/badges/zksyncBadgeLarge.imageset/zksyncBadgeLarge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..25aef546ecf038c8878e86c95d82021120e05edf GIT binary patch literal 21857 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

    xsDNpRi@bKprFuxQvnP-ZSS83*; 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/Contents.json b/ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/Contents.json new file mode 100644 index 00000000000..aae27eaf7dc --- /dev/null +++ b/ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "zksyncBadgeLargeDark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "zksyncBadgeLargeDark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "zksyncBadgeLargeDark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/zksyncBadgeLargeDark.png b/ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/zksyncBadgeLargeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..19a58296e9abc1137911a22d4734aff4bd88aa6f GIT binary patch literal 3099 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/zksyncBadgeLargeDark@2x.png b/ios/Images.xcassets/badges/zksyncBadgeLargeDark.imageset/zksyncBadgeLargeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8d6389607bb6191fd9940f901650cc0ceea9c1 GIT binary patch literal 8299 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 literal 0 HcmV?d00001 diff --git a/src/__swaps__/screens/Swap/components/AnimatedChainImage.android.tsx b/src/__swaps__/screens/Swap/components/AnimatedChainImage.android.tsx index fef6de976fd..b8e24ae905a 100644 --- a/src/__swaps__/screens/Swap/components/AnimatedChainImage.android.tsx +++ b/src/__swaps__/screens/Swap/components/AnimatedChainImage.android.tsx @@ -10,15 +10,15 @@ const BlastBadge = require('@/assets/badges/blast.png'); const BscBadge = require('@/assets/badges/bsc.png'); const DegenBadge = require('@/assets/badges/degen.png'); const EthereumBadge = require('@/assets/badges/ethereum.png'); -// const GnosisBadge = require('@/assets/badges/gnosis.png'); -// const GravityBadge = require('@/assets/badges/gravity.png'); +const GnosisBadge = require('@/assets/badges/gnosis.png'); +const GravityBadge = require('@/assets/badges/gravity.png'); const InkBadge = require('@/assets/badges/ink.png'); -// const LineaBadge = require('@/assets/badges/linea.png'); +const LineaBadge = require('@/assets/badges/linea.png'); const OptimismBadge = require('@/assets/badges/optimism.png'); const PolygonBadge = require('@/assets/badges/polygon.png'); -// const SankoBadge = require('@/assets/badges/sanko.png'); -// const ScrollBadge = require('@/assets/badges/scroll.png'); -// const ZksyncBadge = require('@/assets/badges/zksync.png'); +const SankoBadge = require('@/assets/badges/sanko.png'); +const ScrollBadge = require('@/assets/badges/scroll.png'); +const ZksyncBadge = require('@/assets/badges/zksync.png'); const ZoraBadge = require('@/assets/badges/zora.png'); import { ChainId } from '@/state/backendNetworks/types'; @@ -39,20 +39,20 @@ const networkBadges = { [ChainId.bsc]: BscBadge, [ChainId.bscTestnet]: BscBadge, [ChainId.degen]: DegenBadge, - // [ChainId.gnosis]: GnosisBadge, - // [ChainId.gravity]: GravityBadge, + [ChainId.gnosis]: GnosisBadge, + [ChainId.gravity]: GravityBadge, [ChainId.holesky]: EthereumBadge, [ChainId.ink]: InkBadge, - // [ChainId.linea]: LineaBadge, + [ChainId.linea]: LineaBadge, [ChainId.mainnet]: EthereumBadge, [ChainId.optimism]: OptimismBadge, [ChainId.optimismSepolia]: OptimismBadge, [ChainId.polygon]: PolygonBadge, [ChainId.polygonAmoy]: PolygonBadge, - // [ChainId.sanko]: SankoBadge, - // [ChainId.scroll]: ScrollBadge, + [ChainId.sanko]: SankoBadge, + [ChainId.scroll]: ScrollBadge, [ChainId.sepolia]: EthereumBadge, - // [ChainId.zksync]: ZksyncBadge, + [ChainId.zksync]: ZksyncBadge, [ChainId.zora]: ZoraBadge, [ChainId.zoraSepolia]: ZoraBadge, }; diff --git a/src/__swaps__/screens/Swap/components/AnimatedChainImage.ios.tsx b/src/__swaps__/screens/Swap/components/AnimatedChainImage.ios.tsx index bf382327e4e..15285091a15 100644 --- a/src/__swaps__/screens/Swap/components/AnimatedChainImage.ios.tsx +++ b/src/__swaps__/screens/Swap/components/AnimatedChainImage.ios.tsx @@ -17,15 +17,15 @@ import BlastBadge from '@/assets/badges/blast.png'; import BscBadge from '@/assets/badges/bsc.png'; import DegenBadge from '@/assets/badges/degen.png'; import EthereumBadge from '@/assets/badges/ethereum.png'; -// import GnosisBadge from '@/assets/badges/gnosis.png'; -// import GravityBadge from '@/assets/badges/gravity.png'; +import GnosisBadge from '@/assets/badges/gnosis.png'; +import GravityBadge from '@/assets/badges/gravity.png'; import InkBadge from '@/assets/badges/ink.png'; -// import LineaBadge from '@/assets/badges/linea.png'; +import LineaBadge from '@/assets/badges/linea.png'; import OptimismBadge from '@/assets/badges/optimism.png'; import PolygonBadge from '@/assets/badges/polygon.png'; -// import SankoBadge from '@/assets/badges/sanko.png'; -// import ScrollBadge from '@/assets/badges/scroll.png'; -// import ZksyncBadge from '@/assets/badges/zksync.png'; +import SankoBadge from '@/assets/badges/sanko.png'; +import ScrollBadge from '@/assets/badges/scroll.png'; +import ZksyncBadge from '@/assets/badges/zksync.png'; import ZoraBadge from '@/assets/badges/zora.png'; const networkBadges = { @@ -41,20 +41,20 @@ const networkBadges = { [ChainId.bsc]: Image.resolveAssetSource(BscBadge).uri, [ChainId.bscTestnet]: Image.resolveAssetSource(BscBadge).uri, [ChainId.degen]: Image.resolveAssetSource(DegenBadge).uri, - // [ChainId.gnosis]: Image.resolveAssetSource(GnosisBadge).uri, - // [ChainId.gravity]: Image.resolveAssetSource(GravityBadge).uri, + [ChainId.gnosis]: Image.resolveAssetSource(GnosisBadge).uri, + [ChainId.gravity]: Image.resolveAssetSource(GravityBadge).uri, [ChainId.holesky]: Image.resolveAssetSource(EthereumBadge).uri, [ChainId.ink]: Image.resolveAssetSource(InkBadge).uri, - // [ChainId.linea]: Image.resolveAssetSource(LineaBadge).uri, + [ChainId.linea]: Image.resolveAssetSource(LineaBadge).uri, [ChainId.mainnet]: Image.resolveAssetSource(EthereumBadge).uri, [ChainId.optimism]: Image.resolveAssetSource(OptimismBadge).uri, [ChainId.optimismSepolia]: Image.resolveAssetSource(OptimismBadge).uri, [ChainId.polygon]: Image.resolveAssetSource(PolygonBadge).uri, [ChainId.polygonAmoy]: Image.resolveAssetSource(PolygonBadge).uri, - // [ChainId.sanko]: Image.resolveAssetSource(SankoBadge).uri, - // [ChainId.scroll]: Image.resolveAssetSource(ScrollBadge).uri, + [ChainId.sanko]: Image.resolveAssetSource(SankoBadge).uri, + [ChainId.scroll]: Image.resolveAssetSource(ScrollBadge).uri, [ChainId.sepolia]: Image.resolveAssetSource(EthereumBadge).uri, - // [ChainId.zksync]: Image.resolveAssetSource(ZksyncBadge).uri, + [ChainId.zksync]: Image.resolveAssetSource(ZksyncBadge).uri, [ChainId.zora]: Image.resolveAssetSource(ZoraBadge).uri, [ChainId.zoraSepolia]: Image.resolveAssetSource(ZoraBadge).uri, }; diff --git a/src/assets/badges/gnosis.png b/src/assets/badges/gnosis.png new file mode 100644 index 0000000000000000000000000000000000000000..afb08cb40e62e4b8b7b2921b2b25ed7846b84117 GIT binary patch literal 893 zcmV-@1A_dCP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGv%c}rtfbcJ|yhI!Q0$00#9bA@<3SWBz3rpC#SA4JE&z z<@<@6p{j;ve{aQQ%|&m<*IEIP_gU6EH+ib91&|G?SkmDiV4_DaT_B59KnDH(;ML@t z+>zwejVPj;?nzA4QtO%}{FNt^@FfbPzg*nFsIh!$Q+v0tpbOg69)({AU{481j^a3Ku31B0m=j0m51qo!T4BPWc#l741#bw+A4?|Ud0W!x z+x8NDJJXyOI~31ITC^6+D`Ml_yo}{7scX%Vd^`UEqUsFY TVpxbd00000NkvXXu0mjf9Cf8b literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosis@2x.png b/src/assets/badges/gnosis@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3a021929690d87ae8340ae4b7dce522a942ffb6b GIT binary patch literal 1256 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadge@2x.png b/src/assets/badges/gnosisBadge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1355360aca01a2cce89f68db40e577a910d25bb3 GIT binary patch literal 6487 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeDark.png b/src/assets/badges/gnosisBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..cd7d26152c24b62fadbdba168a1c4d92eae15bec GIT binary patch literal 2273 zcmZuxc{r3^8y|ya7_*OU48}Uf$YAhlwUZ_L8Wl-d8ZWXdW0&k-#*{2sLL{!2 zd7#{YC7-CIfk0f|-un7h2HqF_FSv&jtpFt~FF5m&S(g>A+p@~$)xj$Wae`X1{>Tu2 zNPrgwXQ*PwTVUq-@yu>bF$2zmNt&Geu#`qDzL3QS65N2#Q*zO+rsML+Jxm5=i_Z5 zs4+`d)_^iAqyTKo_;r$9*q4j{^?pP*O;l(yE15}8;hT_?Q1v2DS57|c?~NT+E<9Ag zJe&6;$7zV)C$ZT?sr=BlOAyvo&+5jwHxq?yM^-ms-ui_*R$k<)m30gc?-XNeI9)q^ zf1snAm2w7H>A8Uk8e8{t^;MBOMlArUJD=HnaUlv>z1c^nF9}|!`wvh#96fHW{Gw~@ zaZVVI2p;4&Z?0iyJYV$vV_?T7pUQP`;*vtW`^P6zp^*%MPmxnw9s~f#Fu>c81&A+rVc45FH(DZ*Q-oqeG(s=MSP#C`2MrR#x`U zB8WgB;PH421|uviysH2fhr=O}NCW}_a6v)AJsk>#0vwG-!{KlN0Rg^002CAo1-ShD ze|`lx90GytrNCgY-K<>&aCZq-gUrjz3q-yiH{VKo(iYCw4)7XT2m8vxk7m_34^ zNTMi2tS0%-Pyi}p)d8yj6xp%=b;$t1X)2&qNoX1gt4_kGD_}H87)=sdMHU!4VKfq2 zd50sFWOfp1@))WdR!ttOMn)>jAomjyWCDULja88cmT)u@4%me%i&m8bUIYLi8V(ae zAti+|vSL8z|F_k>p8tm|FH8Wfu-v)R4uk>33B+;b81>B-^VzK2Jg z%vv7bZ+Ub-<7WEIBbMx?m_dy}N+M`Hv8Ao~!K{79^j7y*eA z#Pi`u!a^7kDN!t3m>@ExCL<@WK#`FatQVCaO3NzlSKd#N633x0MSWdaUY?zunVBAA z4-d9KZfR+1EGf##VP>Z!CB;UB1cmQgcu&x zuj0R!O=v4!~orK%ZTl`gHbonZRXtT@~3k;lE-^wKKad`i_zC# zEWXxKtzFyZ-Krvu`hiKMBE%RzC|Z)6%NIASm}yW~durMpX~jx<3RECktJ%OHUM<6> zF?)Jl#A8LV(ezg0pe^1l<#bhqXjAd3kW+cFbb>!5TAxmp^$@8eO5pyGF&9$Uz-QgmGx{Z-#uXO?~7L zO8Hqj()6?O+^3iA`|0}YHGKHP**ObJ$0E5jyG$@;{<=4dwacH~f(xZNdX+JKO%nK> z*m2qw36S!IJ3)ez4EZBLwo7YkE?xn2(DF(@<4VK(ddI^oNXd<%!54Ad@tpkRsN+f7 zCUf$7tHx^Glr@zOi?%VhxDruvPWV?LJ+GkPc+ScAN#3F<+m&LaI-|so6VdPoNgkpH zgc#NJI*{U;c2VjxT_K2P7FuyS3XQ!%@H2V^Wf@6FvkWKWm)q;Iwoap|TlK z#$rq7dpRz`*fbjz0nLX**fwZ$xfWWWUtYM7x_&>OrK#U8ESClL^exaGGyL%+nCy5Y zAZ*i+-rINP&XLVuJ;^f%OiC~Nl@GhK;^O@%eO^-5V_V z`JkCFXzB1{4GZcEw0L&91LMfouA+;fM^|dg-mU-WFO+yLiSQg!>+(4IVDuo!-}#vE zH<#2A{K_k%-%oyKjA}cd-rjgyv{zLUSF3gh9 zRs}z4_IoE6sY>4EcWUBBBvSj0N?j=ul^6VGAFTeY9yZoX4s7M=k|eqwYF$2amzh+8 zGaArPJDsRlo}O1}r^kw-NHS#MRxdiJD zo~foe>=P~|)w=-fV9pHeb}D(Rh#MZXxyq#psty5pu*SF;7PWBB-Dd{(o(-P(7GiJD zjJ86>p9&3)a$avQx|Mog{L6(d^|a9lFNr#eoPS#D<=QhwGhIfT9;0Xb8gOTZex7xt;?rJUKo_7cQ&No zo+En8TkEt2n_4(S!wzSMbpkm_a#yz}Nu>$g`LFY@`R-iICWaOU_w?Li{{sv^e@FlT literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeDark@2x.png b/src/assets/badges/gnosisBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..029c07d9ddb9c8695f7bb9b97034016ff7ec8b9f GIT binary patch literal 4976 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 SApiS2ZlG(V^X9UB)c*l?xMbb{ literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeDark@3x.png b/src/assets/badges/gnosisBadgeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8ed22937564e67116005270c58aa56db2fa823 GIT binary patch literal 9704 zcmVP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGRYC?II*HMH>>ElE9rSpZW}r8VI> zuR)?4q~4~K7D_LzGKXm}}#Q+y-fE(Cvd*ZJ6txPK^mC&8_fxTtU9Y5Fe25*Jok8V=2EqoE?^CD3`1)$>?qd>OX?R{DKE)ZQeouA~lg6?~s_|}5? zQ5iXyAmsP4WmzE{L)E(&`1I|ODngx9#yD0?R_76X{&Vi$ucTcQ(U?a7X`D4#KAJdEYW`3 z2w8ag34bI6##74ic={2nrxF34o_lZHnBw{5lVn0f6DA17$}gC|e_j_FGY7MViNw)m zzVMY-8_P>C48{&xHh2-w=|NsAI_hpN49}Ayx*;XhN ziA2F{<=Ml_340C1+RWNzYO{y?W7zN?H)tV{rg1`+@KnlDpqLg|7Ij}wxj^DYFyX|% z6cqdY`?vhPef``NB**#d|tlIe<>!<7%W5HgE(CDg1?PW451n4gE#s+a) z5D*-1jyLH~1v3ItE7R{I7u(B#2qVEFU-*p6$~P!(a{z^-tRj3+cMU*}Hf#6SY8VYy zNOqE0`?q~vxVCNEwr$(CZQB;goZBb2PwLE>?)00RnyuNd>ZxGoOVZuvJ7p0OS@tF7hN7d~R-T%Ae!kVSKJ&aX=9q1fj6Tz@@0Raq;OI!vUgT z(0Yn9^{C;fy{^U%qnEeyrRP);NwtCsMLfDtbhn@`Aub3(;8*zI5eu#s-h)lITCKj} zIo`)}{Tl)Wj|w0KoVy(TeJVuBa-Q4p2+AW7ngb%=qfub|GAPP_oJC%tBy1?(P(0EM zqUQ@VT7W4Ns5aoj$Q3>X<6>hW8=c*ITBld8);zs>*XH@&i(40ZpKqRD{eJVp>Y5tf zYg}0UVDm!njm@*YhtyB6{C}g<*rPz9DSJ3;sA&ibQ^Dz4iJ)*@VcAUqNLf%;4H~K@ zp0Z(P%Dgwga|*c(ql3ZS1cAT_CxsITGzCJVy}UOp{zI_9SnP4E{~2dj?^<7NAB&7K z#Yg>qWvZ0E@bPK()Kl+PugNk+Iqy)8IEI2@6rDhGc5p!ia{=XULj5fTqeltq5|ql7 z{&7{e${-jE9Q9KxmvMIkQ{4em5KC@@wmp@m*D>aXbQmSy|~^x zbR540Mh!y-b5JN#sOumgEP>?}RgXU0mHR@E){tBA53`Knph%T{y+qA{du@Rr@En3O z0xVAaEc|-7Qh%3PsDuB0ZtVe&f6&_7-}Cwc0Lu2IFMV|FCil3tF^I9n+3wBi_4+J+ z8<{JZhO-kMjd-2Ki)P-B;kv@Z`jY$4{o6=@Na+Y=gp!*`m8Ekof?zOaQ1<|vsUKS2 z7Z%|u!+`LE?|pGhAfyc}lLJNo=u-d+7+o12HUB|CSV9eqk!1@9hIeM=$_36K#kR)+ zs)~CN9TeWTpabF{GsUL?I{*lrKnDUQx^{4Bf1v3vR0e`w=~z&>f~(!;`fHboy5XOL zTflP|UCT#<+ZYB6d{@SWd;u=R*kUT$q$art3Uwg@jHIS;v0mDMG*YxN;x_hN8+ke% zZMg>34O&%%d1_hR1SXYWsCN&ZNaYW(pgC>u_IJM?iwwYw98mx)a25EB9KgsH?m_?x zxHT1>9*MZF&?J`HuoAknLmC_fSiaFi0+`Ru~3`J3Zv? zIUwMQA1lOk(1AHhY@wh4o6&`6qKxD8e1)(D=BTJC+L&VNh*nFviTj6z@WuJ^mp)1$Y>L6veA(DYLE-MBc3|;9)D*K3;M1N4 z_gsa$4$W#h5R{#(_QK}OQBzr0xON~AXhgFMNQRbPjM7AtG6O99R}W(Csa3%6*k?Y5 zu3^*d{*QZLQgHg;wSxGqh5rC**A>bVS}fySX%mi$b1#DBL}sbo&eywmV#+X75tZH! z@3{u)5AZZJOcPF1DjqS3e*(kGEvkUwjt{=u<^#dqRrt}4$_fNRcta|)H)@77h=KPCty$zm#qIPg* z7zT!!nVClGT<;~m09gFYRe6!k*~$UxuA}!Mj46z-4yK4>ol%zXaFk5pT0(4t+pwl) z&p;1nhf%kWr?%3$>ZOoOm9I6|;9!8!*J9%8Cp*{TWNuYZl)&ItJJGoU#sdVazyqskJ_4*poFV``LiHOxWbTjd1F+npUW-=I}W_*H@-(rVLO1=RhP0!0Z7 zbSL_{5m;h+db%0MSXYq=^T>l2QKDJMdneYVv}66*$kG<0$jZC2 zw16_Kl1bC{H+2Bx*wFvCn#J6;NymFgS>*B``)9MJ5+g}!j;pib@rb&b|@}*859>E z3~HVmncX|z21`&+U=DbJ7$E36JnE3#M6qMLShS?2-$)CPq1wSC3olyHU05cPQ3ViD z#{`Avt@@enJxh!2q21<#q67xdOW5xSNvw6Bcc%OBsi~EOj1bqepn|jU9@uFTn5EvgMn=3ISCjl zunD&@hcT<3VA9G3CNr2REuqc1DNtB$BJVCnY07kW;mt3;waz08hL~grFoU`Z0%FJ9 zT*p;sPiebd*6J%Wd*(X00MvDOy~8`Md795!6kM;N7N=oA7wC5@S+T^0Oj9WYTcrZ z!`F*|Xi;E#!iug#-G+BqDIl!QQQX0A?~mL!nd^qyX1xyH=Rj8hqi#?k*~G*In{S-$ zK2j&`m2Y^lPb?Z&`0uD{^8K+uF$Ne?43KKuLyzYA?>K$&cROIIeWTt)V;XSuM%!Gul+2K8 zsrOyj%t~rmTdJ6J7nq2-I4KJzD3jC+5cr~u4~p@?;NR;&weXV-G+zQBFm6U1IW6I3 zast9a&}5t4NSl6#orLE9rtz(Bw$X~FYX_KhOV>2aBs+xXivbWn%;z8SSK|1f7y}Gt zK)CiHAbx-`(`_)~VDU>pu^}&^ISE**w&8#%pFC4&ukyr{7qc7?9$63&ns?B81+@d& zA=nZp%k_b~3>Tf_gJL`|xM<|xl_HIaiHRk;4FE#(5|XSMxDD;BQih=GwyY)HMe!&^ zT2@qgA;gaajFv2M6AUUSDJEg69q2B?q%4NXSuO&?VtP<8UZr^2E;O0 z0&_r?pt$s$1nWTFK%+@22Zg%~-*Kmwql^s*N}d0#V$ua=MDGNQ(S?+^$qod>fE|ME zE&#$N*64W*P>cr#x-oZkWk7^6FXLhekIE8_*f&wL-CzO=@0Cb5&d{6*Y@N&QA{BCa zGmIysQdLcFexaB&cL8=-a)!{PlpDf2{ad(^aX>K!7#IfI-&Y5Ox(yYV?lv@?O<}2k zut=leHVhzz1jPn+@En9Pgcq_jx{z)24hV=zbr(y!cJ11o7nS8&hBJk?#vx zk~|lZZt5)q&D{#diZMq(sM~t7`%&$>uDY#&k&jS6c7rAWM@>a zkmb=u1jKxdF8b^cCTCAj-d`?-ovI~#BQ7`AV4=7}%Ukjt6gezZfuXr*LHTmS*9d`wj7*kNS`FK8(!++}!Mz2+Yb z5b&XWK!i-?E3B|p1VypI))ozwM+XJW8+n~k+)VEn7>ce1iK(|?%(xf;3d{#}gtpoF zt}iWi+39z583cuAEA#T8VozoAU{Tc%1cO#MwP#WVrDi9^T?_(=AdvexQNAP z@pH@POq7dTv#STLii;qQy$=XPT})7Uu`AfL@ARUm^aK?dLM@k#E&?J|;j~RT*_1U? ztG+*zfY5X`1|LJNWddSyp?#u%W6m@fE50aUUAw7#Lyv}@TnE2( zLq)iUBAfv>AqgaE92qb0@a?e^e*#qfGK_A}BT)46Yw2 zDEAW(!Vn8&2_Q&FI1bkt}&@ z{{uxOt_Dm5BaC2san(%D*G_WcJUxA>n!AhXgG>L6v4$}d5X+W}Xn8I|k3jT8%u>xV zg&VcxPY25M+9g2&vv6}mLoLwjNh$4+qRRk95)d)U=mR3yL3bOhYF>)w;`_33_s9^;MGRa9_kel_RSpo!4y7ZIOJQf0A(C|r%Rv;flud@5!8W*zU&C1UcL0$0b>K`6%g^FSV|?Q=r;VwLxMp8;i>CkCGfI_$P12?%g{_^wlPMtl%BRG zAlzjD5Wx;L!}G?8a76>44zQu3TF_*Qk((u*X6xzS4{e zOBIxUW)$ON&r&)=XdZ%LXRrZ7?AWoRJ=5KPP1h2Ba?4h>FI&qTtbXjk%_1NUC?GHg zEQ6==5O#3c1Wfm8xUlr{w}GONx;7xFl}@A8wtGKpl(`5AJ2zB1#bxYPh6s=C0E$lY zT=(NvQ@CVZMdQrMtHYQM0}yl>am-{0)exG8&@OE4oTAGpY6t?OeB(WP!(CWXtT!;-3?;_>#57g6Y~d~}Ii=@JGIc!&I~i$crV>|;0HO_w4c4un>O9{knW5-b2SfdI=lNkQU5o`| zA|P-9kRiNliVPubhkl^Q;FtiI0>V45X?}Cqkx!7xoiykD5HLS#P|M#^%gA+GGZ(QZ z0-~Rbz||BdvAb<%=6s0Xzq)0a!ofg0-~DR%{k_Nz0C!s=3}h+?)y@crWQ3u|4sm`h zDK*d#G(UGd#Slde;V#7Qj*~kaB$dAQ{TN^g4?Qsn6qf2X7->XMtYA_DC@zGA)sMFt zC|onp@LMOBoBsudi(u$PKpfC4rS?_QUBI-BP607&2NytL;y)Q>j8gv2rmrQGq4}Q9 zY;uYXGIB}`0O1u+0;2CWK&?@P_1(ty?b~~k`{w_fpzy@i#STdsS|ajEfdRiY{N_~w zgu07;xwJLi1x&M)o|ICTK`>}LzUw{(#mEPb4M|-mOW=B145JK&o|>&BAcnQk0T96m z2(ZKe5aIReE?XdLitq9^I=YFk?OK@myYPFD;CHKjaCaeoerO;)Oa!x;9SB0b;`uLekEq#}%glq1*Vprm-%C4N%Z+L{O|^qJtf) zpX|Ia(z{JwBkWBTvoZ(Jo9f(^n=DSPi>bioW|Fo40^@Ck^dyP&97 zF!%vvWd31ikXF1KUpmTwW%p%B`r2-VWGQS*P+7DAmIwwwtYZmGc6k3NKrwUl;Jw_1 zc*E_uu7q9N&Io3Is2^`X9KQ*_Ef{_y7;PmO*@1xYviATGsvYp3c3cw-w0!A1eYfDG z2XJ9o_4NBxgA8rhMqg$tSqf)@N&$h1U|$5?hNrQOC3^AdI~E>~Pb|*;fBp2~*OyM4 zMW^&D-|&*+eK7348s%o&bKOr)?3w$2{FY!xBa8K-c32@hxVvC;Ey0j$jM1H2%uq@{ zW%6+JOtq7i--eM>o5Sw1=lALM+b`?QQ1teREQ8Z+P)$Qv(rpCGiOY5rm;}WUSiB;S zZ`-!*WNqcZ?Q?9AV-PgS(f}G?{1OnRJIgl=zu^SHAndTJp(eEh7*CT?5^l~bAoTcS zKQzP-Ak%PDs+`5sZ4C_h2qX7eJ8qPc{9YJ#(^YMj$@Nz@%p|pgh{;7sRg)c{9mo!_=|qLI*ara{ z^&T2ohHy~$f#)eB2Fws$#SwQE9$9EHE7c*zaMMfPsS{*isY6U@?kaN0 zsPcy2d^vnW=;?rf~4h1Y!`;4=UOd>%Cez(CEQ zV2CW%j`f&7a&}(365}uo-S)n{_g?@1`xYAH1kAY#ZyA7aCfnB>QKDr#O{gcnLt53& z9U?lUT#!4EP_D-S^lqsVA@uT9_iOovf8WrH){#r3Y`CpXQNq&k9SPoB!VOYnfQAE8PbuoR8VFPwoN$$mzqBJI#0*n!pe>^6xq0J?^79ydzl^CNs1;Pf2V|G#DE;gNs?r~gLwxL zh&0FehzjHjTX~sez;g&PJfy;%QREIBBSh}t4r`lHB=TPJHW~awuMILKxyW&QzAT03 zHHFfs5f1~b9@>LCb|4b;g_THRzJzy~> zNkK=|S&HIM$lAuE_#N{K2^oDSzZe|ENOI()C;r1%7#!~CLmnW*R68ca;WdyqIEnl! zk0JDm<{)kAf$!i-N%qaZ&s`4R5=u}PwMz83z0z4H%H;Y+x|f($*xB?-oMosxvy&85 z9s`W4%quJ-Ok`98|ALw9lo!5B7QkOcBJdhAXCN|Yd3%=%5=m@o;K<<0g6Oa_^HWBPB*nl|5~fy8_&}INUr# zl9_#%X>0rFAy!2p1bIb9i!EX#L73c$9)o;l@{t4^nBm6J?0(;y!tn?I0OkXwYa zX=0chAm2fP$6rS@7|=qmwTX!e1AK-pGOSX8Cj%k2H4Cq5#*Ymmto@Sg z;;&k^#roc|%^{n(g&B2b}v_B@?1mip{$2q$nM_ms@rqgrh|3 z&h`SBk0H{24o8bGAjSaCB8ia|39>T4I7*q}9q%E4qXFcD2+>0S1^Ghy44E$=6W(~k z;+4q&A=+UeATM1LlpY8s1Sr);@3WMZ4SbG-m&hT7O)DY=_V!Yeo^AX|3}oc^wIU_R z36TSWJVqi(IEoMO9Esw9zu&nYfej6~_ku+`N=t~~iX!j9Fd0-{4jdiUwTsqF+bYR^ zqOCqnLh@e*$d}m4P`BF=DK_~?3CR^w63)*|j5~5L5O|Y0&)Y831fN-+0)>B0hw5$g3TxL zhCMQr3L|p{o?Fk$tIR2()VB2;iGiAOB_BEkmqe2aBuN1=ywAg@+yT}_oOAFDVT`cN z&(aaHIU0bxE6Y(KeTJ?33D}7QL&?MsGHIRETW*7Bx)L`p*ctyl7 z_hoeX=#j$Y0IO-`WHW4TenAi;{R)!;+nb5W$zoX@X&DejI3kgEIq|#){5>~G06_$D z1)`hF%FDhApmw;FiPrB>Eb2O!J0Yt7;ITNDe9wPj=Mup7c9Oyen7IwlGBPkZGWpC; zMi4520Ta$IUnD{b0MP(4tPvsQfrTosTzbI@ufdUF@fli)$=Lmew{G-(X%w+P!3caD zk;7u>=Ec=azXCvv8GVJclTRiOBtg*p{0@;Ad3KT*x7=KEghBcXCIZMx0wfWrDjaFO z`3CGV-V;iF7a@97FzfEEPjyzA3|mg&+yX*4TDY~pGG`_@+F#lnk>8B7n<} z1Gt2@ByW<@$6*{XzCK7>cCpzKU1fzqwa~l?ZS2BmCF(22O8BZySDed@|#ct%5eROpg53 zhS_D3JYWK)6m8J?3}=2|Nk~LQ=-c+?;gmT5b%I-N2wqEwDi@%!)@-+YWYX!)Kac~Y z!|5_LN#bT4PbLTwt$yQ{wkZyv;VKS(|a)#M#ijnn_*q?QT*~g1a6A@28g#{>CoJ^V^iVG3Jntf~p;UpUiJ~zM+Gue2`Ojr_UcpDjfWkb>MszwWo3p?D;)!sZUIQ3PLmTLV zK8GZRRQ4S5*uqz2wbIDO6tYEhwx@&&AuGC^8C3`~f9U}nl23YPLJ)Eipb3<|Z~?4O zh2tL;Y7p`sCbGLV#qS-p7tcJ39cBXLWpK2Rv7k>f%C=PpIZk8abf(Q0%0K<&^_sH# z8{0V~Jl!CCV>#`-F>NI(#IN!5a|Fy#<~+1iF6T6+!yIS-G#<|w2P%xdIgO!p>!dG1 zhhPW|Tp6c8L#m2Q1@LUfaH(``i^`u_&m0o^?HpGA^uU8H#p{<(l$JLb3#P?-xN-6Y zCa*6l&(zl9KDW#8l?qA8^UKswKRPNQ;UMAzD^`9Rfw}V=mzJX{72uv)QkQ`?xHbaf9-WhsA$NlX!9;n3zw3qdW)k1 zwgm+OErcMG=tZS+*`|_fp;t*GM6dCO#7{((+=quW&$emaEFP;K%BG&)zdzv)`6!X` q;%SL69+zcW8MoyaAr%t5S^fbcNPn0t^c7720000Q|h literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeLarge.png b/src/assets/badges/gnosisBadgeLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf5511d8f185b56dab28d3ede9c55f3d2524c6c GIT binary patch literal 4265 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeLarge@3x.png b/src/assets/badges/gnosisBadgeLarge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e787754b713ef21c4c90a61276fd04a99ff60389 GIT binary patch literal 19931 zcmV)xK$E|TP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGt=KU-5F}qJBLqwK65$0B zIEOyk2B0ZBxOMVb&Sv%J*v~pK@>#;LF#vr)9b~-E!^7oBKf_Qd=dQi#qdWeRa%oDN zdM*Evx*g!4ewR?m(+1J_tOXU=tCnIE$nh~U!9ab2Zvjae4yxf7Yx3c2rI{x1KBX7x zzxxoNIa+TA!U(@OTI-y0P;XlpmjMtSWD@|=&4VtsT8C>l>lu7>ubc(j+0W>WIPeQW zfh9w>Ppt(t;;s*V@BD2xo7ZE1dk5EDd(heH!?OYRaV(vqZKoH4)!a9iL%q)t9%K&C zdNv*S-*VzRy=o9uPpb@Q1GDCjt>8WVUH5DL)G8>>^XGlHI{p0k#j| zLO=>t?s*9x&C!sap(FXVIAo^G*LMr0U7(scUej3nlkk&OP-q9a^du%oozss{A$(L(^N~462U_s zZb)3UibmoP06zo2`LbAtWnAyqWCYa2rYHmzPb$Iu?<-`3nXFmeNSB`X)r+9!#4gX& z;WU0do5sB%BwQ3)T2KT|Y=Xp9@&Y~LM(|MxqYpdA6WPDD2f*?k>N{KvjKfy}l*%VU z%QIhhxCnCo(x0JR-P`4wH=7lEOO2gRRMgL&^028cXUs?r+bem6sEqL%&^3}97V&oQ z+q5SM;A6BN=Vwx;pwDZHO9TmDGKKUQ^0#I(9iWpfZ@5)BiY3#$8j;Xm^mwzhRv9m4 zj^bp;Yvxj2u0#jHc#4x?@PXC{tS35%-tD_v#=8CfmTQ3eT_^j*kGfw(g@2D?&}>2> zAm#!np+sWudDN!;&D^u9$2CrRyhiu6C4B)2U%bve_+E(2(#20wl0G_djl2L!4qt)T zi0;US7{6-_dwC6C;}lO0(R}?IR18Ej(@fJgCITV-qSC0Q6e2FB6k0OYJmI%J<-MBD zZ-9ul1Jr>u0vzRehZfRL2f}p@v_?i`R&HIt!J`@gdi!HEJ` zk`a#gHo)lnL-AVIYhrI40jnWWjlN3h!S^r=sp&k9XNkGBM8*&xpm+GoZKPYI&YIA_#e=FnI8 z3}5SDHnUpZko1c3>8>aBTOz80#9sa0KCHGAaQzxzA6MJe!xn2?cPn`Ay5T;0Zwf)h zr(&4;id`z#w4v6F;L|NYU*G|80WxFK;`995c4(0M_z{m(Fw!>`hmXg`7`YS+{a!O!dCnw2o=KnU-r%d zIIe5i+JDhwe&#sLky#OGcz+YGcz+6qyDo-^C`>i zt+UVQcrsQpRkcfrLDuZuu)2G7x5W$&iy8#dz@wS0k_F5|#aDw#q1x?mhc9EQuZ^EL@v)5);~%U4F8=r7v6W*4=mld`jeM!T76RAYq0p9CtrB(+mb3`p6W{o2J^f!sTtH|1|nl`;^6`_M*C131HG?rjBVp@|E%ltZeC?Jm> z&x=P*3u^WFq!)oWF7&dXz>8@s|EVqEnrK_%iO-wlnw8JG6K2WGk9F$0Xm8w3vnm{*&|Y?9A~n6#)z+ef}wMd-f;^ive)aZP*UqE zTmMX>3Kxao$LgeGQGIo*kKnf+DNqlvdJ)$n5C}gI2Uvrp=SbjW;oAcL^H}p9o&S+S zEZMyFrQ08WXq77i9s%!=QUs1NS=2P#E5urY^N~m^;}tkD9>`^g<}kT#RwbD?{QkuM zhh~j*AqxdaWJnTY0bu}JACn>`nPi|R> zG7vui+Zr#MBD9YT0IAdnkG!6M0$9dqR%(Ud5FP<*AA6^B8NjQOE|G&el?G9jj17tT zeJ=OgQtU>{@-+P{tK$J-cNM^Hl;9!o!8&Z6}L-+284_dYe+ zJoIsV7FPt%BGFiOB;wuPLLCJIU2tSsRjE#gw!Xt}XTNr!q6@E`%fvnOcif}wAf(OjSp_V|5 z0M7|UAjyCsBK7P|Iu&~m>Wp7`hZUg451Q2KlE!jxDfCQF5Tgob!J4YpvhYpLy!w`}KFarU*AZbnnwr0%{RDz#@HpRCNTa zc*pp_>juuF!um%gNO=RFnN&id?s!xVr)$EW{Iv>LEJ7Vu0vGx;Z8_4EjkIRmd#t_( zxmbM!pWHcuKk)PetFL5W`(z=!66UY`<}aK2rC!5CrXH|n!fQy}0+5uDxuBqDp}9sxy&)#DH(C)uT?yr8K#z^wDxrth5P&!jf# z8`Yr#oQ6HIV=2wu;Sl6TtnU;73Rh%9!1ynH^2v{1x_Qkhg4;UQUBdaJKlQx`d$*7N zE&ZGFDz($7OE#?hlwBuJe!T9)mBDKXM?d}3KN3&Cac>Yi;f!t_n707}#acm!f}N*Q zcQF9YC_-`$Pvq;z6AN43dmCxWKT(b-(%@@=N%ZFCD!X(pdGW=ox(I$OXh8w6Aop^szj4)^tUmCjw?d!y42mP>>J4-^ zyH39J@!}_;1oE6p5tA~8fjVi8K0qQ26I6<3n1T_fRrmoJgqWbWU1W2e1{O=+v1wvf z3UeT{;Zn)#&z9nJ+JZwKJtD$CG_vi6CF@sx@m#I_AN=7jR~N?Kdj%=NoVNR~3h0vhR3j1*7^ zLLG1FJfe6E|Hq_?e@zC+T_einmZatPa7nAv^EG3tGg^L6b7J{%x#F&nneZ$R*&VFD ztk|uOZrIXEULUA)r7Zs67Yg*tMJ7jCAz^i;JY}6zN57{(^X=dFO;bPmli#bqdnG-> zoRmO!xb2WU!FY?(?Yts=B_^OV&U+6qUKGrz6Y$nPnng0;oG%x6pmTD(d-XvJwFcP6 z6jkZas)*xe4S2&O1~4N5ua2iUb-?>k_$RE23*NtOXx*Mqyst9e7i6f7@g=wt;s`^O;g6Y~CyE2)kpff{egtYxR$oG|Tzq|@ucZu9 zJUm0!ya7tEtMIBi#05a2$R+X~13b9XCJ_EyW(Y;7GC;TbREheP-+T}pvOr{eoYNCi zWO1Azm*?$?6t{Hg^wc)mC4E7jgU#kAT)So6D^(wL^T<;jVSNPuNh-3vKmJ+d6*`U$ z^3`Qmf^{t=AVWlO90_$I9Xce!lZ&SAo}d{9{HAs+#2)e7hMU-VHfIH>ssvu?O+Y1t zKiR$*174q-3FgP@>tcaCvOE%gGCdN0xoF|lP9V?x7yNV_gCcYT5?!}-?OqugDS_@C zPoU%3Av}Rsi+%Kr5C8Sij49yXj`!Ts4u4paPE_&_fFaY}>!JEl6p{ah*m zuP$4HFDoR-)0jN?39Fxdcx}}J*PF$IR~3#wEUaWt1;2(O{2|`$$|}MC-15l!t&PIq z;0aoVvvypd(}qIUgPi6Ld0>oeaAx|9XCJ(q?kTTZ9j>$Y$+b0(Cv@B&iEXI~4U-0Y zbSTDnWtV_g!e2Gj>DDn5+$t?O?`hCSFP^L#EbDHv-;d_~yNWxP5(pBJdM+UA487VX z-}$T}h7tgEy}Qg=q)8~$X~$tWwW$xeolownQiU!)q)%H;<@xnhmIKRAbyrr#Ex#UM z->FldxZu9K{_aW&zw-9^0C8S<1AV5d>{9~!OrycyzJCwFLdELUk)vcvM$1!2>*EV$bzMt)|{#GP@nS^pIr&^ z9JzRszw@p=sv$Testbn-O8IHM$HBHIP_2OWOSnTQ0h9?U#@=E{Dx4aD#{%vN$_;Xj zO_bFzzb{9y=9cslins~U)19G_Wwd4aBkZBVs|!`SQ&|Trzi@w1<^A8f0WZS8xdylX z-5MZ&c40WG1jVa%Jh)D8qVrN)3CIlT4fU2(jeSZT?@v77{l#ToU@9|!cTVk+d3IfX z@Kq`Fp#o^Reu7?v-{TX2X4P_ENRAWF2nti-r$yBcvF|W zWaFw&tMb6P#})O#g#W#$1XbWrrDB=j=-4NnS||f0D1;Ia6A%x0X2=<&aY(N-M;V3| zo9ThvwV+SMWd!N`ziVJ(=^WPIsm**~hdx{i{2qqDlJPm%&h|+7(csqE3JU#9m{1IcBR5cu%o&$Wq%ZePn))&co@%1H{g+(rL{o0)Y&H zZyZYwty!1AydH4BL!X0Y`DI}iZ&>jy@$&mh&~xDj3jJc^)Wkxd5b05ZV!S(pdr<nQM)HV0VtF~fyZDH6U0q5ab9eO8j*oR z9SVIcMwIdV-TF5z-APfzIsH1`%D5}w{=LnkiwJ!CN^o@wKVD#O^TkDaGvWa$Kq@ur zvA~d#=Bz?YFdXKN8dEe_{mu+|1}{avPoz7iQlF0heH%K*XLb6}Djlr9EI$f>^}p_c z!PlxhKwk-ZpAwd*CLpFp;FV&g(9uleu>gI=Bu(O8f;fgf$ZeLvPznFX6ABGbp7Yi} z%=01hLoPU#?{8Il+t5cBsEe#({l$x?jNey+t_VLB^=xWXZ>2ZW+sS}Q3AXvjmG){V zQvjAjFJR>y{R;ExBsFPZS~JTl&bKFhbR z&02qW{e30quJDsS&e26~eq{Z2y&X`f5xu~1V~*O;ttX5u=R3=qiQ&7kCXlEISL$rc z=S~xq;8>z|jOJ|5*xcg6&$dLM57wVzSL*^VzP@M=Fs`Za8e_e?Q`ocdaFQBXtwE;n0nwlbE4q5Rr>>vrJ zOJjKTHN^_8GO8z=0(FIme1AXA`N3W3Yb3fscVIVeI_Lj3?tlK`>BWmTlK0PB|2(0q zz7q6>zq%J#ykXV1$b&l+A|Q?hGRE9Y0)yxxv!&j^pcoV<7#61Gb#Yk z$5WqissmfkSP?9SD3HZi z08ijqp-7qb>M#o6+eG8ufl7S0N*N#%dguO-`SG-;H@17#H#NvA=KQh#qs?PWt{WPB zeXiEOt4h!peomG`e$D2!=LBW(0`lJv?M1#q^fXMVJuWW3Gsj}>1OVA1*&zgTj)j5Fzh67+??YOJL`+GIBcf6XONo zfzb~#Gf~1us^}zVi+WHTCX;00eOYvzQv&DubH-zvqfK+e%_#!_)04hlulVZ1*6eub zp1N$$ct&13Fn^Sw2g1)-$oTi_vPA`hP=XXsh+r6sMC=~(SO8Ce?8OGGs`G4h<}`LX z)$i-V?}WG5=;AYdf#;9)Z>7$TyRjrFWKz$F;dnM?d@Ylav{rS>) zLYvoquu*t)B{lTUv{8C2;1yz@GN(gbAg*Y27?i3DRGb%@34r4_iQIqEpJAN2)1ATo zRDI$5ycDp%0wrY)_MASnv{>Qu!*zn+I!!OVSAw1iKNIJ2%`!0<&cUEx+H>*HQtARI zf!7640G~G+x6lw{dO%FCfK`aIyT|P0Q=w&DUlIN!tG+NkE%QU+3-}YU|48%IWuJK8 zUH@AqpdDB!1~^( zR!JNXWw~m5ohFR<6@0#CIE8oL6#{Dn42!cwA46Cn;j{y3@8DSXW_ zLra5&NP<(~;qZs4zn=S-@W&|+1UpP}p6T>zD}XG-zB7~86qxZxN-nb_*Br5bj3Iij z1U(b}TtQ2}*3k&|vOCn9ju;G*0(j3rB+12Km^dJ^L}N|B`h=769A(?JV0NrTl@09* z5GXdgd!svB8$I`t$1k34DL_G|{rkGul!3PS@6mfD=$-KA3tH3!>ZY0Xrh3~L z45I)#c!4-i$lE64_!MuRk8yxkh-afqyRer=%`y13A-B+<9sU^SKTLNEvEzapWl9`ygV=nCD3qVU=X7f1%-UTt~bmW3`+J1 zOm)HysyYFV^ipchXVa!TBmCh1xTtzI%CoG$6hOgJ*(HAa_kCk+iv;}Xy%O|Z_#+Ie zlX25V`_e%8@l6e2kc^%;%s5F71@MV-!~sgMG{X!biek9=c>QB8&?9@ zdJ+G7v%8LGf5Zuq1pxjiO(qw)eCY0G$t4z#_~W%wb9!WczxPVed*S!9dFRua`^qld zDE%xqJaG49Lomp^z*svNzGT3zRfeBQaD$W%b$(EC?{FIORG$pz-yn`U_pOc;CV)Q? z|C9gsmPcoO0)K=J3lFjUnyqU-tBV0J7VWB5f*uGz9<%P9msf;0uKEhS@qrKwLzCVX zY647{mMpP+4<#Tani{2OFuubnalv)?@{1JtjUh&ix1(|g{LyK=Jl*UrtrpI^wD|RQ z_D7ep`;Ftv7q4IOqxJbet^oM}xc5rXd*LT#T(|1Zou`*@uln}g$0wEx2F=t2EEpyZ zkg*gDlI$=}Q8G0Y6aWZ>JW`+ff2IVL;(=TjeH?nF1NDKa4^DpbNpDzxhd-o0fj^`_ zWgQmXzv7qk8KC+epr=aE1L3bx&Ann3VZH6hnZwrtgUAL^6pP%T*e&LPu(wM_ZcuJZ zj81+d%xp0L!NyMmf6}XsV)h64Q^2E7Aos8NF;E}&T{v^izUGPR7TrJahb5!EYbyX= zq_;}Y1L3c)05!Y_snCJHAG|kflPD z{U&1&BL%{TUU>n`XMK7A9MhlUZ3PfJu+a{HpD*B#6kx&q1GCluK0pIZ%`A`$Ywwky z_rlM~XMyS~fO`PNee?;m;(*U;eu6j669*hs4@uZUAL9U>NQ!eP&jR;S1@Ms)9{k1_ zfcz`@e;;`3>`&+q(&$+IrRNv;Gge%T6rg?$pnh?u7fR4;;iqU=)9aS*Ra;ODHP#y| z)|1f#2GJA}`zj<2+=;KNNH{1FDaq0srO(Xtq z!5>$E3zIGQv+K-}>+7%h$>*hsC3>#}y%qkv<)$~Fz5;Oc&I*M0g>>yI1zG#n;DafKu zsveNd0_8Sr1An{;URnnsDXu#51$S`&vHtA#A^`RRm@Y+^Q(pn{ft@$h_gV>hE&Pl( zsh)POuK>gWRE3EHydFRx?DS|D2JQhUhNXIik=>a6$wHubVhsR|;|G{%3%~j}Nm)hy zKh@uH*6;OR33?~|SpVwH@%0s;ForiYinkUF(%VZ0 zA}=To(tY&kUh@E63rH!z+Z|$_%$c?4rECm}{@>@YJO7^?EFK`W>gYfSfE!i-6aJU> zEB&dUND83Kp%bir5S;e{?8)lA67){^bqCe0fBi8jBgGr*t!4Bs=U=>8HG9BF5OZj!L+YVg`fJ0sQ{;mWyg};9MLdr7=e?IqLzY<)$ z?H{@akoT7Y`1nN0h!?~T9CrnX4Kj_(=7xToZIc1My8=W{P`XGgF2Vp~0fC|dOoriC z4uRt2Hz*Lg1XTwW9O-fvZ&>-ubsnb1Mo0-(N8SKoQd+e}qkVPZk4pQKQEBTf1LymS z`_l~tC?6lumhn5GSvZw0sw)e0LwP5`Kq!9 zLU`)n^_&t!rIV29NI(;Rw}ukb6aG|epzo9US!>|_dh>yn53T#0z2}eKsJB+-UvKY? z^3Dn+5RL=0TCC8~X-*JZCFAIH6aL@^&W#V>d#rv#OifQv|40a{1jd!e6?W_AtRGb8=@gvn9~?Zt_w1`T?ke6| zu$LZTQlWy!-W{eBhh@ zAW#f~TlwMQa_)F?%dT!(DOUnA7FYNvAg-Jp(y77@)#sMdc0*CCWBz(Ak+(m+Ww%2h z6d=+eM2cgzD*J^QmKABy&9GBAc7@RriEL--(ENq;G7Pi~DnvR6_99q>Kn)ZC8gvT+ zz1)I8W6eW1J$!IvZB;^C{SyVNzA(jXQcel7!ruj@#p>5LCY{v)9{IqoHG;W{_v8WO z{Urn59VQuJhXCW#eU%bBh1n$*JHt}b;xZdhOL~FBAYAGIv_cXD$NgV&S=#+Ik)8o+ z3NQ_UbQ!za5NQ9|V>cJ+vVZ8fDW<+6SO%lE;MY+Cgg@)OP~1*`RuSC(u6it0I|D=w zVE_4JHxmQM=(z%TbBqv!=n%eJI1b7p4GJ1zK!c8gU}b?ki&-`ws6+|Uy#SsCiV(=t zpk#rz*#ziD7=t1YAO+B+2p{fgPTsO~e58L&yW@V3botIEG{8 z_5@$v3mm3uSvA-uK{r|uh=v&N1@K95&>&cV7d?QoKnjj@IZ}YTo*LRyKMt60N-z(E zzXtxl>*=B0g135O!Ce|-r~}9Yl%_$CUJikD1c4aP7L~xNz{z57X(ibE0%8^@F2iUo z!u#sC$#7!t(G26Qkc`Df0rcS;^a5B6Fna#jtqUN<5@aLyN=q*Rj9=la< zE12t9AjyEILGb{h&q#J8{GJ6$1;J8+$OsMC-{m{c2K5>M3h-?<4w1a8!yku0t^kep zBxoIdIGSNl0GeTx8BiKjfzqzCuiaXVNBPzKf{gjE1oL0`^OKUjUNp&n0tHD@*owyNFKP+Cr6~H^fs0Qm2 z=m|yv1cQVbAAE7wy<~&B!Vc}9uJsdh*6-f-kls=Xu=hME(AQfjP*s7aJ-~DfFx?B# z{DcUBs4YQ;i-WPK0+XnTQ{kip*^V%d)d6OuL+B6#=qL?Ja570T%xVE_gI5edPXIx% zEN}4 zw?-NSijDE~1DHIgvp*%3;I`(pgNQI3R~i=^5)}Qvr zKN&6FZn%yA1#4y8S{a}VXOdKC7G<=!V=zJ6L^vIUKaNEq^WzOMv#kA{oerJe6iFPA zuLh$89tevON-Y2nKp^~LI}X^<9*rn3z-%DVqFn(7o*mj>W3zex^uYSx^4P}HQUJYS zw4`335{bh6-V`K`jNEpg`m+!KM^G9x>Db zVq2sX01fropsoO^&G6I$Pypfp6hIhq@A>0*F1&x>AGzH8#EAasrS)G}(AoE%J#?qu zPBoq3!upR{21swM>>m>$#;gxO>2e{4LY`*&0LTEvnLrf5P=M5$q*71i;M%{!bF&LJ_Rel8iVR8c)z@Fm{fPFs4H{fIwt| zqyV%=+IIMpNm{fNKrYc0K$q6a2DM?(?&guZidf*+GS%UJK-|Ui_Z3FV$W!aB^k(G$ z$C@Ww1u!K!WawN0;#|-;77+!20~8@pY>2Nu7&j_Fo(~i=L18wKdjKlJ!~t*2j7O0Y z=);bOim)yv)&o2nq)Q#x_TVTNJ^!iF?=H>{XXP^wj_y5w=+0470A+ue394j=4BieK zh$UHILk#0k;zYQ{WTT}3si9cle!k8IaY}_hx{2UEl8rGeERF>+6yT^0$dUs1j$q#s zsfsY^P-cYU1yF!#FECMfftA13heBOAH5%SI%Qmn19vLb@R??q>vJFdr>WyO?q%%Mr z{*eEdED2Q*Ym)tmGzgytfg+Ui+`|9FUVykHn?bqW8_c3SX{4`70tUqyq2dLp>)#cC zDbX`9s68c43eY(D@-4!WQh@#ECI>d`-u5Wf;rjDF`={m{QRn>s--@Vk!nGod#F>ho&eW#~lH2RVt)7#-v{!2=AWoY>;h= zH)d$V;sAL8We!vmAQ+Zw-B~EX4G-P>DO`M?C)D**X=vBATL-^T21>!NJod2he@0H) zJka8ecNhg4_yhh2{&@ahUch&QHRDJ`uK}bpK(qG)Oy!ydLR%y!?g`+BBM$I_n0JR! z6=qjJoD|2LAYGa)hZLX%gU%kmU65at!r*8kNzWUM6o z-UAH(hn)anBzkCqHwrYvun2$+0u6-cZ&@KhQ^Sp*JD* z>FiHWe|isato{lbGZ2>mIF3T04HD~*{52Ch0fL~HLZSSQ02INXkWYs|3D_8!Vus=c zq~TPBBRkY-5d_1qLxDjA!}0f;ib7PpZco6@OA?6rfUh^#!Ca{NVn5&7-Tp{(2L=4GJLW1N9+Q{9-}~)*t#aEs*5@ z!T%`0c%VOc`cr3y{~w@FOo`_Eg2?~{2t;%pC&f_@AR9zQIC=r`yW`r_I5wRg0j5Rh zGNl9un^+n?EMPJc%(jk`pO5q1icde;$3E}zZ2i4dw)rNp12O~e_V+ggMK|0i_5vkRwDtxd$6&NH7;YBglCwWF_ zxE%}V;)w@#77udglba`bs4J@keToC;&L_7{7H_m_`1ETlRFg?&enR65*56Z~P#>K8 z(|J6gVR>tpNB>5g^Rf+w)A2rGrL2b9!7xf7 z7(}BCFo>a9x*TN(;>Z-}5pimSieu^(P;m?|u;;Bp2_E0@Mkgzf-isNcxG6GEabEvH z1-%~l>h3-8b=ouI&-I3y{o{-9$o&)iV*P#or;g))cxOPLWaT$-fFiOV*Ocu!5(0yKDh8x`NjC9b^)grVkbu+5&*+f^D!u;1F=F7 zTsao7{s89&eVg?O69dR)0fl^twqTHNk<{^iVUGo<4#)9{W9@)gL6;PO+JM~h=vyaR zP-xfbLu>AMdh6i@_vZs+_Xgkoec#x(`t75;(;dp7w4l#hlPhItE=_xC=8(*0IAer&tcQ7=+nBh$>#H(80N(z3;b>xa-oJ*9z+a*I`OiF+Pcwvl;kVfSJ zg+`1c#2EFNet|*>NQ(l6WU2IEvRa$>?|7C$W!#&n1Um>QvAND9y}dITIHADse4La8>=qRbGYHb6Yka@%hmUb|^*`_m}F zdqoj|JA!tde(psZR{rVcgN>(je~PIj{NVm!gFa4pgYtmz%la$uW%n1*hs=-O9ojR6 zFQ77efW7!d`V%7?bN?)Kv1Cp4Zm`l3iJ>@#wz=lP#rC=YTO@6dnAHW85&HC2N|XV* zY?GXAbPBOR3kq3U)Y+m=nI4t9HcwD|k9Etp4t^7l{BBkR1b;5e`E*B5Ozhpd@7&?F zx;x#WgkN{6tWT`?GVKBA^L%J{cg_#kU&ap7n=ikJ*q_v=2f!FxIuj*-ah8?Ib?Ho? zd{1!v^^#`!*ds7hQW(<#3ehw#F8~yxS0L^ZAQqrDpp=_ug$}55%(z0zRV!z$hipA) z^VqtZAG!ZCgl*@l2*S}Nwul-Rx-|S~sG*DlEUCqzsAfl4>t}AB5lO&OY$g z)1Fv=a{gd{&5fdW+^xTlJ{%0ze`W`m8DI=^ip5Ye@2XM_AZk-_(%c{l5>Aas%@6gu zz$Lo`+DbqyKtN1|IChOS+BAu=c5T49Lc{HNKvqjZF>pvqFjgqRrqSn~$w8t_uq>MO zRpAwW=~sSY&eoo@WaFye(49#5bx%47zi__{it_yue#iZ^Is$zfZRlf5@2u!0%Cj}R z2hy95J#^Nm_x+*-o`8w)ylfd>QUS`~Pg#SEm!4;3iCRD$m+9#c4Et7j>H?k?jaea& z2UK!*C^X#W3bmBrtrG*JM`h8J&Cuhv9{Svo!RsHq=gaU0b3L2e8zap#bRFL4-_pNX zXTLF4zo0XJ=B{(E4PyCqKQb7)Ghh$Z-r-ZP+!m?MDYmCGJ{|h7_csQWry_e``le$g9+_?is<~wCXokZ-3-PeP%4b?t*|9%db0g;n$stjqAcs%CpgKbkRZhfj%#V ziZ9k*(1(pLIJ0crzuj>Q6*s>CP(y#snMsM9LhQz+8|6BzF*Adwz_|2Zka@w-RgI&#k) zPi%g(P=tR%VBRf9pK0}T(}J(hD!~Wy51*S@tqS^ZaX$!utn`Y6DB+JizCPu_x&GU& z;1#>QNP9{NQrO?KKAdFZi)4|5yxM;U*j{x+dUaTY#zk%rUn3ME4&cLjzkn~*V2+T2 zCTJ3|O6<)ubdWJg!aad-EAvGoWnxe9@YD(fi6k64y9-6Q?TL+VF4?&9Pv^VfFD)$o z+UFjAXMEp1NbBIS1hf_cQ1Ja<(Ugx3uun@Dkup zwEPx-a&iUScxELCm3)mF?gy~E1~+{U1{(Vp_GB9k*fmsrc$mQ2>OWeP3bYV;Fc# zTp5_3VO&p25z1&08S9@{h8PG(2o$GB_(0tz@j&nbjKOQ;#E=?&yN7r@WQOnrdYBj! zpaeRQ=O~uJ9RdPKFi4dO674rdkU&Wh_MSU>-_`?-?YBR<>3lH?@MmRhdui#HwuSzw ziLrQ<{R(Rv<#@eul=?>)k z)#NfBnq0z`M{vJoeI)pS?tlXP^xMJ%N;OHqDjmTJDT2=KGZXi(+41Ph5<)4&qWcH_xmyCis0d{BZ`}IWhR@Nzx%-X7_apQi z#V-nSW$}j#;os+Qr~Uc#Ssn5;%<3zRY?z;=b_vTr4SQH`YS1U7Jky)r$@#kiw2Y(i z{Yibsxj#WBqhMbKgK{GhvnkOkbP0D)kt*#<;6aX2rUPSi{IXFhOqZrU;G-2`j$T5X z!xI$MV#cdT0cL|lo+Sbj=@1*}?0UmIo0TjgoiyzkMMpP4xDsJ=f!uha5MXC_)uhX5Ca zCATj{2J(1i*CCG%g3m5584VYH85S_VjLx*>C*4WVn@)K~%df+nf2TVTFM|7H-d`sw z0RLYV%2yKp_-lD(FeR`9Zv$|NSQWAy`X?qtpNGp#iJ`4=U#0of&_@z0A-+dFwzc|C5Spw1S!NwA)LF<6vBFD zVp=KQI=cRC1v$EYXQ3oI`#8n#>+tKYOrr?>TSxEHLFx4GBJ?_fYbdI)zO23ieBjRi zXYMX^Bi)iD09&*#v@futWujh&VIJWyzrld;isn_vQTEq2I$Zz!RhBQb6gpL9YL_$f zL`LSxL*+?@oWB25-F=GuF?><~KT79swa1-atMzx6XSX^q{^ForGN}UtvAT@AT7b%%k zUceDVMM{z4*(FhaM5{#*s(~JnP%r%ZrytW2bSVZL=g1nPZsWF#_?$dPZ}PqV@7d@n zIvwc)5g*TgI==X!!V@^d`|p+LCLl2W?(8(o7VV+F;r!0_w(*Pn+wOq+wCWQEu!-*r z!+&Y?aA^D|wtD{W&P=*`uSX7@Mme&mT);1X)G&86S+4II$f$J}ZrBO-NM%}djaYHO zzHg({P3oY%77BxS18R{(If$GXaDWv)YyH zQe@3U`_P>jexKm#Zcc`uK(MV12^e~NzErKvPIfKl@2PGE+p6~3(Iax8J$u0g<5%&8 zkvz3JD{h@9yYo8S>;$(K$v6OX9%R!GApO27R)uyGiW^K~J5C6C|3(u(VW=PM0E~Nio_Wh8%DVc?9mB zq;)?o-_WiQBq`6&pyOW(SrzS5$!%%#i{bi3cO<#GIdgSUXd%i&<6p`X!|&GS7=F{9 zJ=z$2kKT{>&k;v|cat7OfA+FWqHU|~@ZJFa${oPtb2)Sqs^y)%S!a|Sy@)<}^t-uKS& ztjpu=jJ%Pr@qH*c)STAwMSO?V&FcC0GW_5g-RY?BFw482e&dqt25bDL_-(@b-QRt9 zp+&Hh9h&!Rb)fn@4CiP3oAfU11o^xpr?|`Tk38n=;C$x*ONI7&rA~}(d)B^aBl2k8 zu%jA5(;*|*;|O(@;4nFU_v{E-s!f|%TGVQhL0ma;7JBsF8Ojml3yd_*AX4M!=|4)6 z>b3n?)}}PtxH(x2p7G=N!GAv{@SEV``MG6>wAm4#@r(LY9vXktHOVfuXYcaedH#BQ zobF=y!QSo;4}I&;!-R z>;xRaS%SyNQ+a{&1W%MGy8%b&!daXkNYyjcAQVA+btlT5EOP|A0*J_VhpfF*K%+nA zbA69YV?b~GjMnj8O6Sl@lpSLVThrIh5NSBSx7j@;PL#*x)nrZ;-W_KWpr+f~@9);_ z&8TiD&rW#gToG=$;pMn?^+ri>KfkA4Lgeqq3)`L@fHX=W=!p`2kVZ+pTc}N!kQXc^ z;s}(Y|9H*~^tEWCK#N*3HG%~-3hW9ozTAqEmC_U7P(AyaG3>}J1fcqeaM9qtj+wf zS)b>Q@%n#muQ}1By+MD^Rn8wMb}DpP{oQ*9*xOySJl`Y9dkn93 zhNEwMt4zB2z@U<1m};@+xj9Z5h%{X+;|QTeO@}zb2lWC`t{fpwKr%&*><(FVp@yCTZw-+0Fkr~*K^}|h64-oxz6WC`Vfs0aC!#qbzN3o%&n<1b zrJcef;-frW+}f*4DLsLxf1y1eU7v>>)!=2!a`!BXP$aB9C zXK;#)=V$E%S?jc%VDB9WQdNu-P>A|$@t!aKn^B2On^-4^QEUOtvCA(%JA$2oYNW@A zAxfS(M>|GFw@9ize?GqXh^Oa1_us8$?7-kjxM)t$MjzPOG_f_^F}B3K{>aD)6uG}G zlxJm5k-upVTH401vfp?4a)6-gLhT4^I~)Dade)W_y_o~t&|`6UYV2^XD0n0KC}mZO zVXt4(P-VJ=oS;vY?Eqf-^^RT9TJ6lS0#FKsA!p1HF(Iac%iHh!Gn z-=>RP#u>t1XPRE0ZF1{8K-=@xMD|A8e3M+@Y)3eeoDK_Q(1o&{FSJK0v#KUKQD!G- zCvY20-$l>~vir$6g1W)(2;{*SlEGXQl=RAkTem}S26PFiN}S~J`QW=BJl^j?z631` zG5GvHx??krE82hQSLx-LP^5L!kLXpZC-)e-f-I8opG zv4g7;K$2fccI~#C@RB-%raU{!obfOEOv$a3$G>}OR&SaMod59qZ=PIAv=Zr#Ue6m( z9g-Xag@{zTxk2EfK8~>6rO>-V@XyahHIpfvL6AI4pvkI?_R9>}`sgSkc~@n#>c-6X z2u#G&>K$s9s%;EDJCvTCpewk>lGF4xurYiUT^Ch|`et@I!kA=NPmjQ}V@w!-YyAX{ zo)+Rv@5-L{w&L__Z*BZ{jZP$oo)yLV@u5mIZ4<%n1WSoHfeX63eS%scFED?IQiK+D z?OeGXwQpo;p!=S#2PQ#x=ruj=Wpr+uc1Z#%W;Bh zd4Uxu1?>cRtuNu=0R9+2CJp@YzV%$K6y3Ih44Uig3Y#Y|taXOVT8DD*@BauGD<`p{ zEo0n1FJI?-`92%v$(X?r&0+WwT=|ez28e{bRb4@awr|%B?8Mp|HsO8fde5{rY=ZkR z^`*1uzIbi#&zrSKpK!P9pSO9z0B_uJi;^qJ){BDK%pH=r*%2s3JBJ885+OTJxX6S- z?Ft9_Y&49s&=dZlkZOreD zpThI*Dd@mnT8-iyY5aZ3Vn_Fr+7nwjq1>OsF3`9`4O%=LQK6kJw9e2KVbezPSh;iC8rFE*Hr`(DeEZtKY3u4yJL_2! zU9b{qsYU(>f3mb_dx^TMG%JqF8M>0J`kCYqZBSJX(j3Y0M9U^i$d$m45m6cXj`DGII?(@29sj4NPl96|z} zu`PCqbq>6|snkaDPFjr^^nL9@_`FE}&5ia$b42@|(7^e7O54ur!TGf{tl#l5C+#_(=`OJAQSbIG&d~QfTdf8XZ` zsF8vipc5i(j4$Z6iy+4}TV_o^y`(fN<3?Swc0|wT`#$=b82mq0!Kx_^qj&w#JMGF0 zz7pJ3c3Maf@%!jv)6bxDwB`FJM*lKtU7H#z^qEEcBL{d3_~oF~fm4;J)uNs{5#tA2 zcJ~r>-GFp@v1ZO~bLZa?-pnUl)Uv!*4PdGCm_m=B-RsV&t``aBE{-Kz1|Csa7%n|zW?d9t! zlEFj*JAyZP)gn$HC&*5q5^3cCi%yam1wPDh0@NXE?+&O^j4^A_)l{=Faq@*8d(S=g z`5WDXE>IKX(oQw;oHo zp{lp94@C+}Pu{x0BQ`I%)?Es#8Zi>l(wrg^Auza2qCM{D+|HqG+fLH?Mjto<{W$%) zpKF)u4ozV69qpUyJZbt*kULpdWN0UN7^+j4D1Q>@&W|{r2iDK}-@V3tb1`k6uZC=G z7{wTDlH6_9S}D4Sw*5tY3ayi7=;2+Bi!mk|*A$C&kYFDN+sz8T2lOR_idKq#eHh*U zotguElfQs~+HBNcO+TxgZO`onQ|&#liQx9S(pfI>xpe~1m&(AcC(&m7#npMF8myWc zafXgwdx2lTAAQf% z;NM65O>i|BqK?zMzjSjj6Pu5_g3qQm+%t{vb7lPZ&JjJ;af3ZyeBeO)2WW7BJ#p4M z!Y0X*zo5BslI7VM(4@lD87hy+no2YU20srx7s-8Y9{arJ@V>5_(yR`mtJ*GpCCRPC zHb&o9T6O2<_U~_mKax3L%jMxDsD8d3zjZ^usaQ&6M`*)9kwnSM z&QNk{J3<~qo&(1K5nG><*E%`v*RANx>h;j$2D@V0P{3Lpf1|xXk;3CcdD*jAO=DjLh16&feGR$nq2or}cLZ zs^#}-v_lpd5>sVU+=PgHL7okFhES|aiw`7M_M+v2-F>H zC7IkN_XHG)U0TN_I(-$F@{VF$*Kq92a$(?MWxs-mS^0%M$2IN_%-b3tr3EG-QZQ5* zZQzG+iRCrv%k~_Z_;JlZEg|#7)IoT3x;65)w7c7e%_}mXeDuT$ZSXOY)aSuE+Y>(hPb)keaFWWe?#Qsh(Pn6 zhhXJ6hneQ8Q_aJNEX&Z!vSF=~)K!fQ8BSPTL(6E_sXFr|2B5SL`n#j@ci^CG=Gkz% z@F0;al^+lcP}0xXeoXom9O_FgK_nxPVJNvp{ESZNnFOwL{22?{tZPKko{-LN_iav% zD7jPnWWo<%k_p`S7P00aaku>mho=2?823nA?R(Qe{`%cP<=UAqyE*#{kR+ps>6z3Q z_%9(PUP0W5kN4C;L#7!hA~LCIHA-}@ITl{{KBs3yq9~24WE6cE#M@!sKpR2`R5e#* zq7;Wh?m{4CM)svJjzoYs$QTua;P%4p`Ip<@de4FLSv7 z7!dKah$_iUc8>MXk*A*_bWK93f0CM8lLmWvq1xb%=tR0-sXt(ZK~gNPK+Uq!^^~$k zqH&K*RWZ46FX{8paY=N^-ib&z`ysA=Ma_Pc+3TFUSNaLuKOW0+umJ|n*L?03Vy e6{Z^XY48)Hs%F9M%5V_?0000U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG5bB(p2;g8+9iYtA1KYg}M0nKcplEpMVEb43qjT40)24Nk+JrW1y`34>&c}5u z0SD2GDOj-+#e5Ve!$PE&qJv25`}z)LTB5y zZQHhO1<$sPu;%htwO_}(w^i2@6FadHk%LB6=9gc7neV+)@C2j)m-m-1o*xb`nZ03j zY5Y5iE)9nBqu-IeKD_1dlE6NPxxfGjjN!T?AOwPvFs5@Hx!yBH4uh6KQoA^(%qhe3 z7LbCSx>ozLiALk{iT%XFot-Pfoyy4cI-i?rw=au==8e$0`2ncf}){Dmni61IMY+M;1zTLU61xc-g@F;k)?oge;+howJVi}&jN^_yq ztv}5R_OSM=uvdM{)UetT7_-rA%!;5~zNm4_TV4nd`v75O2NT_PIxeO|*SzS(Z`J!P zX=D3A96VHqrUW0fr!K?U!tUy#W%;FPft|SF{=seTdxwJuKjjezPk8>5u=sCY+r7>8 z)4?zx3Q@IH?)R^Zfq)TCSzwMprUG#^07NJIEvl*hlyw}TUU95w4nlK3tqz{| zs^=d3`j_81_~&1K{(tSe-~HObYu@(CgX`OOd`1|k_b6N=$^kMg1N5@7LE3{~J^bK~nEhc>zE>6XkIPK`TV&Sg-anKk!d{_5-H{`5Oa*KtJ)B4`BSA3C3L?c^?mm z`b+bhoB3kDd?jKjp$ybAgTzmd1*gT99lYC9odJizgd0fV5j(O@HfFY0mcoAh%W`t% zsvSRY0*$G@mqBxk_xQ}$zVT`IyD);%8GR1HoE}t{DG4zFT_7!6SEqJm~>es&Q2JzkRea#IVCLCJ)T=wu?mkq8)gx%_wbGxkqOdt{XBqjg?2}88~ zA?|PtIB{UCVD7W_n~zGZ^+YdM0-i>}Xm_4CeH z@M+h7;tQVazW2|`sJwJGv3^2M$mIGrII1pRiGvcakBQ}+bVR9A>rb651LrLbRn zo9`rI9S;0o__4#4Fh$yNvzyc;k%?GKg#*_s^Jn>2R5>c7Gl+hN1XZNGf zvj2A7Sc-oPAY=xw*J-s53!XI_ZG>nOEMRO-x65~U%DGSH$)!MhgtYkdVT`cwO;EBzjX z?M65CgOsU79UX+RH80T9-|tp$=CT0a)e+DFn5`vqY6cl!4{~03fL`2w5dy5R3rO z$P0o{i9us}t2|+U&)SW?XU6h1mHx`kSP+g-^Nhy4b{D%>dg)bv6GpX}>AkH9N>*hM z2mnV2N5b#V$_NIV4Jar|3YDPLB;q$bF^AZsWkF87>w|CM|HFeYKKQW!j7DyJ8*a>9 z-cH0YtRw&s3%kz(AZ;8TbpUO2XzYbbb2j(@K(X6gkaJL84rJ4FJP6~1_d!;f`Q;}a zD9=->_^c%}Q!HfwyZw2n=|-t>QaL1OPNGAhxU$Q2n#n2wL<|00@i$)Ks`vnYrg6kuytt-C zj1K~TXSF#|U%}H2crB|03I+f=K+;$r5Ch!|9kAF^H9-F)EznAU4G#$*%grmSw{p>$ z?X4y20>5!ZFoUKFhW{~`A%?ghU|IWye9zfS$h@b$en)-gd-<)}Qn*!_WgZX!>?o@f zusX~fgfs+c{-*^301V)w`R&?LsayM`ob(*Y+`(}H`Ks;qWORYlEii%hd|P2=-EZ%< zH%LC)uYD39=~i?tx)%VzW_NYyErx_dq5**efOdSQ_sTHqeY z71Lh9xGsPJ1nm?cxkl#o-2p5Cp!$Lt1K?6)D*$LBoOc*Nj0)ZZAkhInBn=P%ngO_Y z*sb5*U!xz@+%9lbb4v){NYcX2)+}XtM>Ub~pKvWC>0PO*46rQq`AY&%`@nNS@F&4bxEV96B zpY`{Jz3RqPud>3po;C^-Q$Pm@#_R{MmCP;*oj?H4PNV~fOsoTgdS6=LO@GI2nhI6> zzbg%D*P#AM4q~mv5N(`NX0Fj$K~e%S0~`Px251;U2s!r~ZG=|mN|&7)hbMPitFyya z)f{-bvn{T+c$~&P{L`gJm7v_xmT)#cfqD>njoL0y557-w>X@MRR zddgyS6b1_@18NCMX(WaPAYL*SObuHtbLLwP2**(l(B9Ad4>>Y7U8*8}v%AR}KwDz? z9Ly)r5-9tO!R|v{Sx<$G&IDrNSWZ~5YAY+0HDLi_xH)1$VNlt@A!nA?V&{w)lcc+b z0PteBy3M`uA-}b-*Iq$= zi`{x-ve!5f4(f05&-ISZhOC3t>Rasoo6~kr?wvE`=SdW@ui=LYmS+|Kfb6phBp$~7 z@rNTYzsJ+Qs~s0`QFBfuvdRP%Iq(KV8l2uROgJ?Uf`(x zzr%j@S=?jF?nNukMa?yQVD`tSTx)T3T1@ad7@@3L=(&u~6hTdd7yv}hsW2DTWC-0T zg}laNQ(~Avb}TbDFsDD1^$dXjhzv~OwX6eGj^V;Vb3fl*-vnqn5ci}djfS)9}AxbA039IJUxaT?n&_f0l+^f1%y^IA>s)0 z0U)3Wh||oVS)(KhCk=>Ueaq@M3VW4KY1rsZ^=ktr$)f$nO3`|s|5;=389vK*CJjU= z53^8vuFX9ZJfepW+WZ_n8(@=cphsmgj>J+y@aFK88kCDj?DmqQe1h>2WPDP{)H3 zWa3#zskX^ASw1&7i6X@A)v63RLgz^*22f(1rGe(^*D7e&xR%vrdhzbw24$Yrg4f{* zA3)X*c>S4;xWhg8v#GL(hV`um?NsJB-x^q;{4ekDI>9ZG4G68?Y74dw~?f~>bF zCQU|M9TmZ9@`KO-$cRk_rxYNGkg<=lOud_Th{XYyXS6yJFYx8dy{n$-+3D&AJo#I~ za4nlNMW-XB(j~@$D(iu%0nkKd21y^>M1&60_0LalvzpM5v;g86L?Y9D1@!W-XS01Q z?VS4+v}<@1;FJnDm;X`~&E>U7Tz)kdXmi^9LVN=Ce4 zP{fcQ002au0E%~LyT!A0LP<%hf193!!Ic)${FDo4slk55q*%P%j*+d%=jXxWk?A|Y0iD54N8 zMvYk^67LYlMr_t2juGd@+G0G#RewU)2fmE)zNC|5{g6eHy@Cd>AYQVZS4OK4bM%8% z2awi@?tHmxw-Spln*(S-;x@fd{+3A2pcqfRNdaS|+Zi~!q}!nF7A zpS{E|2Pm8*3%Zt57wp0$Zfpr)XnCQx_tHP3AJCkpf^_*HD#s^fvstD&%?u4`wV^N@$02?|&CSHu&zq+gktt002ovPDHLkV1jw7 B8ae;~ literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeLargeDark@2x.png b/src/assets/badges/gnosisBadgeLargeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..79768e5d97e759e98d01596f6c25b30826a57a2d GIT binary patch literal 11111 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeLargeDark@3x.png b/src/assets/badges/gnosisBadgeLargeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4975e795ef0d105cd8ce6b4dc236cbe38847a66e GIT binary patch literal 20766 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeNoShadow.png b/src/assets/badges/gnosisBadgeNoShadow.png new file mode 100644 index 0000000000000000000000000000000000000000..baa5ee94397e5ed153cf048a786676c7714dbf7e GIT binary patch literal 903 zcmV;219<$2P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG_c+}O$SZ-l~kb_ENR^#B)xxTTFn~u4?vB$~0;^5Og zSWBI!nr3=!)zrt;)yIL6gdssRf{}zTO+XViDe&vwbTujb0000TbW%=J0PpW`5RZR= zkdTjmfX{FcP_WwXGnq94LMjHDB@=>YSrTNBXSh z7kqFfm&ogZr=?ix6sbzYA$gC(VgnhfGTD6W%HLef0{E1gYQ2U{FBcOFr+u*}Tfg$) zFLS{rP9`#w&BM`Qb0v0Ogfm4UU0~e&N-TXqNsn%nW>200Yf@Z(0pMO;s2E5aASf;$ zO9LH3n&;wqprOOIUxk((v~YMXO5SD5IPy)@d~+nFA3k(Kuq}rBWeHu002ovPDHLkV1nnch5!Hn literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeNoShadow@2x.png b/src/assets/badges/gnosisBadgeNoShadow@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..57e1e098b6a61e020c6b6501b074e25cb3239654 GIT binary patch literal 1251 zcmV<91RVQ`P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGSZ-oHSxkAIOmYAK04H=(PE!Ey-w>Z5KtO=sukY_5&(DvL zkZ_L>5WjGMV85`hpkU8$aL<5$aM~^W0RR936-h)vRCobm7@mMl4M12~AU148K~Pqh znHhJKe6bmV<@?{KAfhk>b!qX-O{^HW?_#ptU-mX^L^-ln1 zDR-MdnAh|}E9e0J&9wX>5N48;wvwb(IuWotxy}W={})f%F$Hn^S4n|`orMX)4#Zt4 z2{8y0sr3mL6Z^z9r5}tCrK;5@w7LOTQ`0eqYpC`K2gCU#A9CprCXh=nura(CivU6K z%P6l>03)TAAbJ@$EdSbph2a5RjT@F%29KWM6H4lh8kUzjY*>D!NGf8`usorPSKD`2 zp({0U*2?nq9GO&u)4s4yEU8K^Gq656Z;~9BePNq=(I}G{mRG_r#m|0Us1$z@@te%B z{EzT~Ej3i7VzL>QS43VkW<;p*-Y~=RO-I)Rt0eVsh0!UDpj@3w96gOx@~NwwO&CS* z06_rY>QVUP=})$8wc=C|IDqi0TuZG8;QeV|5{Qj3%*p+gw?@a zBiA71S~5m=4X;9|IdoX_j5EkIlO`;B#xe6oM6l%zus>%+U;|2yE4aptLXI^XP;d`% zswt!~oO>heLzqs_?|EaKKs>QkGlpAloZ|;@fyPK2oE&+R*axDRghAg) z^AM<`ks$aT%f9tr>e N002ovPDHLkV1mA6A#eZy literal 0 HcmV?d00001 diff --git a/src/assets/badges/gnosisBadgeNoShadow@3x.png b/src/assets/badges/gnosisBadgeNoShadow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..42a52730e27424e10835a2f0321c21f70e41719c GIT binary patch literal 1537 zcmV+c2LAbpP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG6E`UnHYpP~Dik&;5;rLjFfbH0 zDiA;*6gMdpHYyZ1DHJv+6g4XoI4Bc0DHAs-6E-RnHYpP|D-$&-5;iIlH7OD_D-$;< z6E-aqHYyV~DHAm+5;rLlHzyJ{DiSs-@ax_aHYsL$ZJno@FHJy!k%WSggn^KQAwe`s zV^)uwjy+gQOJi2z;L~)4dE?;I)YQkhzOk#brpL*=f{=rBhIw>_cyon#)YZqiy|LBR z$JNxwSZ-lFSWCvqyQ{LL$H}|K$-JwwrjMMDSUt``0000fbW%=J0N=mAARrJxK;KZG z&u|cc5OB}WfRA9Wknf;ikk5~Buu!k>?{9E`fA&A}CIA2fD@jB_RCodHmW6IBy%t6% zX;WtA-uv@jV>d%(W_H;SbEcYtfXcW~wCeWf1i+5GaZ?cG_S%^y>U&mCnbV8xqx0Iv*PZ8r8qQs&$=(HN zKPk0T2O@F?{24EN93a)t)w1J0HW2fSLA@#TKukZJ_csL zh?aqS{fSHhljo5V%8xq^7!SIZcQP;%m^_b|&ysSO^UsGBao_Syp2vyALhFkNC`3o& zTs)KK(UOf@wzy~y@&n)Gd&I(htw?{$#54Jx60GzTRr0|RaO{~p&k11SA}w1v!)3a% zYEn=BAetw4`mpRdK$N{Zz^0|yF90>Ad{AY^?B{^p6D2roYkFqYl;W_bK$-$)7Du5T z9rAy{En?&ovy1yr!nh4-EUGyYMUTjIaPyywLk^F#tUOYydfquIv&?94x1Sget`RG7 zjCx|&@QQ2$kG)L2JSUM$djZI#PtxEP(b@ED^nnFBvFE6iz6hTq_dxa+$;RL8cE2s1 z0;5U%&Cai-F*oSVACFY^H`sU*qqC~pyBQb2XeWvC4?xzuAeNFIYygyvJu68srZ$^p zQqO$i2u-7nOc!WDHFQ2qwssfXRL)ap+N3_zL6(2aHIvlg8poQrrp(cv8?ZF0sx%nz zO4G19n>3=chEnZ6pSa7{>|2y}Cuz#qC=Oc`MP+fcN0NRRX%o_~M(Iqp1Ixlp@*`$O nrvGTS09te7lVfW6%`e0&fkV+bLK7D`00000NkvXXu0mjf0ddAx literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravity.png b/src/assets/badges/gravity.png new file mode 100644 index 0000000000000000000000000000000000000000..a515d5551c54651ecf14ae6618e74f75673276f6 GIT binary patch literal 2558 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 U^_n9MWdHyG07*qoM6N<$g6it;QUCw| literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravity@2x.png b/src/assets/badges/gravity@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..29e60cbad1c0d91bb4b3fabd250fbf4525202d37 GIT binary patch literal 6193 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 P00000NkvXXu0mjfJ2MZ2 literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravity@3x.png b/src/assets/badges/gravity@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..55108967deae994c7662c686d73e0274e69796f2 GIT binary patch literal 11153 zcmV;CD{j<@P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGL(EGg4H+x4g zx3#h>ZGzmb-5yJW+#>&%C!B@f0sa5(p#62eQODT3;T((N*n7NIr`kn(XAC0Pc$e8h z#L0BQU3jL$j&r`0)(Hv%F${%ay#Jk5whHr+zrnHzwQcgY48Rpx2!}Ul^epeNM+ipn zXAeRl+`8NYL$P|0Nd5H2LO?$-Q3Qn2On|Km0Yc)sc<$0Y5^zg^0OWCpcbf{hN+(6K z;56`>NEM&SWc4=vdDrVL0gKA=KgOFvxu`9bFHwlYhK(!lo5Z_1B6^ufmQZmub`k5E z5T3PexjIFu&Wz-1+&ar$mpzHh=nZ0Z$4vxlea5^g;~Sn;;JQjot$%a;uyS;rh`!~x zhiyRj_55r#GcQ@}FTc5mDCQmG6gQq_^gDiZ?`8x?R*xoDh$F}AiRd`cvk(=hn*b!!|0lD^o$~M27fG|W=(xaK$0q7qk41gpKcvT ziOHlujrYsDIW9~DMdP=NqEsmKiD3C1Vi_aa0*$SjQ`?!XP@~>GffNiEZqZqis7n(# z`%ox~YPg5<>qxN{dh1>u4z#gw?w3-t&~_Y#f#_(NnVI?j|L$oP;zT_@zRzA}w~gq| z$V90#=|EZ$<;bW7n!ATaqlUW0$Rq(-HF^z}h@9|!XQT1bp97Q)^Svj2DYENoG0TcU zkVZ3+j0H24u_OaPA`^m=Qj=L63@-dWNh+P53q+2|2ZW5l1!ds45MeW#_YZ-!FjvaV z{80aYU~W+`N9`N3vqZ5F|r3;a^4FON1W%R`nP~Bm!amIYf+>6sWD5@fJZ_>zh8+$n&u=vFS%>mxTG>F+x>UnX1i@Zjy7aL1@W$l>vZ|8Z zU`wjGtVmndXb}#G53_63&cyQ+bu?>CmMi3;^ZQ*QX!4b*i+B!r4566NgD>&;W(Bxa zainESu?O5%1-;E?(~^NTBhG4)K|rRXO0U1;Gbq9EOlX4=|Gz09t#%H0-_QZMtH#q? zSF+mj7CC!w(e_c0jz1sGX83aMMFlc% zIJj&!#q--&(zdLKs^GmPOSX@BT>mb&Bsi^Rrnyxj#jGZm$$U!!_ts?8Or#db#I@Zl z7(m0S<9|1mc|*>Kmv^qDts`)09aU;uS@OxY!gd9_CBdE$HX7kHdx?mLzbBcpbnl5< z;0hh{txdEP0YG6MlV!QOK_l>sH+Qe*9-Ol+Xf<=o;c^S4cFkPWt**UW9+(_62|#a_ z$QhRP)0>`)V24m8zB)X6=qP>Qg1`u%fS57i74Pm{vt`+GZh@`<7g!Z#rexlhK$!d0E z1W0}O{(++5xu7I-e0_A?TR>!Qm8`1XP&!>iU9EcGF`hYXZ_&!4@y;NTJTo2GRHxRd znYKmh9Z)LIY^HrU=YJLl#2?VMac_^eV&li-8@UHIJLl>Yp3-iuTP=_UU0GmeTTy46 zTA%IT$O_?N8!iO^L4%bEGJ{<(kRFqb*sRjX+yV0M5+4`_6CM;x{CaxR`-8Xps`GE^ zt^rE2Y}xMfg_-ta+vd1!joP+H^;&q-wk?cpTl&-HL+e@9{mjOfD$hR|EBCL+c&F}U zju30rx>=PsQFouvj)-%!ekZubH^YPZGhh})cK)o`GQ@Mp#0zN8O`2D#QKJSrcI=39 z<;uz9vSrIc%lY%?aqiqXeD}NG#V>yG3ptjQ2IWw=NbZCwVPOSHq-`VTB!e3Z?wWmF z0H*KsqH*34Cx7XUABe9D1m%W>v3V9ew)r@x6QZ zb}d@85Mc9__uqdXFTVJq9FHGAo-~r;lA`q-Mtzdzo{}2qlR8wRg$Q?9#ZsO@5dqRB zIVF0V0Tyr>Y~)BX#PfG~t!BTxqBd0!=AnWy`7^Bl%cbWjfape#9*qF1XzRx)qSZ^5 zEWz&GyM1_UwKEnEB%9j&J4Q>&Iuav&>oVLGl}e>7EgA8>nLL-8C+87Rfj9uAqiR0( z+2jbIb7ia9F@G2fngXzxI&~_hOqoJW{Y2$~2Obcx3kwUaR$D=gh=^-vvVYEH-YTxW z#(!T`xpYbcBPozPNzkd83VdoWwH;g>a)3UcK+-xyeKLbLcn1@J*)P9n(INxvrzZhq z`H9zT<4x(o|GWF{yHDbPzJ2@B^e5MQqEr9A4NttFp)|~C?Py5yT@4sJ;pOw&bck0xM+8oV=sXf8U$b#fz+_Gg0 zrcIkxVqLjr&6)_YMA|JRb&PsgN#NsM>uLdD9S|8GN(~L-qCppd*6(4o9dIsy3s07e zi$ti;^pOinj-aMPQY?r$-n3~GK1V`rwmuI8Dy_AQ3mCwS9XnPQhP43Y%a;c&6Bp6t zmtXGx@|V9@pB$wo6N!(u)ykw)&THFrvRNvLh(PUj)MgK$D3z_@da+0$L--JFx&>RM z&8mwe19+LT<=n;qY&wwoJjx3%ynu1z#`%zLQDX!ot+nAfSqwpYW7=-dr^sS>@WBUd zWE}J5$wi9}HOhuV1^|HORRB<6IROxW7jXhEeY6}cizV8g$&n#Zb}UC0NvX0V1GE4x z-g@^vG;iJv3a~w2V z{%%aDoU?G@LUB70(Y`vlVIU$gKHPPwRW3z<==(Be(^+3k4W}tJd9$K3l@9O`93b{bB$urZogfu~8B~X3QA3apOj7j zo$|#*hsjSpOsZolNDBC9fkDn8jTvXN*w{y_faPn}2OTbo9NJ?gZ!SS(3}dm;eBIFTRMnx!Ph3TWeleB z>0e8#31Pdrm6NWi}0{P7Z-p&Cv$}*VmH3~(8(XUD%Gmv!^(q!PFx(!T*xyMr|hkH zGx?yFLP0Avvw4QEkpVefo4+ASE=i=QO{pe~;Fa&4PA)8-2+GE<;pM zI{|`geW;3tZOg2w7%~4f{@ZkIR<2qNkG}LKK8*IBJaHU@`u7u%6?2wZn9)j&1w642 zYVqR5qRpY$AmAvig9bNfE6s6IWE?Hx=Qv`MJR6nJlkEmH{<4`(A~TiB;-YD)0m+9| zK;`8K(0|+K;k@jIjr$r@j z)2f0LFDdG%TbX;!Q8S8`pNdtg;lUT)2wGe{Kg~UP9KCvU6;o+~J)PPy6=QRP;d0|q zDFdxwiY2-&A5xk#g@3`#*n68@hsJW zoHCq_ezj?~xvnoM9YRKvrPctNYJw}#GkOggffZZtL_Tu%Od?%jnr#ipZB}h{l za~Tg39YjlOV;~_!n{;$*{9`OSwmzCg0@(aiSC_VK-Ri?*3AQXiNyJ5hMDu4iy!lss zO69-BBm|rdpadYR*~LW&GhZAH!m@yP>g@xl-=rDxk^a|p!-0K!XbJefhFnpUYGh%0 z)9wm=Z{UvSR;FHE~+{hMRrLVQ7PO)1y zm_l~nw5l*!En*5r?PV_f^C_kcCqw)w!hph-Re z=7PVpz7k6O{jBm+li|%4B)wlBP0pneDP&B8jx68-3YV#Zjr|cV()P z-L_*pHH_w%;yoXWMPT0+t4@Q*-+~!S)*v5g+q^!`hKnih&ph0I4@0i7k4!Og@PKgL z&6~H72-!#4PN{jO;-e#DIr4nlE5JhSDKb^SJ@ z2|NeX1Z#S&pQc8ol=km<>Q!9PsvUBb=N^9qvkKDM3%)lpHEH=pw+hjE*d8#(5}_0+ zfBSPVsXhe;eenW(oa88Ji$Po8wKd*o;AYdVTn5w3xg~10n|S5d39toBmkCw(hIh7% zs4k@9uaz$c>`=LT^VC_CE>jk{%E;b5aA^Nt$osJDC}ubl5E?TKS`W4kF~wD>@tyh4QvmUW8ey?Jaz8lOm1;%>RBqQt<|TpL*F(Uju) zE}RK&OiIObA?I4Evvs%Yu;R`~k*mD;XWtbgWokg= zH2@a@f++J30x)XIY&T}gY~(8I7T%7B@7^Krt2EFCcRp(vUBwlQ2W&I`&=I4sYTbq` zfcETuALE0c{dw@W8J@(p@=D|#%y`ZvMgkm2jreXpl-&2VHvT!Gkn)X|l~OtgvgR+I zN9rh>T^vfY`8qzI0@Q4=zjeV%*Kf=%$W)vk|a+MpeY3zS>_6)U?g$@qQ2}7km zm!Bh2r0CSrp-XeZEd`i0cL6A83JY=Tr197rG?#QND^k1;Wkb}xeq(ZXXZ`>uZ(eS- zIhQ>)qb)wu+f?=pl1x#+Y6wVSiXs)8Ji~THQY})JnZ+}0^$v9FHx#)_@0LyQ>tCM1 zUk7a|)qV?47EQ+vG}YI%Y3DZWx(BRUT{wRZYgaDA9ox3b>tj7;WrFFxtza?=Cg&?m zt()RkXA8}DGM$`Cn^otC6f)LszY8tfwg-W|d*}A>vn@?6a-kY{=Z_QM9Cjy2Bt4RzkGAxmpGpB08TW(+(q3q79?ircUz;k{;Bj+SxL%`f zMy@h>$o2U4q5Z0uZ#IE3ob(l~+Des*WymA@_h8w)S^o5i6V9uy&J@7h-UoB+X3U<4 zNw-b@q$U)F$;xF10vkPBVkDpK4c+_>RlT}UI*m|Z+I-TaNwyFn!HuYgoNpJ<^&=-? z-0T&|RkkmkgQxD>rR&kLf&(gs?vR;FR-;qT8dbh>bT&zhb96q%sO zw!F}6i>Zb~_O^!^D*z9Y{k9g&(H3@b&c5q;G@zNzQD%?q6+qsvG|L7;aM{*^K!YA@UGOv+CEWO?Tixb01HY5~@iFH;gutwO}@0Tgzt!BVbw2 zu|g!M6=gJnB|CsYl+grr(QUwDnW(NqCt>K!rN~Eq|En{YJ*qc;_sc?B9-3x$YXFu2 zQPxF`vNEQyo4(0HFpdA>?_b?>IPVFJmCKi6#nPon`S=Dm8q?%k&r_0i#fzBkE!Wrf z+-?Dkq*ZW~;xM?HAdHat$hxpP_tn&=nREK5Qf2&_myfzj0TntgL z{Y(Z}HdQmNMUn21%(fIM)!VJQK6XCz1iD?<3;9aZ`gNq2%UBq-6_x0Z19ZtSr;WyW zOrG@Letqp!5zJIzCg&*vwHEM^USl@AWnECtEtx3X^2R*(#z`|=uSqkJul)Q60pwA= zBt_C&Hbn~{ik{?Sdv6NegT`qLE`XKk@tPs|kJmi@@Iz9H#~_mDok+v$JKKxDDyC2lC=VSEFU%vs4sa(Sb=C=~52PTS0^bgVNq*<43} zPTHW=?dny>dlfZ$HmZ{?Qib&hp#kyFe5|J-RDYBr_nq1+OTg_oXaZW@Fc@E|R2BIO zee#yM-|#07?{gV*$1R;KPfl~26&KhUXp%XXw`_~0Tkb@f_4+WfVbwCMTe)1h55)p9 zKm@m}a@x8uj)i zPMGcvz48V@*{_VY>i~uqx$M^}qxa+`_|=b3<6oY<+yDE83-Vc2>NfVXAAZXre=$Hmfp-Jg zAzvnmp}aW%?&0-`4#t^stj#uP!fDQ9_dSei zF)Sl?UjP_vn4`vuxuE${emA9w5WWVs{H7WQihbTcTv7&?_Z%Sq)X~?T^#6YG0#Yhz_*TE*25!2aeZ z-^0(pdnh_@Y|D=SSgJG%wm%K}<1dPYA_n?)ZXK#we@VEtK_rbcq>LtQw28O(&4BZ^ zUpsow3HR8*0B~e;6;hE|o0gft%Tts2WmVc#t=TpB_kX>B-~RY}3GF`oCz+OcFm<}^ zivzM$vc~r9=|gZuQ)~186809eO%|F6A^6sBBa8C1w5Fvv-Q$BAcu&)796fi%(G{eO zzlJ_HeV{-6a;*lU+Q0qj_YAwmah6y>0cTrp|MAk&zF_+^u5!J`_&m!GPo2cHaf8!+ z+aL&rIU}gHJx6m=bjqeKviINY=iV6A z#Os{aWM z8wC)5ts;24ZKQi^bO0Ffz#xk~0o!;|o&ZyObycZ|Nw|GK%ihq(1kuUA9VX{vp2L6A zwDD$}C%{#%(-`H0pRQ7`vHzz_OS^v#RU)We`2PK0&j-HxEdJwPFN6+}lfLkWr|b>@ z{}0mt^>r4=j_gVhEiLH5;C?WQpbbGM>l$ zPAxa7}>X%6AyRr9b@w%f&Pq7aBO?8_4N8qkKo+l3?L(%9;CKk(gs zyLjrT>b$f5a0SmIOc9`u^3egL;4QD^DTAVjZL)M(syBpZed{Cd zc9&zdX>B{DEiV=Ti;mJ={f5xk*M$IhXcRBc`5<_37$Du#pwybAu;nBN6^eI^w4>M_m!(&2w79m+7A~2|6`7T;_1%xYn?rR_K4gzpSg5NR z9Q{gN-q+9=d-PTl>>Tvs_~P@Nt2gU_+U2o|ZUCo^!i~nv=)rcXyp~Y{fbh7AX^A#8 z1%QTgN@=68&}K$(s&2g<(|QOjFQZIAH*EA;-~ae~Et+iLJE5Ynm!aik-7sNpw!eJ` z4IVSXB;=ZFAsrd#4)#Z^n>^Qm2T<^Stt?G(pqroH$aEF9v&LiPJI%YK=q%=Z(k6sU zCv^+pbiw(~H~AvuBdF=tk3R8!kE3~|vUU4V%XB6fXm+(ohas?1LDyX z0JL0Skc$Fad~9%dfRO>Rvoqyo8UKe=7*%=U-&tDBcLJD8!`0Q1p#psY$XHm~YjW^v z{p6GHH|!$;C;)b1wE$O+e-B$zhP|t zD#K04D0|+8G0UUV2hEB1G_TFk&v9<6F)wWW@-t7nbMQ?3pBEep#?h?iQNr8Z!Q5!lRaL zZ%K~aI_9RTTtQ=kgu=Ie^O>jnR=o;`eh+CAVxX;*cD54=9d$TJ;y^>z2Q|UQ=Urgu zP*g1f+Xez3f8S8GkObICs7r=GmTc3Cis8{QfwtJX;_En@D7)F79H7EH^(r?!^s0g{ zfpVR$X@Y_q0oQLo_q5y2lz*7n`N+X9e}NmqEK!Y{y$oQ}qux<%(jer)uMiBE?`lY| z4LZ~#kUiCJ8tB$F7yMh&XjkbZB6P_m7>1~uokN5%CNdC?dis%b>+26+c%FmILgz@r z)$0pj6na24aOd!t9;Ej>&C&`8Fb6exkb^U*-eB1AV}o;G6;(}}HdZs@R}%hE(IE8! zjQMhN32~^ZY4aIR&qetx(j(80^O;q3Rjoh02Dm$&@v@l#?K%vO@zSRaFd?B-wCG4%3#2x3tMP1SQ@@t9GH262)8z%b^)Q^?5$PT_EN_s&;k46vTAwuDfhG zvs9)wCuf2@I8|uxToCnDVb24BrX3rl#~%G`vRa$XdyH8@vM_E3U#_qS^R7wWkczeU z?`UED{mU;}EENjy>daoIs-{N@8>*Yn_-sydjS|>Z%umaH=RGlX-~eu^K2#*xw%X*g z_W{J!keVp34K5ytihg2#hx?HUI5i2FGY_&sOblE7XvC!Wi1p7m08_8ivCzSo;I~>P z_yl509bPY%7o}=Hk`<5yJlkdls#1N-vr6Qj>i~Bhvd2>>*NZSJIc-ah2D`-RG1$)g zDt#z>EcT0J3Y}y7KI`9KeJjBLM#b6)q39^NB9f#8(uC$^$%I)G)R^c$QpS)A-wEK4 ziI@klkz?ktaKw|v%-R|~Tul=gs~};I$)e#sWFoXY+u)`|(i#tOI#{f{f1I}UzpuS) zsvtNkn8{IdC?M%1ov6k%NSeJqjY|~ZIA}V5pe1R?A3yJs8(v}*6CyT6#z#_xcV2#P z*Hvj&2{LZEJWS2HdUYtmdl;svsqHPmxrj{jF^(Ln01M!&-fBurxYyAMo8XR4DatKCezgc(dyPe03%DKe5$CERH|Vs@!PuFK)x!u3nx%lMMd4l-N;J7AD@H=UE|29DRE2dAIi4s0%>7?}VplQp= zNcnu7cwkFUey|_ytwmDdgkH-@7TWKsqzqU3tkyMACq;O7 z&=^)mntAbD055hJZ=K&~hE%RVIeM!0NrMqZ)ro=~_LE2@6T{(1m!5XV9f(M+wz?zHvRbAq^IUomM zkEDgX2JGO@=NM9n6{^L~LX!`&VflgAI>qqZAK?xO|In@{bGk1VKIS8zeH8%=_Fp|# z0re(YETA7oz|QgH4u66>gNnrNJ|-(T)TY#8q{M@eHGC8+w~6oC$xv zWE?Wu7fLTk6qUz<+z|WK&4VEC4ZxQr0EK=-Gh8vAE}9Y3xWR`PS6sIeH(e^gAI*rW jG#xsQ;Lmnlg@3OAtcyW}WYnW100000NkvXXu0mjf#{0c} literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravityBadge.png b/src/assets/badges/gravityBadge.png new file mode 100644 index 0000000000000000000000000000000000000000..ad033ad3691ea7bd77a1ebf1bf8e5574786c42f8 GIT binary patch literal 3223 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravityBadge@3x.png b/src/assets/badges/gravityBadge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6bdddc381bb581cfecd94e22e49e3a4731889e GIT binary patch literal 15564 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 RC8q!Y002ovPDHLkV1h}u>JtC} literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravityBadgeDark@2x.png b/src/assets/badges/gravityBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9aadd9549ae0fa920756508201ad1d3dab5e9f48 GIT binary patch literal 6941 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravityBadgeLarge@2x.png b/src/assets/badges/gravityBadgeLarge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..51e00178021ceefb821bad4c7fbf9e33e02f88ec GIT binary patch literal 16175 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 r+FN*2!yEB^;7Enj?r`%m@hOU3WY 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravityBadgeLargeDark.png b/src/assets/badges/gravityBadgeLargeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9ee2fcbaed37a69824f53b59d073ca981dc47d GIT binary patch literal 5169 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 AX8-^I literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravityBadgeLargeDark@3x.png b/src/assets/badges/gravityBadgeLargeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..362d6f3d7723f82eaab79c7fb4872973befaae25 GIT binary patch literal 25219 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 IM6N<$f>g;PU;qFB literal 0 HcmV?d00001 diff --git a/src/assets/badges/gravityBadgeNoShadow@3x.png b/src/assets/badges/gravityBadgeNoShadow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..474f948bf993592dc17075ddf903100488972954 GIT binary patch literal 4479 zcmV-_5rFQAP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGRCodGm<4PzM-YYIl)0BO_flqNJeS3Zm=iI}PQ_#pV@ON^ahVxxi@ATq{5xWn zBP!kP>y5Iyu10rZqWNKVy=$27-n;|BS!@`Bvk2l0&>5gJKxcr?07U>20PzJET<`?R zrvY3GVAQYE=T(ve5gC#^2cQo?^YA1BigFlrl8J}I@ViN(EJOt19zXAq{0hLA00ze$ zP$D8t4@HbZ#EwZy0Ec!hk7AD>_brm zp{nYr1BwAGibz5dRtdgMssJI3ioL~}pX<2D0G0rB6xfji+AcB^HR;U*r;xDm8t3O=S<3hx0Um;ei0UK;#dSPqD;fY*05st;TSDsmnf~=Zg!CD1XDAA8Mgd#Ru zQpu3{W7BlB2 zR6VI9G7@=GFv$Eo^=)Tcz!qVD_}zEkjW~{>|Axb1@o!~i#VEi)GmxzpRshn}15n#D zKo4Ah#aKr7dFlX1N=AlYn2*H+;`%yt00Ko(R!MKZ`6ebNCNMTOhA4_q77D4?>*1@f zzQXeIvV{%nb0sPa;aZ3_4{G;-9=Yj?^O@t_+D`vNAp$kgc}N*OIIkvWl$1k}R;vY7 z%XVTg7@*VXU}xl$0oI11A6X`tCD|H{$8kt6h|P<$c$W{ zJ0LCAH8WHf2#B`P;^HEbB*AV%LDgzCXjVYE`lQ)xqS0tzZf*`!Q&U9?<_AJE+U<6! zX#?;o+6AB&@3^{~kx5v*wo-5=qhIrL?@tc+*E#CG$DVispMLg*QO)ikjgOBLfPC@A z7XYAOpsh#}dJtx2X7JQgPeEgJbd;;Bt7W%1eO1wp0VQ!1=S7}(MCdQ;kURtn&CluE z5syCp1it(EH|sOI4)rGhsv7;rd@lMO)6>(KoSZE7Xj|&K^{c>(Ms(|r0KI)rRL{uS zbydKcG7As#{~S=9$_B-#wmp}fByY7xRRfL-H+S(els3)I%Qjh+Iic>Gr;&Wx_ zl=XUDy$uRUKVyD=p0l&FITP3P4RUK|EJSi`3>;>m5uvU7b##3jWx6^9VgCSoJNMU1!%38?Pgi?13#HS_)F zyIno%h{NziE*HPYUkE(;(Pf7R!SPJK-TTG4j^*#U*Fxa3{3tZ1!U6a)D+r*&w_P(& z%(=)C6W|vu?cD>#x@)E7M#=q0Uwsc7R#aw!(|*?-@%iU6SM@0Dec_uzz+ ze>lJf!|!YW0}29YQ0sMa5zr|m-*h<5?q+f&Jn~K>ic3ln#=)I-#oKPtgj8*Z>f3Sx z8o?0YN0AvbX86UsQt}xjrKa_c5cI%-1Dh);A?*;fyua0^Ab^hEY2D8)p-KUvcAi

    1wmaqh`z?DSc_K2;;_S<8kFh=Xii9nA@a7?zDS* zGiuUQFbqx@I*6Ziok_T=XP>^f`kI;$m@I(85<@cwllod1KxekwkpC%`U3jq(2 zjbH0j-5sZ1Iu2pnJbeOchMj|mICu}ndK*^Y(y>#pwHr&Wx%6+CGGQ#F2{@r?&N}}h zwC~UnI+_7U0BG)1MS--48FX%ka*`d^CYfsYkT$J=GF!FX9V2JojW8a(?FRh)jN?4W z^53sgT!J2hk4N=Uy>Q2k*I~xQahN-Au7Cga%PTSLk}I+AK?kGJaZi1HYyh@v2Bn*Jsu$MWyUixXE|H=bm|r-+uEg^W)qfS^muKz5AGn zQ)eJ6+O%nd*I$1fDnj2n5G5c9Kq3^UJ@YYE z$!PPZ_d1BbZmc)QUT~?G0V7X47GE^hLpEULq7p7DDK#!z;w)3zN~FbZ?K+sd-2j|5 z-LJm->RBZeUV~Pz=CMKmx^(ZVSw!gPZH=_sctB)9!V@ygitRdh_-NDN;O+?HTbD(j zeee!$pE(h)JpZ(~kdUklvs8CGN<8nHiBoY@uf7Q5o_p@$Zr!SratU-!kTDte@|@7E zAb_sgXXBHJsU}Ju)SqN1J)}#|^O2hBH*dSUIeW?-*_nBKA3XQy{idFjyo5E^FGm`W}o=-hT%+>3(9(5`0$+z>7g&cf$%Z=dOn`2jB)* zlG|;$S@KMPweeY!ud7ItvSMh`c=z}Q0?XDdHz$q16|1jTj^^UKFCBTilFI|d46L<5 zIa=+~4z8@wTzu)k>2dHruEgq*c2-J7tYkHV6Az046KbGS0gPHCfM&WfBeVQmG3QfK zCQsNx+-q&Tl_%FcIH3)@-lp4_6UN<&m7OSDlCjWnS- zFh)rz$PcM?1p_28=ddkumZ%dkIPNOKJ-~9S6yeu}3uLGASA^|3%7e7oHfG>u)3N%x z8!j<$h915jzyJ1ICJJPLl)U`emVp>FlAjHwl@OL!;Q-xu_?De4I2YO)Rx&6_=fK|) z<;^mxl&-S@jykUfn}(cJV7&3dGZ=B&G5E5vK^t#riOKWn=VECj#FkRwxs0XGzb($e zp~Ou`ZJ8tDj*>y~ZpE!$ce#Wd|7^tulY85JkH9{IPcJB&L>|l;b2)CAF#!~gKMWC_ z8ng^+B~|`SmOlTbi8fv$XY;pq-?9@JPeh@*CE~c`5REfiU-GzLY!$^AHUrQA(Y@sIf8Krn7mG`o{ z@}Nrc2RxK$5=iHf_6&c&naosjBeYuNy|jXsQ6}kREMN}!^oQSOFSQSGKG0{I8e%@# zFI-RcYC&X)BN!8iOIUwjov{S~D34l~L_qWcsPK`}Kgm^dUT_>f`kiloK4qzX$~D)& zRoU+x<=cKMPE>T@E$d@x1zgaIt*BgCNYI|cQe!q@>8Z>>BxD_EvGiH+#w%YfSo$9W z7Lb}?U$;b66p*tb(y+9|07ImAH33->t@z)pgs0L~(1!>bET*(Xh0CP7)zLD`bbg_3 zUfog$NP$#kjm_($%7|FT4h0H9vdD6xz%{YUH5g&SvJpL%XcxAr{StPl08rsZ2M(cg zt$?%i0SZBi?qo)*bdl*m8+u4yCnaU#OHcSpWs?=|N=!InWBgUXv>ISWa@fc!o3z9E z#tMIM=ez3W&HJ~09qRD`+m2#3ClfP^k`@t330S(U1Te{{CSq;MWfON$%7oNxBZ85S z=ZOAs|BSio{U1*GkNHAfZs2zPna#zPsmj+rAsK85si_YQTp}I`WI4Xa8Wc^&N)QG> zCl012^0}6m8FAxV-;Vl^`o^J@9E=@CK)v|Tj_HI`AONn6x+q+LI0=YjGSiID0iV}!3r5qm5&skR9`e9{Zw z)c%)z>sc~t+fEEz908qlCJ9KAWwKDo9u1Tndy}QK8_H{zYnzydU-irv|4m;D&n~?P zRBbICLf}rCh&4EY=cMi3G;0X85#dQo7&XlG?*F-8O>t*`_r0O0s1<=aT0$$!Ttuk0004LX+uL$L}_zy zY+-pIP%{7kc${^Ry-UMT6va=gQqVex4jmjai9^)V3U+a5D-=aAR0XS3ntlmwd?YDS zaT8Z5_#aroS#Yq3RB&-{5JU$N-JCipxM+CZmsHv!-pA$rIGl62T)-Pp87uYzDCw4w zOvI$M)Vkz*gNL3|s%EmNqAUvj{k!Y)(e>U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG%;z$c=5f_Au<$_K~NJJ3Pu7RA4Xha}HT3U3tfFcNLYGRQCSpkB) z^3@yn?|z*Yv{S=n*CMp|_LZOQ58o$2$C9L{o_2d1<+WGf?R$i95?JoO=bO)H+yJ5_ z9qn2YOr-nw-sJYnMA1%?M3h$R-7j9h`TR#|VVwv9a7}JLhO!6;D>O)p5Oy`tksv`_ zmR6Qki%uX26QNofi<}??E=0>hiPp(#5+K$hL|6`4!hf=035S*dBq(UtqUAKH1xiQ@ zT39*?3wY-(0N=e&h;Tv(Jo5~IR|x?fA}9bLL_~WGA@cuEy7OS5AT)$%2;4c-5!e11t=xqQ1002ovPDHLkV1nE_cYFW< literal 0 HcmV?d00001 diff --git a/src/assets/badges/linea@2x.png b/src/assets/badges/linea@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..42f41b35f9dfe84bdc0c9b0f0c5b43079a191ce3 GIT binary patch literal 1781 zcmVU>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGfTR|lc$4n*eYu1moPKGUc+HTLm_K3}oO6uRf6K+&(S$89xMM~)xt+}5 z_mV@VR-xuSz@CLu>quEw0 zRn2D1?Igl}nS<4XI==9tYxFmXUozX?!2n*bI}65L8%Xd5qZ{U`p4)>dzi}u4OLyqj)0IKz_XeO z@GoR}Fr?!-7?vMt7q4P*cp|!3-L>Wl)AW7L+BBMCQOe$*Q#VAU?;+mb>hSeNlyQbI z6aRga$x5qzZoWxme-~n&u(4cG7~cDO-vZM(ak#eOBpfAS>A|U-JWdkqj@?bOoLJ$K z&B0qPxt+P+`h4=pdw|J^OpDf3bLf4ltTMncV;bKqeU7lr1^_*WdB;^3TnJ zZ*HdmdR82^3;*>$+-7p-u!9{Ti!ViP5tIKvgRuB2LV0xA?4#Ne5prxy3ua)+LRvtx z!`|xcljRl0iX@qb7 zy#s!^uoTu^Tt+!KVg~rjHut@ZwLd*x@s=NXXh>ukI^ zx1++E@o(4q%Y*;q6eAyb8?u@tHPZ^*QjYMpDwur0%`#9;@P7u7wqfmID6!D&4yc6O zz{AbJX!n;(gjF#?FM}j_D8mZ)^Hxh#PAS91_0m`6*{0JYfZC@PC>5EUl)e=p+!YWB zz|P5o1iN}@sYt-hRj@cC8RTA#>Nhjrm&!LU>Gfs_m_!B2%ELSr^{@R@iYp#I*#bXp zmCNL#RRXDSF3LMi3E7+-RbY65Pg=Ltci8wCz=}`L`?KodChbg=EJw(Bi^j$BPW?o# zrzZfp0w@`_Do=SEUrBekkv)tu)xjs%VI#%Kg7lWsv-g5sfj@33Sw3f=YxD;|?xZJj zJlsIngiRdwV09-#Zkp0!Kd&Bca(8Ipxiq%%?p9D6`K0^Z!pdTrmN<2+A>M!zk z`REEjdFd^wAVFD?JtTq0GJuhBtdrg0q0<_OjhWWf*hi)Fa5ZcHpz3u(SbSL3!9cfHuo{N?=^)&mBN; z%zOI(GN+Pm?*Kk^uIO(ii~@DR@X(!Ry-HvVyF83n;(*(>;RaOT4xolP#mj2!3|DX0 X#TT+_QIn~H00000NkvXXu0mjfjq`Tr literal 0 HcmV?d00001 diff --git a/src/assets/badges/linea@3x.png b/src/assets/badges/linea@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc7abd0cdc64e8aa8a18c8bc4114ff35f1e1932 GIT binary patch literal 3030 zcmV;{3n}!8P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGhW+vUw0j;TM#CDGyG^UXgFgBd!<{ojCxZ87Hrb zoqFiII#Iz;5^$_=C>q=0m+X>G?g$TGTxmY~`eD#erPnfyGVY9@}0!VG7z z87R>fc#tiC;}s^Hu+o}$L5n#8;|7$omH%)B;0*@~p@7+(PompzUa_=E8>`n4G5KP% zvcfS9Gj`?zipj>jOKOFP4*j2#)kWG;uqgk66HemmJ!@6O+jUEl?a4aYp?wl(fn;66 z0!HS|p(e(SUj5-zVsXV&V|{R2RXEB<94eIBr;CgM-9@VNQ~GQav0Y=isKz-r6hsB!we&F z-677=nYtlH;<)$1(_B+OVHDn$I|H)EjDX}zG4RB3Z5@u+gXcXI#j4{t)}Jkd(G8#l3BIU_q{HHTAjs_(CDQ zTCb`XPE|h3I$PwY#h7R10Mu$la_-O{b^cr1C+cP8xH(!zA97a+tBq!t=*K%1cX~8O`N+0B!Lp*kxi_WF2#hBr?pH$$ZTj6#NPNH?e2d3g&0-rHCPOQHC zSgZPeLAqt~e7$f9=WcK&;O9M?c6@a75fG-%r&bQl4HTlNYED~u& zFl~d|Pmii@@=LQRKr}dP)sot<4Cb2rEEL;+Nz5tb9HGKU&V$_|116U0z0vy@X z7z(2N?%sBb+WO2C*z;9tf2ti8o(2?Ai!vcC&N*a z)RoYo>m(1vO8_U<1ufXp^`K`Z2@k0n{+G6dW-fs#^}~YFmR^HVIMRnL-?)2|EQI3F zSK!yiI?UNf7%8yx`NBBKM*fO^?@xfgw~gPox3!;AXrC3I_q#f2ddzMo;O*bncb{fi zZ|2^4)v1>ceju3c0e%ZmF$<=_WOI$(0IBkJu^0H(FSByNeB@~PZur~U5B%jly#Q29 zXoidz$82)7{KuQW`xs|9G@=!E>)5ar6w_)0*o-p>jhrgX0?f2gO_P1Vl*!`GRle7u zKDM8k$n0bMhDJoOD0K2JcjRgI7xPkr-3> zpAe9wrO}6s~o0Q{byk+c8&9GcOk4(xJzJ**c;mj1saZQI~mM?>dt( zI>&lN8P3Zof98_&x;i>?952hfy8pr0DMbPzk)Q+Xcz}Z-=90-1xKL#^8UZrX93F$l znd&L5Vqumjv(#BtWCPctop2wy-&@yQwVubcJpjMt^V2CvHwJF!9DMFCkVU#=46Vl`Hp=Oetv}ROTtA5rvz78~ADPyc=|5K{+$7gbN`npJ0ov zfLpa|EBh?;&Y5{c@tSgrZBzjRCs=3@YU>DS8`Z!A)oP408E8wLpLRbmbs9k73cbp=rG*IkU1VMLA_cKObs<_r1hP~-N$9Ptd!b=DCnCrlsf1a_oHLe_SdH=cJ YKVX4T;VEMiX#fBK07*qoM6N<$f|xhU@Bjb+ literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadge.png b/src/assets/badges/lineaBadge.png new file mode 100644 index 0000000000000000000000000000000000000000..267723587ca5032ebaa0f419aecdde77f2a2c3a1 GIT binary patch literal 2554 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadge@2x.png b/src/assets/badges/lineaBadge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..70bb69fae249fad9a4b60480a7842a7e95a98f1a GIT binary patch literal 6485 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 B&ZqzY literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadgeDark.png b/src/assets/badges/lineaBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa46075d00de33b041352907da47fda5a5484de GIT binary patch literal 1862 zcmV-M2f6r(P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG+{U|qsK-Mkg}fC~U|j~U~$tu{2)oLEk%H^-22d4S^*FoOAX z4AWPCSOc zqarJ_idey5K%E@G**D_XL_jD0px;Ts{PS^yyk< z7v5m!6E+L$>Ea&M*ghf-{ zTfZ~>wQ5CQ2pXBL43o}Vv6t1t%hr31?)huh>E0s zj!g74)&6_|Ut_R}?4SecyI_hTa>P(D9e2e8x+p*}6CMWB=p#a@^8|dg z1vN-KYsCT!3M^e6o zV0CPT!RF9C%qR#Bj|Tr}rd#b(Mo)^KXzwu4p3#BdvFbO`kYE@vwEGmzD$=n=fm4pL z65KdfC|$fdRj3H}5gd*{aG+6O{-{#$z9YX1s#r7jmfa2K4Q~!g^=8nv_lmpeEklZz z=2hJI>bRZXY}(M~#0VhZxWdF=!n(8LzUp*P+iQ!ru;Z@#OTi?r2%ZK!PuO{w&13V$ zsR4utra}D1TXi?F*MGSGr-h{c#cj?Ww!9TI7@^G5I)Vpwo)&LbJ{~SQf|zoeLs|q& zSi`m)Y)AT!9{BvgPX_xZzUaNwKgZd3x3TUm2UE5*$IyyL$0lLL8al$$yJUBKuF*qsjCvem`A`jcahWd?7L&NX-&Kg4cExH1Rg^W$fdF(eJdJDVQ zcMdy;aTtf3J!e@Lag33CT}#1=EGrVl!qHZSaI7c*MQfvI((0P%A`xGCQV6V!#br{YIiZ|q@GZ9@ z>soAIstG5W?b7+KVkAgaLKdfl!h^dnZmp9}{mwbommaEmDHOQbd;&*+km9vU6f{2f zt%;!Dh0s~E%BSkSBD%Y5=`~ibuu?t2{a1KB7ytkQ0TkVT>-e&be;G;C0IkpO<@ru^ zDJD|O%ZMidNrX`9zUOOi63zyeU|9OEgO0G_lh9V}_A#UO$E*T|CTe~{0xH|r?*^We zJCq2*P1F9BRFC?6%lQ3^CIyuHRr^%zA^r;-00_K!N(udkp8x;=07*qoM6N<$f<#V* Ay8r+H literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadgeDark@2x.png b/src/assets/badges/lineaBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..152eb8d61772daf29b92c3ca58d2f00beb3d6e13 GIT binary patch literal 4617 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadgeDark@3x.png b/src/assets/badges/lineaBadgeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a58ff5b93acb96e0741cca23a67747fecf54669b GIT binary patch literal 8570 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 AFaQ7m literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadgeLarge.png b/src/assets/badges/lineaBadgeLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..93a23a923477cf9ba5b718d606268aa45f2cdbca GIT binary patch literal 4208 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadgeLargeDark.png b/src/assets/badges/lineaBadgeLargeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..f463c5abcc7c9312a5f5966f474704c11ec7ae31 GIT binary patch literal 3057 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadgeLargeDark@2x.png b/src/assets/badges/lineaBadgeLargeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f417f8f1f1608d67edbe8acc7794158a83c683eb GIT binary patch literal 8225 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
      J^iNq55 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadgeNoShadow.png b/src/assets/badges/lineaBadgeNoShadow.png new file mode 100644 index 0000000000000000000000000000000000000000..1af3c5fd42da4170617e965fcd14871cd69e2293 GIT binary patch literal 769 zcmV+c1OEJpP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGnGhZsObA84S}o13 z>)z^9E$hyv6U0#xnGgYj)KC1&m3nj@W>n$BBQ9LyEGvawEBk~p=_u`&1$yu@ec4ec zD=oCUGrE7t%TzteL%l_sXq`_N%y0x{s{ineM>Lg&QqLS`;{I6fke2cdn;k1FHPqs9 zAsNa?03HV;zF63%OnycMC+&dX5SW;8fj#O~R4is(;AVw|2Q-MPlvO8Xj0)5_;{d?@ zoLnZQaiMKmgBklQ%*rLDh+;Y_G!vD1cMrhbSf)xD1r)|lH)86_E++FklJmB3Ieyxy zXPkj8e2{nL4NsH{EaZ$#rhZ<9GTzMFRIRMYrA(*RQ<)S;a)B!KSD8=om3OBu3rJ5E zr*v5`s`Bzk&*WTIrEpnDa;aF|NFuQ~vgZ5&6m4KtI?=&500000NkvXXu0mjfaHv`L literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadgeNoShadow@2x.png b/src/assets/badges/lineaBadgeNoShadow@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cddfa99c67f87af97b23e34271eba193ee88d30e GIT binary patch literal 1185 zcmV;S1YY}zP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG?H-aFDj&e$?=#&H$TvoQcdq-w3;NNbYz{(Ux z(I8VY+>EAYfREp-(J&YiF28+IbUKsqOC|?;gyb0<_)JMOKOtVS6Au9{8v$>7PTe;r zspgA^W_Bhge7$iL9WQ+>cpr`23NIF-&X;50M{o4CKmf}xz_L*L=%U8+u{@^gTo^d5PgB((6-HwKz#~**3B}HM8G02j*vPeJ%Py z@7f>M+TZpCazkRG{sZ%?2L+g&Be_Fko(sMWxKqP6mqCL;0yL|+VedIz=OKz7SJxL0v5BGe7@Q-HT{XAbYk$ywveM$N#anveZZ}_?lD0 zKi2+=aNf&43`D$^%XZiPbT$vN)WnNw*?#g3V#4{H_y-QG9}{RM2i&Qecm}E{S0Pyh;tUUCBv}a6?#%aI@C0JJ@$#a!w#-DcD)~A>or1n=p+m`78FUl4Z6Por?UpWlI^G(4a zXRsMGh@xhG>AdlsLk$227&226p4MBWXXAC%x}=5_x*!|OkN?m}{cEX0g2w9X1tX>o+0M=3(|C(o^eG;m+^q3$&Cyf;qHAF>esZRFip{Yms>Xp&$SuGn zf&tI;#YE<~Q+~^P2`5)@lym&4%qz+N$u-Ir&UWTgAjX zMJ8VYezutvmxWa!E~Gg&F)LTf-#IW02`~x(C%}MZN;-i`00000NkvXXu0mjf&}bsT literal 0 HcmV?d00001 diff --git a/src/assets/badges/lineaBadgeNoShadow@3x.png b/src/assets/badges/lineaBadgeNoShadow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..22007385103d19551558d8e0cf59ae18cedb5b77 GIT binary patch literal 1723 zcmV;s21NOZP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGVbjW10(gtxo_xw;Qc{=_rML8_<=)5>4(Qh^3;zvhDW2r$Gx`K^-?b#jnnIn znxmITw~hw=c)gUHy~YqgN)Ah!gVDSFE62P$_&=pr!5o}sKkYYhaK#u>7@l&NIhmAV z7l)UR>4Q0PAOeUOhQ!D5GPkeyTkqrs48;g3*F-Uqbn*DII1kyTDn+Z}ID4lvKD>+* z)t0R?LeD4`D8y3)l;>U>`xon+u3!p-^*~6O!GuyUyE&bZ=I0#w76u~}IDo+H+G?@C zf)vl!JFQ_9Qa{{~2&BTv*%@cIJ!dOduRJhtW~A86*?u@L=NJmJY!iVY)hP_Nh(H;~ zzFVU?yC-vi_>N)qX9>!l0SuBkfMA`>(cHbqhxPMB^Aa%9ynqS>%vRdA*xJmN~;0VRF??>s^^k6){C>tc8O-QrU=x88aL$r0_ zuuA*>oc>LDyiLEPZHZxQS~kXWh8i6v;J_gDx2b@DxNGnI z)BlEZ_9?Xil-4C{X?0ldpj$v}-SZ8spp0_Y-e>6*4Q(7>7bvWwdWBvZp!ygHh`Iog zTX+olaSYq6aR6C;((2dMp+`I(Vl?<>}+LDvplGRVuS)_TR0x1by-u8bPO?wfnVyzj5MUC#g-LR6sPaqrmAnUo(x3kzk0c%qp)_wR!WpV3S79pyM##SbM}z z!IK{Yf0l?=W)VoT86JgsM~rK2r80TygCHEK3XBZOoHooiAgy<$Hu`EWOJL|73a-z-i;k5?iYYbWcx!xB2(5f^ z((!61eFH_R;%g&038Qc+gROfa)sY4!(l^R!=$uO&OT(oO%*1W-m_fLzu{>C61mro_ zg3-}m94$4*n6gQ?I8oO#Vi<&53ojR%(3LwTwBd0Wh2iy5{u?P^6pVsV004^VU+80% RTPpwn002ovPDHLkV1o2>Hk1GW literal 0 HcmV?d00001 diff --git a/src/assets/badges/sankBadgeDark.png b/src/assets/badges/sankBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab341257ab0ad232f14751ef9fad2d41032018d GIT binary patch literal 3059 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 B>XiTh literal 0 HcmV?d00001 diff --git a/src/assets/badges/sankBadgeDark@2x.png b/src/assets/badges/sankBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e5beded3f1f59107e548e0ae1c08fddbac2d89 GIT binary patch literal 8911 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

      rLo>fXMR1Y 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 JPDHLkV1iB3kAwgK literal 0 HcmV?d00001 diff --git a/src/assets/badges/sanko@3x.png b/src/assets/badges/sanko@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c5c5e42e57514ea32b4bd6fbf354a6170bd6975a GIT binary patch literal 23754 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®!!+hL`h9>XPe#a8$YXHj)Tz7I{(Xm6J3=x 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 Hu0mjf>I056 literal 0 HcmV?d00001 diff --git a/src/assets/badges/sankoBadgeLarge@3x.png b/src/assets/badges/sankoBadgeLarge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..897a700db31447b34457dd0d59e7fbca5b073def GIT binary patch literal 51551 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 Z{sWZ7iDqCo5u*SA002ovPDHLkV1icKIo<#O literal 0 HcmV?d00001 diff --git a/src/assets/badges/sankoBadgeNoShadow.png b/src/assets/badges/sankoBadgeNoShadow.png new file mode 100644 index 0000000000000000000000000000000000000000..b0b2c0385ac6b77152e1a4e8f49a88e14997faab GIT binary patch literal 1721 zcmV;q21fabP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG>BSO&-P9mX1E#wh=o$8QZpE+qTnbV{9`{V;tMI^V^p>T$|6Rsz2|& z-}wLDM54pLSZ*uZv(!d$c&UxNZs)qA%$;-3bKjQP$k+Vci!Zg7i8d_O_T{CQao5<+ z%*-@XQxi-~3_N_kt#2bGx`3s&^18p-&{A7PjK9l8I@$+?#U|6+b2WWWEL!|!|1S39w)#6Kpf$IEQ!osr*joszJ{aEhy?4Y{D30-vVd?+at zQ+qKUscR}*79YcT-B~==T|}LJmnwY^-h0onZjolupGl3puC=9)vC(nr3v@J`3Sm&Z zh0fyvT$5(dVboJCizdTA76-Fz?5*=zZm%HBwFq(Y9j+W{Vch~v-&}M2QSVct3z?dj zrmK0FdzX&UE8a+J+!n5#&Lb;P$*J5^Tu)8H);LZVFTPG@ z-MUk(S(r@p8ZTaY$BS3q_vPjHd@;93=Iu|S`RuDKRyrLa(X)URj>L+AbZzkVr`Yk8=v{{#ybai_08S9^!`3xeD9!e-_N_B zMexQ4@tB%qksp1JZL5x=bp!tU3z=`5OY*`4j74pu<5(zJ zK@kLObmnUlH{SZ#jW<4V=FLxB_~6q(!AJrNoV29)>DaRTD3NJpzxjg>nwg%Vxqb|J z(tYw$Z?kUo36$GiskyM0X{`%GvV-U@tww*;8*8%zyexSC&Ibp1`!jc*`7l&4luD#? z2@W>-)0Z#T{ooIZd`s6xbHgB4jx`bCr^m`Xi#k;jt-AG8=~h!wyoLh(N(>zvs5%xS zMBpaWV;k>%;mZ4_3Ct56!Fla@7COl8{t*nw_T;9P(bF}GzPJak1ErXmWuZwHGj%{z?R-a`4B6Z>)7+539`NbT$ zHP-ZFENd5fx`F+>E@EyP$8B*S)i*ZLZrn;!ftT^LeKsyRf}Nw}-Va`kc>1r_gk|=sHOp)jb#cKrIe)g6 zO^e3?1A8}JVb_|oEVh@kW$&p3@!594^S^NezPnN+U%yPGydtv7AKJ0{ zC_7eZaI%q1i5#VMOXkT#eM1VK`={u$uP@&U%ewK?x7W!ZnKS&2|Ca5yV6L3>ZIp(8 P00000NkvXXu0mjfP8(XM literal 0 HcmV?d00001 diff --git a/src/assets/badges/sankoBadgeNoShadow@2x.png b/src/assets/badges/sankoBadgeNoShadow@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..990e00a88b0ad1228ce69186cba4d90ca3adee6b GIT binary patch literal 4624 zcmV+r67TJaP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGVrebpvu)e9ZQHhOua!ll$s}WRPYcyu(*3jZ zTiNVqy=~TcPQB-nf9fAx|CHd5q(|TTYrCbCJ7cL_3Ua4VM4Obd4L}G{m6B;r-h?9e zDR3EZ*an41ky4;2f>;7l;@TnOM+)4sXOSZZm&q+O z01)u`Q-k~w0UmkpuRjlX{jC`vTi?OGAGCoTXZB(w5(osbjEJKMsl*V86%aS9U?#c% zjTNw1B7r^E&hmqAjx#r11DF*C6GJr?i>+A0W`TS%`o-;ruh07_7nIq3gZ31 z3r-*4v@PR)57@nCT?bEm_SuY%wS$a_rH_;f^@>Bz`6XfIIHHopO)b%0JeTb1gTzLJ zU)s&mL@&erooLwulc!9!%VCG1GRTWgLA#NkZ6Q6u0+jjK>a%U>^zyH1O-CvwOz^QGs^PG!T@ucUT zg=r=L@PZQa&37V}euY!HkuW*Q>ZZzu17${LEc~)UsPs{Hi>y`VP{Yee4zyskNGkpT zuK4v;c(%fx>!-Q)WGxi(HKecd@JDQB%l2NRj4yrEeZKa-KgdFlyyw>*F9n}lwWf_% zzwM5sO`SNFH0myOxu5*8kF!R$AU5}riaipGMWmCV)|KY!T#+`mqlOc(H$_k^adYj? zERq@BY!<$8J#7aaI@hnmKVBvHX%2U9gj?*OFfVA!oKLUTPcoUN zmXn0KPI@GVt-Iv&OSqoHOsPPrR%5AD!q;Qgt{dgLJ;$j#3i}Vt5P2EyaraFKMQNEh zR(<{L0$9mDJifit^R_<`x$D#bwi=b?~$A?O}c*;Fg*@hVlO=r?W ztNM7}2=!Ww01E5|IPZcXBoYAEb*WTc3i&F+so<#VC`-wKIg9Vy81dmB z*ZJAiRf;u*AO2#3H@)F!1hR{k^a$?U4IH{(oVk6&+&c96niP!-!x~6@_K0y#btO6Qwtg&#c zfHQG5J<0+{XC1D+X_=)$0VAuBZf~V`WQc6XF#D!-e(~Mkk-7Hg47X?4cicbF;kQVII$Y zkmMcTsB*NauzAfGp)c6GZyYzU@JaHny%8EAMidY#E|FA;LXdG1p}N?CgS10*y$#dU zsn;x!D%EP0%wR9bB!L#AD1sn}lDEu_X94T~1&~s<2?YQYRl#!uq9|f!a*p+@dbnw+ zyb^#*mbZMm#65TS@bXKlOc_}Y%uRD>F{JE6&ayDom?(}>Ly06tRW+ohAf!N5AdCbk z-~~-uGA33dV6cCbTCIuidw?Wqm}FBaQfUJXA+Fq0%bZqEEF}mO0$-t})ugMtgCK6A z=nA1w(GfJXG*?|?(d}B?C4Cdm7#-)c&ua4e`?hmlcbX0}B7+5*L{$w`siH>;D^0T! ztYmfNIbheTw6$c&j#Kbm(^Pausx6d!M>AVeH0xR-&YV`hOC(++1kq;TgLg=Gj+c7<`KUAtX4kvv_bB8 zPKM47lZ2T10I~^-~wI5PKVzKWf_{>9j_|1jlu$S0iLImUt{P^a!t)<#(*BJMUp*FM2P(dF3H^Yc?oLn>6zWw_ zI*~F-)%QsW4XfF}s=3%rAI;FLv-?`Br>+4RUk-5WP=Pp(&^3Xo`&@L%2wQiwad6)P z`}PzuO@m6V$fNJqfsB0yPBdvrrQ}t$<-LXWqqlT0|MlH#5#wJ`><{9@-@`SsN zqUtJ|rV)yW`NAUAW|`iOR(e}Abf!!)hRK?tRk)5vxmLrm1B9j=yX#$hol{##h`qo` z%Pb>=O0#)umJBYxY>wr!OHWT1wjGmS&JiFvUh5>a{SIW5Rx*W%V5dU!&L+Jnjh0Lb zb6XplRv|&aq}jkS=DF7$yO3%`6oh!8Ppn1MZJYVUMHX^%s0oGMwhny9p{=8hLdil( zNubFqf%udFz-6}<^7U8E;xq%=J5!`Gk_&eakjR)!P3O@x6&Y(JO_ROjH3~@swSO(0 zg)xM!qL^8n`5f+Wf|(hInYx1K=;Ri`8CcCiLDJFQM|*o0ecippp&*LDml99Ym@gE_ z7jg&@km^k0cpl9lz&3;5p4MnIMt-1Da=GS;8Dtz0_@F0DjHFJ}(y*O69bIW`+aWjK zzzIV9W`w>}M4MA_=Pb-s19%G|Nxhe}-$kY{Oz)8h-`++^3^13Qqg*c1s5~xbRB84H*$ttgl&C$7ZFQ3D3_R%EFK9u=i zkx_M8+FLM_Nn|YO>F&lfdPoqEiUe83z>E{*7AwTD#K|aM1gz5n0ICT2f!XOAKl}a! zt!b0As#40^baW=T`pV;s4)mdh(APi475id-ag&DEnnZ~-&eBFn`!2RWPm7bJx9?79 z=_J9(CJM1&LQNBe0cq7Fo5_+s31T&?w08C(rH-L%Y#1FN2p#H{OCfT~Tko>%v$tzb zY-rx=Z>@!2{CJ#lrGbj1y}gaeV>az=8FWR^)z*UNN38B2=9*hVZc$T+p);768fLoQ zgS~Al;W=YOt&>DT!3-lZ${K$7eHS5=l@+>TrA~lKYia|PhKH_b^kma?wq{wX6wy;U zaYlI`Fm<~CfNCV;H&n_lAARq2$W%;Qx5kF81}$wVteV2w4PA_kwBa~43bkIo@vVr- z+&KEWtu&fjSYE2(Hu5y9wX>B##zdNeW@PalgKDiz+;A93WZ1ZR zGnHDEAdHxFo0E@!%H7}hdoL|M;@)3FQJp6GxQ3Tv_l|@){nVzpP zv)sg%F%`Sc^4wA0`hrau>H^vB9`c8O%XO1o{Or0O78^~nW}4Pk1C%uNl0#cMgDN1Q z8}zreqee9vwu23R=cQwh0KWSNuZ4+CAqh-8*QZ=+5ZD1vc>D!C{t3Hy`O9~6 zmphH332Pyu6==)G$<)SU@&;5_Wi)F2mri_a3ECsB!sk zj?-v(1ns(GZt8#Hnpa-%O(6cGZ*V;7zTbEvar_2VSBD0NTG@Hl5a(YqM4@U?w+;5+ zlB0UK&J!*gBK2FxiN^dRV6iQ&TYx^WYImhRJv<<7uN(ZN_ zF|iC;oG;?K0dX8-CE`X!bKd*qZ$9a5fct0L435fOzEt``!8@k+)mJ<8K>e7;4v9|9KsV%w~Xi!$}5SAPGlVI=Qn zH~e$zj=$Xyil!?n0HKh0et;c@zQ}45nl65x9yBj|{zJB14p{s(NlK~QcoOKU>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGmtDepC`k2-8dS1`#c|9+|hgqNUDgRtZdV`lp$&5xE(TE$- zx`1GYe=E%bf(5i_3aL*?xVLL2P6Ex3H$X9zl<$7C7Q6&_2_Km5mFT-7OZ*G4@G%YO z3*PY8FNrii{O_O$Fr>gqm^ev`LLotE*dd*AKmr=H*7Q0){a(oSR*ykHBnU#nK%w=& zhh+$U6u9@J6VS5&W7!6&jLo4VBTP=`nB85ZJdz>dNNigmOd9|p1OQdpYthyJtG4C`2Ao6B+?dh2P@om+ZcNe z3{fg(ux$e&_%{!z(HcM_r9l`5L{WrkSs2nlYXt~=Kcw67IDck~Cmva5;Yy1}ZGci5 z00DoZtk|L!KI#B{-W&ern}HwES{DE^IfrAnP4co=&M-NZC6Tm{LZV_45(o$ag(M=- zK0+8MPh**yK)ZNim5eouA+s?crF0CSAcK* zNCJ8W&OM-S1SpnMy!7?6y!;h2E)BZunEvA&d|y)ew^aGLCB1!X{~Xj8AXFkG;02Pqtc z>0{<2u3u^K)_=Leg|pj4p#oUY7B79SkmLsg&cP#NeC@X%5D0>po7F{O$hHb5c} z|4a-=FtcZfFaNq@?3}G2O$mV30$;7tRsX{BwYMR=>nyGQ3pM8v`gV<+fIVu!%yO5J zl_sszZOmeTKXDy9-)D7xo|QB2Af0@Qa^)&7dg(!MdhER^3zU9QHmsB#v<%^4S zLW3(S4F+yNd)sBAl;gFpo#oJtmG?txw&gu8iNc2*(C5DXZ+`iin6vwaVZQM@Z)JEi z^S-pLQ3?<~m#cT-Mh{U4&!g5C5!5iv9usDQsm&zAX9K+Z&QP$SFh0!U1sltIA!n|x zv!l@A_-God-C*N-iW4g>w#@=(uCH_DYMTche1bRK^$`7D#EGY_6ZVswd~A``>s35A zpwrV7i#cBPn%x{a61zNTj%0=Z6CctT^m(uQ>o3uQKL+9=?;F1JHula90U99$p64;> zE0kU3iu+sWYpdK~?!d_@!W}yiL>TqQu~$t*PZFk6td3fo+S;NR-GVo8X?ydGHqxlo zBnj1Gp>~k@{xn`k;mHsyox<=<@O|>dJl#%*VmU)~t3jze#L-*FNDpTyr5!9Yq}J$&t zek57Q&VJAV$smR^BP87Uk|~ZJ9mkXa#Fi6=ihf@cHTzuohd0wY)1gqYPzNovbSchv zQ1feGln`MCts{c4&gGRldv?B#smc+OVw99K15uyyaF6ogm(v-(ovl`vnqTG0@;pNN zv zA2dLp`^LZe6b)YjaOn6LuX@8?Ov^+_f!1J}X6#}j0DXO)My<`BSHA(nDB@mg!Fova zo;K0_U9_I2zviPo2hC3QO}vzpDq;tUbS_6@rHAWgki&UMFH$)m>8d^(s~dE?U3?YM z34P97x=gRz<>HlV_@+cV2DjaDnC;CzPoG)D1;R-2;C-iPRc#I&m|=RVfRqr0>dtTa zio0L?K?8&mzYN43_)A~4i&8NO2m(LEbzQU)xS>LAY;pPIV;p+t`F4o{#Ai>DXnxc|Zx%ie3=X2{b3>=NTCurdzMk>Gts=i&C*fyQ#Qx^)d-%QY@7) zB2w;6z;#2CDH}s- z2E7iAW)iDpk*;jx)*dF+?@}6gI0P6ui_+`}X3C}-9OPO*&7MOAMkfnYtD|(h5qj=A zes>Lbu*PJ;BAL!m_hz~Oa*0g7f?3M4Qr+a@wJTg(T_cmqQW+^zZ`J8{d$^uQJL<8t zy3DyVOQ0Mw$ppPto11Q$#Yve|J1yo8Oi+kD0II9q@BHQ;{4DFa0*W&i@DhLnhetSg zphO&NG$c)vs3Y;)5@jY?TCO78Iy;Y!laKmvwF5Qqx>;6FZ{q0$fiLOW14{ctBFBJ) z$!4p~V~_UP+??jY^NK~io9yvp)W?qTmTN8->miB42phE~y;tJ&xB)e9hfMs|%bcYK`Gu%;LK1g_7-aE9^8I2Pf1(JhaiczXA91|$Og zDFCJ=x#NX9Vv7L*BEsuM44N*@ZONeJvboj5(V!Qv6DD^sNRFe%j?>Ri;+95OyV%9| z%B-wi;oO-gnVC7x{)0Am+?J!;?{Z>(o6A==>D$LxOupz};S_m#VH+6^*j``f(C!;} z^($UQWn=;=B!1xIBr{0MraU%E*L4|mx>$(>*=!zZT9k%U_<`hY@3=z05wK(D6wcJC`Ag#iMT5Ev-~ujZj0Nuvn|c1+@D+Jy2} z`ZX7C>^| zjzWbAwi_WAPF-T}WR5+%ilnmBXluY*-u^WAp14Zd%JRyWznDxW#gk7zg}^{Xk{b^k zVtRUtOg2NS*`hgc@q!@Es0cw6fFh*ZcUfQFKm`$gH>6YRQplC*Y&Q|M#l~ivz>msZ z+`EC*XXRpUn79$ZFa)!Eia3smCKgf%qAye1*VHK8@%_? z8o&7ak8$_A<~e<_PgmKvk;KmDxU${gEpL8`r_a0G`%sruc|WE$k?W^WOVwk%zwk==tN>}m5dbS;GCZ1k z|49RAq%`pciYFhtMBu~bcEEinx43xUGEd#}5UH%9AVc=;8f6gLY_@8crp@fm8I)zv z_C2PCDx?gHFaMHHX1Uqp58m?>cRzUe zv=y;BsA8BQks7eJzD&8CA&L~$YL&|?OUy4UaPHz2F4e0v`wbFFNn^W3DV?HRN&^rK zf}JZXIL|If$HRB1jHGcA*83VkgBXyIq*58i#zuMUk&~=1DFT_`(bWuT=VtsXZEoKa z@P?Un^tCp1Kf$F)vA(@d)AJERkP;?)W@kBb>MU26wy{mY-51&zZh^U>9!mEy4I7~p zXoX=(l=9F-u@#^UyvUrW6X)Rpr~SF^z2*`)ayfI=~WG(`MI1wlmM>-cTY_h>bH?3kR!kVy<>5MWa6 zW%=X3tn$zA-Q>38DZc7;U5@YW&~baL3?eF-A$E<<2d zz^^^hK}j211<24vYd5wK&+nqNOAv;!MM)VVM8JA&10NsDvPdKn2n5S3>vTFDR@OGS zwy+$>%}%d_DKhkS80q{%OJ|>LnvVgc(k6x}5CXcLUJNOp&*Hf*iL{CD zDr}*!%>=GHAk;oiKF3?`U#DC3Id*uIPkTv%s%mh0&0^<)B%A94R@S?0Zf~%2*9?p6 z%Q%*SA8NEz1V#os3ULE3wl2 zN@P%4(Q0>b9Eb8yDK0Pzg&_nA%QSgL*H^c*&#jvm8gvXQ{^PTmJX#CVX`8)!cd@Zq z#YjX*LxHpjB8}Va6Kb0%n`U{@qrYKOa2xD#u5wHN0lsq2B0u-pHGcOyM)`~v>|#nQ zk_t2$J2d0p6Dp9{5K5#nFhYS)l1S?~NXP6D02qdhlCn}%hAS*CF3@aO>Giv$ zQYn%`q7;OBz|)UkKoXB@ct*92R^qtVNWQUVrhS-L{!HoMaA&uB&v=%@NHFh_pA_znJ?e_Z$#t0!J5{?~@W@V^Y zSzRa49tk^1CYQzc0-jNf?^yy`0OAHuDTQeYR1_hw@LZqOqos&5AQ(7-CQ&YdmB1d&Qt}qK^FX&7p_>5PTP~ibKoF<pcD9c5hKCx{}X(l~~RGCW$PZB)907z_}t0i0U| z57goka#a$Zxq{bf;SB}!W;S`_D>Hol?G>!n72M7y2t}lVIK~-+heYGBV7aFW%4G{&8-8;S38a8)PzRq#-edMi_mp zA&K{*ah|?KadD)9AN3#z&^sz9+o87(K`_8Cnruw@3~mEwcY{0kHu$_371&|+up)?C z1_eP70)k$zk7=0XvKbuHCX-ANr+=w24JYp2J8n0g8!fMHFmSy%a1RD9gT4W%X5NG(L?VXq1CvGm$qnbTw>kZW_8GA+t#!P8YWg)F}+^7b= zkMDal8Xn!Q4?t%y*xEN@H=i9K$pR3M9Ijt*GVJd!C%GHD`Bk7Kuta^ukwFMjzf z2`kS#-g1s+O;gBcXm>i`1$@@)hZ!4k@diG_=juS8;TEPF{X^I!^mSgHmyYP2U}`xU$4nZIe{SVQgp! zLr0Wz8S<$FrVv!hLyT62sa9(!BI=Dse8>pUQf{r=9de%)Ajk0T1>(MD;c5fli;&Wy zw(Syz8nnaZ3k}lAB8^5BB?6?*(d$HL(MM>77xW28AD(M_%sL5tB2*aj72;*l15V_=OAb7S}tO>-B7OvH4 z)(3zke&mg!JK~$Xz4skh@4N zwD9*>7QqKYNacvzB&9T4gC3QU^nK51Jp zs1U|RF~m;t?HP=kU|?ztvLyPN{@^OD9X5>(MYEHn+VXKk4zFdiyb;pMWoWg1mNtEa z$S^rI#pJ{!(^EUiB-7{!;zCe`L=qxtGLVXk*RFE$@)g!MmPjTfB4Lm$rf7Et0Q3x1 z{kBg#e$R6PlrY_2dFC3+$tO1$xISSJ#qmW5BQDy?!zq>)w+VwJ$y6FGd<;vIN+t3A zfO@?_5C(XrMj2^>b{}J_hp{BFmL+b#Lz5cz=oq1=349x+3{(hSFG=%4K(P^0yV#(c zeia+~5Xoec?M5>${8koM88lpMWnr2oT5F_m0GlwB=+MS6%(&Vf9UH^4d{$RBaR(s) zs^mNb3)Sa(E*86)*1Y8G$!)G&tj2eNgcMW<0fA>>r~2$aILSNTas}TbHht67acY$~ zbea)c>w?kQ2;pn2%?-5F1o*W2KBbX7W_bcxw=uRmB#K#X5XY%?=a~qm$u>dP+gNjV zP|jyry#63pmamWwb=+v$j?Ki_9yGAtuH$(flqWHaGzMTw9mC1z^Kk{9Oqr~$HDZwU z!2AFI_TK@*=X@@v1wRVV?YKO6&q93uWLg4Y1o5D1yShnb%;8mUoMzXqGGF=yx1s%B ze1C9aVuVKD;@AHC4EH|Zvbxbjl}qT&7Ky-yq~^l4H3$ghH~Gb%p{|=Q3_kT zN%d}G*m)IWOrzchEQU%YQpq&iwGFgZC@hRfVECY2!cJhrymapBtwebOW8-v_!M0HFVDMfbexDsCqrYgsr-QeWSq-*S;8$zJ~xRrrYW>H@$9_dZzHU*2y;r=Qy7p7&m*?|TTX7#%8s)+}H5Xg3{7 zLk=qP*|oDwr96VxMm##58k?Zo)x775#Rch;n7xT^;s}>dhRm-^dZj6PM`rMDJ&HNG zN|5Lwvqf6Su4Zh(|dU8$u3%%@nlg7LA~B2lh2dNHXTgpT-9Aw<)2L+*LYRjyyJW8@{;f$6^d-0&Fd*;mr^4{-KUn}o`ePyzU> zn9&kR&%g{i^jfER@5A>)B8v`;I52A=>4ZK$;P*`$RgdAJGTU3*I9;Ezw3)DrWV0p0 zXu!Z9#D$?YC0Bagr@re8kKV=qK?eVKHMNkQK)l9vgLuhg&kZHA*#y3?$rVFVDGT4T za1u#+y?z|LbNLF(i%Xs#0*}VvT?NtF!T3D4qa%4vR~RjP1}IJ~T$w z5!BcE@iFww$TaCphIBefqy;Ch7x>dZw>W=NvrzwiDwPcTCtgFp8lc-Di^~nxw@;Ez zWqIH|XL##7wn-)Tap`;=*UvJs^C-FEE_&@G!-ZJ}y@>um5k>)8>ln`N$qDi)n?ZL2 zci<9#d^*MS{*mwcehf(W5D!uiDD^3HdmrtPV>Yg zR~a-yUUltBi&ohwb_7Cxbm+j$({UcmFxk0&@r95Qww!7xpT1nzs-FQh(W^K-$ zxklSxrNy18C3CX9v@gOgF$zJk#3xDAAwl~dl{`5MX)&Q+_ z+^kkJ`Yqq|jj#D?VD%%i4yCmgU-T(|_v>M(z8=7F4CeL?bMqZLsf-j!W=wiLmziBj zE}Zsw;<0rO931DJ_s?_r>=Ix8;y$l9e2J)~X{SIIqoqI_8YL7cm$W0O4CPr{+m6rOgUFBD zAEh(^T^UeKM^D^zWb&(j?R#Ev63`!YOTAia`DLH=PoL(y!7nPMr=9_2I|jp*G!s*K zX6H&wOyoca405ck*0|-UK`ONfolTaTBfRTf84z}S^3dz`NT%(0AEVpt)9VEUe)xVc zt|M3)bXIa@>-+!c$6x$+fcsIt79N8#zUfQueod$2{gCHHw*Wi?%P?g;Hq95_w@K*O zP> z>PNrhJ^Qw+gD>dz+)wrg;eP(JVsQWA`_P*Iq?Y!m_WB)NGVa;4Z{&A>_Uqzt>EPqy zr74z|b@Eq#@2!V7R{JmS*1eadgjpO!;jYM4g|ubyZ`Jd?_+*xh8TeAK`(d=wHN*L2 zDtYfWe#tHG8MWrNfRK+<#pS`dbJ{+=*ew3RT~F=)tna+*&X<0{pS=Fo&-v5Oc)=I_ z#ixGiH~iJhzT>wZJ$%op+T^*dt&G;%F0000< KMNUMnLSTX}(^!ZA literal 0 HcmV?d00001 diff --git a/src/assets/badges/scroll.png b/src/assets/badges/scroll.png new file mode 100644 index 0000000000000000000000000000000000000000..b074e4e54f30119d0a8e26a92d75ee822a57f0ec GIT binary patch literal 780 zcmV+n1M~ceP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG%xu@5DU>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGo?P;g#ImW+YJwy52= zhEzy5EGHmpWL$Z2X|$=EYGYh|X-~AMns{+&T2)V5RZ!BzwH_N7cyeg8sGBYHkOQnw5ghwje>}Ob<)JNM?ElNQ$HUb9q{1IerZpon~uY_r-y%aE-Wf( zV_Zx~L*dfF>%xu@5D;cESc?Dv0h&ofK~#7F?bij8+%OP8(GD}i?l7Zdl=k2MXaNOn z541}uie91Vn@N%+Ns>#fKgWtr@u}jx*+!FdT;clS4#2G3IV+fHdb72a^Bj1&N)Alq zqWapPub`BO!5!2RGgyI-87#nw$hs^?ae`~uhV5h_UzId%b-@y*AxPaFta}BEkAx+c zu3_layPV5c9_m;prH&f324iCeWdI-k2o_~qZZ*L@u=pJ;=`hg*?!=z@00EZRv43L7yP{JY?`YFO=i1{DtnRd8K3?V}&V|2F8Cu2-<2PMJ*CY7qb$HRt?^+Hp zQU*)HR&3y9J9r;*Wzbe3=;7E7K7djad=W0}jfm_!gL6&Lf{|Zx$lAdSrgF6kw!a5D zPs(%E^PvReC3pr;+r1}H%k``Q6F$To9UJ)g0C-U-0E~OI0vI2H<4+F(mZDNroMmoA nYw0+tDy{U=>-RQEk|g;8r$6j+y!7D600000NkvXXu0mjfglo{- literal 0 HcmV?d00001 diff --git a/src/assets/badges/scroll@3x.png b/src/assets/badges/scroll@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..04482628c634c75fcf59013afcd1c7d885519362 GIT binary patch literal 1241 zcmV;~1Sb25P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGJvugca%i-unt5_* zd2wiYa%fvsP%I}Pi*#4rw}yCeXwR#DnSWowpm$s@!(`@gF_OI^rFPGKd_uTfr{grX>lq9}@@DEil> z*}>`}5=#Qq&|qPEDmc53r8o++Vz8u~LJV=nxYcBSeJ~@?9cWsN2D71Em(s!vfF3Q& zf+3+LR6*ftfv#jY1DjC$;R--W?T0m3(Ls1rZ*T|U@x_^yI`+J^u)@WE^^JS4Mw7A- z3D*I2E!FdfnGp+{>#3ymu*$M(u5d0E2Ay+PVX{pWiG(efy%TQXaxwt24#IWJbrD_z zvmJyL*x*iB^}Gba)CXI+9oFzFRe0DM0LCsBMjjrf7ht7bEc{a-T=!6_1;S=R5@A(= z;ZxM=vIcwP z2_FM6ve&V_d;&f8gipY%Oqh~uVdp)_Y#TsNC`?5)fA~lyJh|_~_r5T~!+ii_x=De3 z@N}PmDGIW7&&p?DA3fox07?p@!Q9=c^CwUD^D_W_3S{m)Z3dWeHGKiI6ez*XvKoPX zZ_a-G2G*xw)s10=uE6l4vAgjMth5x&8q~&vSdf{L2U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGllwQM@TECfD!k%rvmuSP5X}ywP!IfdgmuSS9 zX2qOi!JA~bnP#<>V91+f#GPWqoou|6Yr>Lk$&_oVfNHLWUb2i?yNFf4fK{@9O~{g4 z#ED|Rs%pQVaKxQ<(V|_|fK{29Grf*pyOmwMm|?${W5JbVzLsgakzlx#U&5AT!I@^h zm}0z^WV@4Qx|LwQmSnw@VbHFG)U%D)xtrw3t<21ss#O5_;?DHp$ol5e`sUF3=g;`% z&Gg>J^4-Jn+Q0AFzV+hB`{>mB>eTz_(fjPw?bf>P*}n4J!u8_H_TtL?>D2w})c54h z_T$a}?biJ2*8J(z`|8vC=g|7+(Esh({_WWQ?AHD2)&K3<{_WWQ?b-kB+5YU<{p;8M z?AQM7+Wzj^|L)rV?%DqB*tU{nxr<%7mtDb?YQvUc!INaWmSMk_V8oMRyP0OTl3}!# zX~vvm$dYZJfMCCsRk597s;Yp!l4ie?V8WPZzmsOcm}kM0X1$bVnPxNo?Af@FX1|YM z!kK2jm1@70W51hZy_a6SnP$JAV7ZrQwvtKPl5MK0RjR70s(^sGlVrM+V!WGVy_aaT zmRh-sbkU-8zn_4)qIBD~ZM>9azLaJE0RO+0V7!oIznNyZoMXA7U8;^%|Eg8Ol3}rl zV#Swe#*S6Uq;0;IVgLaDzmjBtfB?gmX~dmk#*T5el5NJSale2-|Ej90RaLx{UcHoK zzkp!Xs#Um-W2%5vnVDwHnP#?%xwun~sNnb!lT<|L)pW5gV`o007l=QchC<0TdDt784N^6(Axb9UC4WAsHAK8X6N7 z6ATj+4-5(p4Ga(s3kC%nDJm=}CnYN`EiW!DFf%edFCiQS16f>WXliS8cYJ<=hlhH0 zZ)%H_m6n#FqqVlVxxT;A)79DG;o{@t<>le<@bU5-78V^MAtE3e9u*N14hRel1|ujc zC?zd21+y6t85krS8zT@F2L}cN1|b?38xac&2nz=$D*+f66cP&w0~HMx2@WR#90Cyy z2@VMa0|OHu2nG@c1qu!U0uKuY3Je4R2M7cK0tEsC)fX1#000EhNklfQd8yK;|BfAnS(l zkjY}larVUcPjDK$X0PP4jFt+xL>oKb&F-DfdCly<>Q#XY zDUGrMlI2WB^gM`cNm3xO@U0!;ke7-Ngqnj+K9){5G^As0r7Th|dZ>+PQcgA@Xbn-1 zh@0K+?)zU@^R=#ju;!8e23~2zSE~@OX2KlHFal@gpffEz^o?%n(?^9guS78TO{_w| zzKu%)8&df59Ixp)de$Yxln_>ZNlu$cae`E+Vn&Gx^Pki6^!g=2lOki4N*rSiAu48q zyfE|_0Ed1ZWBLUy9!~Z1K`eR+H<51eA}YHZ=G#93HoHw{8iVcI`&`1Hj42``R`U=r z+*t1_ejFbEwc`hUYc`wR2{7n+yQ@jbc#y_I9N`iOGU2`~<$oKV?$QtF`$5|n{FZ;6 z;FhruA*{pY9MyLbP&1uovHE$MR9mqjTt zi$YYabPvrNsC|aP`?EWD9|Zjk7f%#+gyU%=9cJ4hno;V9!bhHT?{_-rkA3>j{{p*t zm#%+aH9F80Pd8(zp#-$V*;K=g@W3_4y`+P-kNv)D59qh;y8dLk`VtPEhY-bgKP z<{kEuvrgIghMuQaRs^ai*Ex)WYpkEOB*mdv|IwZ6XBRDhHJ5#JY0>PpopTrQArX-T zn->}srAJ7eT{Ed_#j>Zqw9xNgysl;DrjGMdf)WwghYLbTUECOR*^ga+@{AjAzUArn zKGyZG-hcU?*5RVStiJG2dO<`*T7nyQL!)5Yy(s1Hs12Mj+`974Rd?OJ>bBckmv5Z8 zsm7mLI9LiU6SI+!hQy2vE!x>W8d%bDL+c$YZ@qrmwZlsSqwRC*;xQ$odZiI-?rFvs z*wdY|A9i|eVERoh!%K&UTQ<%Bwy!HLI77G>NeKqSMyLlXgF?Kkv!i-ypz8Q()25#q zII*z3Z(iym$eU_~XY4eBR526;y6%FK)2cU(j!qpdT)$!9sBj8C?{cgX&HAXItH(`e z6#h!by6`cRr_^j{KVzWJA3h>3@CzbQiZoy*CWj;uDn>IfWcuT&y2JhF`om%S$RUW$uq#<>g}KUTgdnO$aU@czD9#>PR!TE~8iS6xkTcX_XYdpPjpEgd zF^)zt1+#=j#td7g*%?Waq?dwJmG%Nj*h-VL0$HwGgMlP9gxFBl;D)uvA-&xwOU w6Ti#Q{N;^>3dyv7nR)y_S#el9w&lbB0nPcWeuPB_9smFU07*qoM6N<$f-Qt0$^ZZW literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadge@2x.png b/src/assets/badges/scrollBadge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aea2e050f18e60f47c8d2bd66181b524daedabb3 GIT binary patch literal 6445 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 Hu0mjfgJVeO literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadge@3x.png b/src/assets/badges/scrollBadge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..40f77762f369bd396b50bab966a01b104244472e GIT binary patch literal 11811 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 RY83zg002ovPDHLkV1iIx96100 literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadgeDark.png b/src/assets/badges/scrollBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..71927e891e8792929507c27671dd86b2d41b40f5 GIT binary patch literal 2230 zcmah~c{tSDA0ERnX0eWK8q1&fX zP)>kxPQ{ua5QmqSp`n$L*NuSdZntHufJkW8&4+K!by%UgEK96ur{ee|F-PMKhX!CF zf!FXTV|80diA`n%uWz_K&N@)o9=9#+(B>FW5oa3^7$9K8BRH9L3RizEbSlGkLU!ui z0$VHVMuSW1Au9>|7Fh91dMdH=WzA6Id{{I&+ot%>%2&C{uw8Z&bF-f{Wf|va-V`D* zZt0RiRm}*=2HTL>7l(6tGSTemA^ju?(V5ivG~Wc?sl!ql*Ko7NGtD2~MGdOv=wzo| z$=XhL7=U@l)|)98>U20|L7)sMErr(`FmUtI_dXdvR<-E zkiDywY6@8Sy^)!qaAoHvjp8PBG!UxKcvydf8NpxrtH;-OUF4~6099>b!hlojf0W0= zpC&@N#L*x>2JyHpfkD|?3~K$wtNs)myRKN}w%Crn6-GiVhtYp~AT}hyA!(cCa@19H zOwK(#n@0@i-K>GL`~w663tJIwjraEUfM);@85wD3XLshz89-}lYU1&D85tQs1CW=O z7ZMUeqtO@)Modg>KL{`%A0IzIKMI99h=_=Y>}x0#3JBi+fIuLSNTi^kAP|AUV1N}6 z5I88|;o$*J4=hj!hr{>nfdDK70^$A-K>j`sN)E(+0>D55&<6l8ADGBq8Dq`&yV##M zJ#+dX`Tq)F;{H&eNp$%2=kcW9%rW-L`0nb&?&>&uWfZW#n4`ZKqua~F+si|n^E7~W zzKpO}$9^(Kel8DfFAcC3hc;*XzRuE^pL-Y+-MwuU^{=y9s|z}73%VMLsBIO4e^-B| zHh=oqG}+rsA84H)>i9NC+n`e!(#`b5dvMRz8sK&w23uR$aDX_# zoLpcCHplmtCp?X&>;kd(BH{1F93oRYGdraDd%i~06-V}m|BH@C1b zK0Mf8RaH~l(D1e;!QVR~{8n&O+LJsAnS3YY>NRg47soAw?WoLh_hMp|{a%|Fv(n*97bE?z(1uh( zOE4GcqlyRq1@ffR`@i@6J}1fv39%C6JlYybxAIE{j%&WKG3qAR8A2yh&t3J@^PT0I zv5+mc*Lgb53fo>@jit4(Z!V=_HDqHVR>MzST>J51A-FbLDOEG$CX?+9d1&e_ve2r0 zP6$Ged$ve??%`a&SoK$}@23;Y38!;Yg{Jwz*6ARZD{m^h+ zpTi$+-fwrb8%)H8pJ4HU2_ErS^w=ZCU&zS(7EuFsG~l#-*-N zl}dvPls5tq`L>pJWe$cIldFZ36Y%Yw={A_-SmX$JyC-w-xT^|?50%u#IVVb)aK!5P z`1mvh6ri_)-eyBf$jBN2ky7V!mf4Fm{4>fX*?*(@WoUkAmZFchNApfFbX^7FBv0EM zUZnVO2Rt!9;r=v}AzD&S-WZte(7$ z&7fS~*wCjeyhK8%*YCnG#jj61h+#?{rsep|uS>V>Rv35N5H^h!eDUr?sP#SR_3c#4|?I`*WF&>Tg05uA4yBl+grVLWjTJ9f0i64)Of~=wR1;Oh33?!FEyOJ z&`qsNk!&F`-WC;wSrYp`bI(~*%W1q<;Jo$@_*$p+#CiW`Id7O_J&)h5YqLP%1oCnF z;VZl?Fj-BCo2f|NN{9(;yzTS#u!6~KUES1PejlXrF4tnp&shT!zJKWM@Rvk8>5qI= zVwMD=lHi9<)>(LxjZ(4IR+O}e%sZ`i&!UN(!1j(fMv}k0oN_G8Vw@1C)i!A2MVY%6%egu{lN-y8L;82vd?068m(OeYU1TMmU53MQm3<~1 z!g39I-vskn+fBcEYG#HY>0LnF*Jqfbk^~nY6nS3%WHBCMQZ6r?8-oy#b3|#utI3pw zTsq^9wFc)gZjX`7Kz9hG`Y8AdQ*QW85wi?=<<7W(@J5TvY0&{j4n8l TKWppvzh8oxv4v5Yfos%1RQSma literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadgeDark@2x.png b/src/assets/badges/scrollBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..53095e2177422657e17d532d84ad699a7c0bf4fe GIT binary patch literal 4883 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 J_Fcs``hT-o1GxYI literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadgeDark@3x.png b/src/assets/badges/scrollBadgeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..5bfd03fdd2b8cc8262c71a992e8de6cd87b78b66 GIT binary patch literal 9650 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadgeLarge.png b/src/assets/badges/scrollBadgeLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1dbc31e63ca6b6824ebcc05a501392e67ab324 GIT binary patch literal 4307 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadgeLarge@3x.png b/src/assets/badges/scrollBadgeLarge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8be695f8247ef51802dffda4b393ee196eefb48c GIT binary patch literal 19748 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 DjBDc6 literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadgeLargeDark.png b/src/assets/badges/scrollBadgeLargeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..5ecf4f2dff789a5b9276dfb468d44de0970dbe4a GIT binary patch literal 3394 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 A?EnA( literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadgeLargeDark@2x.png b/src/assets/badges/scrollBadgeLargeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6b5d6a50c6a1d481f0ae9f3c4ba8bac0825a50 GIT binary patch literal 8912 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/scrollBadgeNoShadow@3x.png b/src/assets/badges/scrollBadgeNoShadow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..d140debde922d2e0c07293220b698fee37e4caeb GIT binary patch literal 1359 zcmV-V1+e;wP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG>`HM*vY@)=lyQF6{26W;*i4H8iUQ+ve&8pJN;Xbo`Vkv#B2Wd0J7JB%eG8Y1H;!7eg= zqS%MbBMOm`E@2xte4+@sSV&xwiOh(`&iVJ2W?#;xMPp-E_Xj^f| zU|foBLP;>A&qLw`w*ux5QR6x^rdj_NLoerM&9%u5uR_&mMn_nYAzUAsx*KZG$W|N{ zXosK`>c-5!5}`41B|?6}_!=Qw4lO@yLqFusg&f7L>WAQa;2taPKo0d?n%8QFK>mH? zg&6Wl)CXrO&dLeJp+BN#Z!*>UPSm~S7U|@K0L1hv<$jRs<=?cAK!dy$>|zcmCof4T;=%NJPz3<~7mKWA|%8Wec;S z5eeKV>(~_~+QB^kO2Y6llJpAqKqigWc#!#Ld8wbX-q<_s-{W4LL_ RvuywX002ovPDHLkV1luLss{i7 literal 0 HcmV?d00001 diff --git a/src/assets/badges/zkSyncBadge.png b/src/assets/badges/zkSyncBadge.png new file mode 100644 index 0000000000000000000000000000000000000000..f84a89c233f4a885eb179292a2788eebe818f726 GIT binary patch literal 2594 zcmV+-3f=XIP)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfG6KC;$XG&1~rRvWYaHeGrp7Pn8HmIooCAvQa#2Ofa*<0cI}j$=-W``|PN+ zif)GgYr{d(Wfs6pN^5q)%62-?pWeS;=m0yhOgw!!az1RrO<6Kbky`8JK)t?%m;^?5udc=SPh{zr}GIm75ah%a?_Q+T} zTAvXt!j(lt$`i6^wUW-Ub+PM<82@Uz6jsx%ppJ7w;Id=sy?e)#jm88K1i|F0L=YUE zJbLu#B<~yY`Cj=AzXeE)v76mxjPzwQVSdEBlbMZ}El{HmWMHN(3 znp$05y+c5+Da;>&^LHo3J4H!&Y z#3^ieSJic=C=QhHJa1KDHT4Rs$Mx&iQ8iLi{uBQC>#w06Z@>L^1Ufo88jg&Ngu}zb zq3iBkV{9@=Ch@WYBVL!nz1o=q({s!F_fL~D)U8&l2?f>EpFVxM4fNY@zlHLf2o`0p zUAq>V$H|i?0d2?7&``K8W0p#drA?V*zsyB9Qd>0JoA%?FF3~z?7}i!sL69=XsV|r7 z^`t;vwksZwa@>3Gy%DTfC_H!WTogb3^i#<3)?04@smc<({_KIX_*6Yx`AUh5VPnwXH{S?M?G33eM+$)70%Up*{ESFP693$^WzsC*XKI8XvW8o$QR`Cr+F&w`gE{oey`mHF}{5Tq>28s?|oqbsHJS^9rSsUzwVkIc=vtUR8x1 zKA)BUGDcp;qOCDDb5L~5seQOraGh7#-S-Tdz^szh%AcFt@~&Nr6bGJLmsFyVQ>)je zW@cUy=&M^m61=`SJ~{cgBe~C4HcHt_C5s&xGnJB!Bj4OOup%e*0NX{^Wer`CZq4o1 zrdzZ0VpX~5`}uOPqwF{}w_NrDQTw%_q2cdE;eVU3#K2Yg><97d$C*t2fK%IWbLF6n zx>yT4thKgg{7b>vTeE$W#Z=hbINB<+J+s^C$xklltx|mWkBI>Qq*C$yqU&xt)nL24 zZtzT$O6~>=;x{GVuM`S3ry_-mx@`58%C1P=W$WYz4&8lw0u%bBsWJm-KW6)68_l}z z8rH~(NRlzk1)xg67#iCa&2eL4ysVx6x3^GQs(TT_;8KtFi!K=VT?CGV3 zeJzKVS68D8$60p0WT_NEvr7R`Zh0DS%Ih)(iSoSWGr9^EA}c7%f9rB?LMsDSPc50t zZfE~9^DY zu+6UE_PlcDUWn;i^Eu{TZp>wVt83tC`ZJeIOs?PrZ3;Moq5={{Qv#Y!*B1B>3#Nr7 zEm&=1>fIPi#NJlzhHhO!bCS*NC>lMJ=kxhliU%MRr1BMz1(6L3mfx~a7K~>RphH=^ zjaf%rYwIjRqig7`CA|YgIu(3LKma1uEP!W%&*-tFpWm`rY68zHta=t;>m;XJOxq{M zVYa$f5q4U{1WzW78-Ws}oM(d6J6&;vm=&55gs;*4fC-ysNd&z90lT7_NEsS2B8niZ`jyDcft~m;hw=x*&Ba*LP*LFW2+#%SE{@*4z0Jn62f4l$r^#A|>07*qoM6N<$ Ef^zNW=l}o! literal 0 HcmV?d00001 diff --git a/src/assets/badges/zkSyncBadge@2x.png b/src/assets/badges/zkSyncBadge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..02a0f75372715a1ab92ff278d1cef42ea453afd0 GIT binary patch literal 6529 zcmV-{8Gh!8P)U>h*?d$b`aT5T$j!+mv){4Q-A$k)t||l z8vWnYL5&#};E{=yZHo!sB_1(oDdMW&yvxUe(=MMoo|R;r_?B4G3TlS9Ni3&3^n3@G zie;^}gV^4m)mN9r9O_ZbVG|}8icnF31O?%L{L_vm;#3HD6?Va!XbBie+=k*;rwF^@ErnnmGiG7&g~k7pMfj=2Nx-7yfGOGPkpGDLCw@r@?)0=4b~GdA&lx6 zg{EyU02^-{fr#9s;}nSf>t;q%XBLnVRA#g+m4%N=0^&03%H$TT} z{Q|gp59&b`l!G%tg_w)b?(+?$bN%|v6}mS7^N5K``ycXRP{%r%I+n1@y;%+n86+Uv zw%t+Y@}?Q~h&6FOb9KDA56tMndf>NQ7t~FFQS{lPP$Bs{`noz5+P0??;5dlQz8QwS znN2zM^V1)qI_D{LtnVGoy^E7goqX3z0(l5maz>WrS5>%r=iyL)4kgsdnO1-z7H~g@ zzV8nJh#dO(_&6e7);P}f?#LV>Y~+Y=I--m zNs=hq%*<#eYPWkmu*}TDIT0<9n2wp5QFzSECt4D&aEXMABAT8RV_!bo-3xrpuQ}%L7`XrfP6)In<3H&CShO{-zVR-r5;?Pr;V@bwN?HzgQ|G zu^9)sy9YYl|43{R;a`Z&6GICafocg0R{jZ41*&ZJfeL1Mers#%j*X3t_ph(7|ILkW zy772zZS92M*v0ei`0sA~JilAM>Z*Az0)H>yK;|yc#l(W}Yd{OKgb+>b>{=4PJ`n>8 zkECU9p!T;JL#%QIH{)4=PJDCIgX-Yq^Z9+J$j|oxp7g!##?l`bcrQdgP zLU>>S7=#O0KbDu56~Ay7s=-BD_Y}Qj6s?ONg6!waHmge98&9&Z334FUl|9H7B9Dta>O&P+ zzSbzHHWn8b1^fFscOeCtIY`Y)@hoJOjc4PaG8(WU8wf&WR4gnkxN+%)ot<3D&1-=WXM%<$u<|WC`DIIVpk@Y_(cT&Jtb_+(D|13*QDTTnkns zF+V^5Y{q>ycMcc1tK?fdb}`fwgUy#YFWV>zfedC62|7aFn>pBCN@fcPZZ-L>znF1C z_-!WBT3U09SpaSbY{+8;(}MM(`oZ_U4`ePhq1;-9N=8aHDIDh-C`1DLfr-<#n06yq zvJba=EBSDxTnYrT1Wp3gWKizb))NC1E0_uGAPiP;HO|e=DfrzFb(Nf31hVhRK$cxd zG=6JT3r>p9#m(^Hs>rTB|&`?XQcEySV z`^x}WflTJHCVaJ8#oCyioh3N_L9JF>2|@0Z)}6At>&Lc%?^{F&a=0I%m+3Y5kOf!W zFj)iMt5mG(xtXPodUtnGufT>aA-NUAs??4Gs+gIX=|?J+$^jVxAcS>Ug_l_%SUYeFee#$FX277zQoEUX74?fvX;aG6vwbJ-DS(Y0ZIrOE66Yi-gA? ze_TM7ase@R0eke(M`OVX>h$!qMg?CVmrCt5=Ez)Gh!KY%3o!i(`LP7n-vx0o(0`LY z3!og(-*lAss+h38n{tx|?&jvseKBessM=rr;uj~+KKrco)}UgadFGjupa1;lK|2ss z#njXkBcFMHyWNGX{5a~x-KLOV;YnmFxQrMR0gfKK(Bh_|f)s`iR?f?WNXeKWw;PJ6 zR4S_gUR&Gv${^KRe+4ct0Q+#QzbXWn*Ux_TGeHf)6<}g!Ztf#HZjP18nbnl1Vj$a$ zf{5(#nSDq3Ya$Ph>zJvbW9>l=9HnG^^*Ut~3P=s%NW1%j*B3opEIa_60Qp151| zqHv0fC>6kZ{q(0l4FXk6PEHaW|0~~YZtOZS?0E~GN@;CR$tFzk(FZJkiSu9!*!Nx^ zuqrn78BhS~MG?SlG|p}=FR#29f-10ro8x;^tavxnB)Fs_bMFWKiNEA2z$qm+l8k!FGWg0Ze-U+uJAK`ObHeEQG-IfyRL)IDUyaViWm%b3-{XfLZM9 zLTAfn0S@gjU#cfes5~Y}O~$nqamy{Y5D}aC$xnV_)oQ^i-0w{OyU=XzpW$cKwXI1~ z8SFuwGg2KCOzKlQJlxGU8vAQ&o9_#P4V1Ki65vpgAdmu#atA0@Q2lW8Sv=QhoZd$a z_%MJgXL?m#FCXT~AuPhT3A4y)ts2~_^hQ7WiyWy*6!1O$U1FO-0GLSwI9okRJFpje zeON&i;9#%d;fEgvqy-xb_<;u=(6PV<;f{=q5FEcofOv?kRaUfg^Gyz!P1rdWBx)UG1s1LaJUTY^2j*0D z_GLX-faSp|m*v3-%{*gltGKX57`Phc!5#0>^SnDs(~L!su%iZL5tUY}12~n+x1CK~ z5L|&w2sQ*as9GHZ)Wkb$Yg^YB4-RtKYBennRu;iIuwcuB^?-^jBHB@tJ(vds?aTbo zZgwgM?%0GB-1fGJ)MTgS$0FD80CN)MW;0uDwTe!~pG&G(fwX}CAH^!%IdE}5SgT!D zD3_brT&|vCjt*oWu-caDs*x!nCRqe|Fk-WnoYt*@fCV}3=}G0mcf>S${4F8?lLxbK zppIO72tmM5VHX~ z$Rg|_NA%M)K0tY}o=#^H0G1Ea_ERqyz$_vxCirkZUn?9Ov@4lR@vH;K?Vybhbdi>ppS?zmhmHmdn*voW`@@KM)vd3TUn6Ig)-&DZZuPELP`&nVQ6YS;sx zT_`m2<>r}=|5DCZ=|l7YYk>o>9@v&e=pSgb!1>$vN(zEcS1Rn&l>Wb-+Mcj%LeE3U zhf}GpO*ETV_6m;jj%Jk!l6s@0BF;Egp00w84vrdV&a+}B5oD=UvoPEGx2 zY<&Dl2l#at@A)u?hew>Pj6XR&J^R)9#g#`K%%hC^vE0- zxC!^)iurc=aD(wC7{Gw1w5R+0{G7mH0C!)W&BoS9LwQeRssT47cwjF8!(I!Xx@Q86 z_Sy%{W)HAhZd%N;o0ywkcbto0vy1+4uFZMS8b-L;$znbjQo#r11FOdklgq4Zid?MM zEt>%v(B_-tbyn8;YJa&iVtj91M}CLj{ao%&tNs4CuHd5aJbQgQEzw=xllR7RKzrFA z*xWpL5=-_u!K44%Hpu+bg_QAg#Kvzj(btQod-MlA_?OS7!GyPvT| zZ3GC|2FSAtGRu5fK-(4Y8djg~4MP{jc+K}PCS$d~Hmt>4Ky%UeqO~g~(4c~d5^(t+ z42{WMd#cAOhT5xp29f^2-qhw5Bex+82ctR0><`BdP5{2RxQN<8rq<@md*RBA5^i*1i|k@(jS`nSd*EnOJq# z+^>w_{tS*z!OMqQ$d{<+Vi^r%il6lJWE;l6kK%o(s~WE*{q4$+Qd%lma*~x zSN4WdeHVMZ3n*jN4er>Lg}K6P(81ENV?H*%JXN<%sh|u4z`AaLtY-ncK0ex%=DzAO z22cPEZ~%zGP_&iT==MkXnO*{$roi$XWdRova6SJ3a}6qRDZ8Y>&=_!g03NI)Pj=O` z$l{@+R5rjU6|se&t=AcVv`l8R0RY(iStWyrkEIP*WZ;w!*vZmol&Kg$$L#}D+%TTO z%D`Jt7Gy4|R6}CGwS}PTM5PD*AW=SitwntDICfWK09yCs0dS7&Fw6N$g&@aF8x;?B zZQVCFK0q*}{;0BnnS~=bVFXCb@8O9s!hU|A1P&{L3FDbO8*roM0{ zO=7)%E=%@xOpZZ_kshaL^pjCaSUcZ?ADCCI>LOVpdkCK*78gy5Le6%P39V{#hRNv zaxfPQNuA*LhTvjAb4NG1v8!exz?PG;RCw!1lnc|E039=Lmtq!6VI8g%K&jK1z(;#6 zd5%;08Tk(WhDqWX1Q6yIlmsRg_c3a&%(X0Uzp}k?mW5=mqxej^-gj&!vMKPsF{4bj z>TFr*CCPE5y6be^Y0T!5xfFnShB#luA(IWMjrf!eDhWsjz_hk( z0B_v83Oe9pFx1z22K+t~r4#^cZ2pdtU?^-EDEGrv`#IL#nXwzx;pvxv<{U-$B}m?V z2FU6%tnq3CePsXuXiRSdV`&2zBYM5WmhFh7@LFSHFjj<&^@OD0#vZuXXc*7^b~S*T z^X;ivjNi1~3t|WG`3l(~kUglPYzQ*U@e(ApS?K_5c6V8guL@|Gz-zLU-{E(W9A!XI zO*;Z^mIN#|w_rn;BMIVwM2xp`Wj}bNf7v(ILZlafmd&B<>!kv%Ha{hxF@OeeT|7JF zWxLGhd%Q++epMNu8X;p@F}#=8$aLMK=7xr~z$TY$*i)Ex1^NG6CLgP+`pL0b4DRd8pkoRMRWKydKPFd!^0C-{P(V*>xBQ?P31?&-kClK|uru zuhKlT?v+JdMx+Kf|J;0J?)(k|APlVS>j|G1m7fSC34>wu(pEnWI%a5knqdDKn8yht z;%+!#f+?y}kPI73NHi*ICv%}{vIvJpHEqo~WFhO0HmG$6R?rvfHCL; zJaquT1faMEZD?RDgy@iv4M4SJSY>0R*E*(#Dt1s`?TX*4$GOy#*o>%SfB--SH~<~S zqM#}eigOsyf47SAVMuh@+1fjYyFgXhKj|;Yt4ELnqcxb=e6zCou<LTr+@0Cuta*IsqldYCgB6=^m^tFK*e*3BY55fFL%3*0_3=3im>yRfhurIv<18 z6E$pphK4LHp#fwkJMO{X&~Xoij3}exB*(d3j}45{pv!_w%ErUieF`MN)TOorW0@3H zm002U{yBgFbuF6k2e2mSug~&XuNc2-dZV@hZWe~mY!}B6tDWeQ0uR<{ z9M0Qv?F4UGRtZ~A`;x`#$F~i)V;>Ye+#j851zmxMsUsvL*y|iiVX-ARM~Uwr;;aMs z)qAMAN^qWlw~@iMRtmfITrIr@xfZ)5V-h=@4~ zNyTsm+lR1R<+?xKXLitUMn+8MrMQoPz6?M!NaqAvzxh{FhY|g2bApq_{WFlA#QA3+ nC-8adCn}j~-D~ps@0tDsg=B=TfgQ4>00000NkvXXu0mjfDp_i6 literal 0 HcmV?d00001 diff --git a/src/assets/badges/zkSyncBadge@3x.png b/src/assets/badges/zkSyncBadge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..db578e63d79284ab84678f25168f42294f1d7f4d GIT binary patch literal 12002 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 AegFUf literal 0 HcmV?d00001 diff --git a/src/assets/badges/zksync.png b/src/assets/badges/zksync.png new file mode 100644 index 0000000000000000000000000000000000000000..1225b4e6c6ed5345c07df0bd0e327791ab1fcf24 GIT binary patch literal 964 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 Ef(t|&)Bpeg literal 0 HcmV?d00001 diff --git a/src/assets/badges/zksyncBadgeDark.png b/src/assets/badges/zksyncBadgeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..b6947dbcd882e44c32e246c696c774ce2f0b42e6 GIT binary patch literal 1885 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

      Vz?LZN1 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/zksyncBadgeLarge.png b/src/assets/badges/zksyncBadgeLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..02190afd30fa53095bdfa25789bdaec2e519ce4e GIT binary patch literal 4282 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/zksyncBadgeLarge@2x.png b/src/assets/badges/zksyncBadgeLarge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..420b0f8531effb88f08df06308fd5f0a37142b3c GIT binary patch literal 11577 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/zksyncBadgeLarge@3x.png b/src/assets/badges/zksyncBadgeLarge@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..25aef546ecf038c8878e86c95d82021120e05edf GIT binary patch literal 21857 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

      xsDNpRi@bKprFuxQvnP-ZSS83*; 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/zksyncBadgeLargeDark.png b/src/assets/badges/zksyncBadgeLargeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..19a58296e9abc1137911a22d4734aff4bd88aa6f GIT binary patch literal 3099 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/zksyncBadgeLargeDark@2x.png b/src/assets/badges/zksyncBadgeLargeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8d6389607bb6191fd9940f901650cc0ceea9c1 GIT binary patch literal 8299 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 literal 0 HcmV?d00001 diff --git a/src/components/asset-list/RecyclerAssetList2/FastComponents/FastCoinBadge.tsx b/src/components/asset-list/RecyclerAssetList2/FastComponents/FastCoinBadge.tsx index 4ea959efb7c..3239c50dbda 100644 --- a/src/components/asset-list/RecyclerAssetList2/FastComponents/FastCoinBadge.tsx +++ b/src/components/asset-list/RecyclerAssetList2/FastComponents/FastCoinBadge.tsx @@ -16,24 +16,23 @@ import BscBadge from '@/assets/badges/bscBadge.png'; import BscBadgeDark from '@/assets/badges/bscBadgeDark.png'; import DegenBadge from '@/assets/badges/degenBadge.png'; import DegenBadgeDark from '@/assets/badges/degenBadgeDark.png'; -// import GnosisBadge from '@/assets/badges/gnosisBadge.png'; -// import GnosisBadgeDark from '@/assets/badges/gnosisBadgeDark.png'; -// import GravityBadge from '@/assets/badges/gravityBadge.png'; -// import GravityBadgeDark from '@/assets/badges/gravityBadgeDark.png'; +import GnosisBadge from '@/assets/badges/gnosisBadge.png'; +import GnosisBadgeDark from '@/assets/badges/gnosisBadgeDark.png'; +import GravityBadge from '@/assets/badges/gravityBadge.png'; +import GravityBadgeDark from '@/assets/badges/gravityBadgeDark.png'; import InkBadge from '@/assets/badges/inkBadge.png'; import InkBadgeDark from '@/assets/badges/inkBadgeDark.png'; -// import LineaBadge from '@/assets/badges/lineaBadge.png'; -// import LineaBadgeDark from '@/assets/badges/lineaBadgeDark.png'; +import LineaBadge from '@/assets/badges/lineaBadge.png'; +import LineaBadgeDark from '@/assets/badges/lineaBadgeDark.png'; import OptimismBadge from '@/assets/badges/optimismBadge.png'; import OptimismBadgeDark from '@/assets/badges/optimismBadgeDark.png'; import PolygonBadge from '@/assets/badges/polygonBadge.png'; import PolygonBadgeDark from '@/assets/badges/polygonBadgeDark.png'; -// import SankoBadge from '@/assets/badges/sankoBadge.png'; -// import SankoBadgeDark from '@/assets/badges/sankoBadgeDark.png'; -// import ScrollBadge from '@/assets/badges/scrollBadge.png'; -// import ScrollBadgeDark from '@/assets/badges/scrollBadgeDark.png'; -// import ZksyncBadge from '@/assets/badges/zksyncBadge.png'; -// import ZksyncBadgeDark from '@/assets/badges/zksyncBadgeDark.png'; +import SankoBadge from '@/assets/badges/sankoBadge.png'; +import ScrollBadge from '@/assets/badges/scrollBadge.png'; +import ScrollBadgeDark from '@/assets/badges/scrollBadgeDark.png'; +import ZksyncBadge from '@/assets/badges/zkSyncBadge.png'; +import ZksyncBadgeDark from '@/assets/badges/zksyncBadgeDark.png'; import ZoraBadge from '@/assets/badges/zoraBadge.png'; import ZoraBadgeDark from '@/assets/badges/zoraBadgeDark.png'; @@ -76,22 +75,22 @@ const AssetIconsByTheme: { dark: DegenBadgeDark, light: DegenBadge, }, - // [ChainId.gnosis]: { - // dark: GnosisBadgeDark, - // light: GnosisBadge, - // }, - // [ChainId.gravity]: { - // dark: GravityBadgeDark, - // light: GravityBadge, - // }, + [ChainId.gnosis]: { + dark: GnosisBadgeDark, + light: GnosisBadge, + }, + [ChainId.gravity]: { + dark: GravityBadgeDark, + light: GravityBadge, + }, [ChainId.ink]: { dark: InkBadgeDark, light: InkBadge, }, - // [ChainId.linea]: { - // dark: LineaBadgeDark, - // light: LineaBadge, - // }, + [ChainId.linea]: { + dark: LineaBadgeDark, + light: LineaBadge, + }, [ChainId.optimism]: { dark: OptimismBadgeDark, light: OptimismBadge, @@ -100,18 +99,18 @@ const AssetIconsByTheme: { dark: PolygonBadgeDark, light: PolygonBadge, }, - // [ChainId.sanko]: { - // dark: SankoBadgeDark, - // light: SankoBadge, - // }, - // [ChainId.scroll]: { - // dark: ScrollBadgeDark, - // light: ScrollBadge, - // }, - // [ChainId.zksync]: { - // dark: ZksyncBadgeDark, - // light: ZksyncBadge, - // }, + [ChainId.sanko]: { + dark: SankoBadge, + light: SankoBadge, + }, + [ChainId.scroll]: { + dark: ScrollBadgeDark, + light: ScrollBadge, + }, + [ChainId.zksync]: { + dark: ZksyncBadgeDark, + light: ZksyncBadge, + }, [ChainId.zora]: { dark: ZoraBadgeDark, light: ZoraBadge, diff --git a/src/components/coin-icon/ChainBadge.js b/src/components/coin-icon/ChainBadge.js index 8babe5015a6..2dbd8061cf2 100644 --- a/src/components/coin-icon/ChainBadge.js +++ b/src/components/coin-icon/ChainBadge.js @@ -29,22 +29,22 @@ import DegenBadge from '@/assets/badges/degenBadge.png'; import DegenBadgeDark from '@/assets/badges/degenBadgeDark.png'; import DegenBadgeLarge from '@/assets/badges/degenBadgeLarge.png'; import DegenBadgeLargeDark from '@/assets/badges/degenBadgeLargeDark.png'; -// import GnosisBadge from '@/assets/badges/gnosisBadge.png'; -// import GnosisBadgeDark from '@/assets/badges/gnosisBadgeDark.png'; -// import GnosisBadgeLarge from '@/assets/badges/gnosisBadgeLarge.png'; -// import GnosisBadgeLargeDark from '@/assets/badges/gnosisBadgeLargeDark.png'; -// import GravityBadge from '@/assets/badges/gravityBadge.png'; -// import GravityBadgeDark from '@/assets/badges/gravityBadgeDark.png'; -// import GravityBadgeLarge from '@/assets/badges/gravityBadgeLarge.png'; -// import GravityBadgeLargeDark from '@/assets/badges/gravityBadgeLargeDark.png'; +import GnosisBadge from '@/assets/badges/gnosisBadge.png'; +import GnosisBadgeDark from '@/assets/badges/gnosisBadgeDark.png'; +import GnosisBadgeLarge from '@/assets/badges/gnosisBadgeLarge.png'; +import GnosisBadgeLargeDark from '@/assets/badges/gnosisBadgeLargeDark.png'; +import GravityBadge from '@/assets/badges/gravityBadge.png'; +import GravityBadgeDark from '@/assets/badges/gravityBadgeDark.png'; +import GravityBadgeLarge from '@/assets/badges/gravityBadgeLarge.png'; +import GravityBadgeLargeDark from '@/assets/badges/gravityBadgeLargeDark.png'; import InkBadge from '@/assets/badges/inkBadge.png'; import InkBadgeDark from '@/assets/badges/inkBadgeDark.png'; import InkBadgeLarge from '@/assets/badges/inkBadgeLarge.png'; import InkBadgeLargeDark from '@/assets/badges/inkBadgeLargeDark.png'; -// import LineaBadge from '@/assets/badges/lineaBadge.png'; -// import LineaBadgeDark from '@/assets/badges/lineaBadgeDark.png'; -// import LineaBadgeLarge from '@/assets/badges/lineaBadgeLarge.png'; -// import LineaBadgeLargeDark from '@/assets/badges/lineaBadgeLargeDark.png'; +import LineaBadge from '@/assets/badges/lineaBadge.png'; +import LineaBadgeDark from '@/assets/badges/lineaBadgeDark.png'; +import LineaBadgeLarge from '@/assets/badges/lineaBadgeLarge.png'; +import LineaBadgeLargeDark from '@/assets/badges/lineaBadgeLargeDark.png'; import OptimismBadge from '@/assets/badges/optimismBadge.png'; import OptimismBadgeDark from '@/assets/badges/optimismBadgeDark.png'; import OptimismBadgeLarge from '@/assets/badges/optimismBadgeLarge.png'; @@ -53,18 +53,17 @@ import PolygonBadge from '@/assets/badges/polygonBadge.png'; import PolygonBadgeDark from '@/assets/badges/polygonBadgeDark.png'; import PolygonBadgeLarge from '@/assets/badges/polygonBadgeLarge.png'; import PolygonBadgeLargeDark from '@/assets/badges/polygonBadgeLargeDark.png'; -// import SankoBadge from '@/assets/badges/sankoBadge.png'; -// import SankoBadgeDark from '@/assets/badges/sankoBadgeDark.png'; -// import SankoBadgeLarge from '@/assets/badges/sankoBadgeLarge.png'; -// import SankoBadgeLargeDark from '@/assets/badges/sankoBadgeLargeDark.png'; -// import ScrollBadge from '@/assets/badges/scrollBadge.png'; -// import ScrollBadgeDark from '@/assets/badges/scrollBadgeDark.png'; -// import ScrollBadgeLarge from '@/assets/badges/scrollBadgeLarge.png'; -// import ScrollBadgeLargeDark from '@/assets/badges/scrollBadgeLargeDark.png'; -// import ZksyncBadge from '@/assets/badges/zksyncBadge.png'; -// import ZksyncBadgeDark from '@/assets/badges/zksyncBadgeDark.png'; -// import ZksyncBadgeLarge from '@/assets/badges/zksyncBadgeLarge.png'; -// import ZksyncBadgeLargeDark from '@/assets/badges/zksyncBadgeLargeDark.png'; +import SankoBadge from '@/assets/badges/sankoBadge.png'; +import SankoBadgeLarge from '@/assets/badges/sankoBadgeLarge.png'; +import SankoBadgeLargeDark from '@/assets/badges/sankoBadgeLargeDark.png'; +import ScrollBadge from '@/assets/badges/scrollBadge.png'; +import ScrollBadgeDark from '@/assets/badges/scrollBadgeDark.png'; +import ScrollBadgeLarge from '@/assets/badges/scrollBadgeLarge.png'; +import ScrollBadgeLargeDark from '@/assets/badges/scrollBadgeLargeDark.png'; +import ZksyncBadge from '@/assets/badges/zkSyncBadge.png'; +import ZksyncBadgeDark from '@/assets/badges/zksyncBadgeDark.png'; +import ZksyncBadgeLarge from '@/assets/badges/zksyncBadgeLarge.png'; +import ZksyncBadgeLargeDark from '@/assets/badges/zksyncBadgeLargeDark.png'; import ZoraBadge from '@/assets/badges/zoraBadge.png'; import ZoraBadgeDark from '@/assets/badges/zoraBadgeDark.png'; import ZoraBadgeLarge from '@/assets/badges/zoraBadgeLarge.png'; @@ -124,24 +123,24 @@ export default function ChainBadge({ val = isDarkMode ? BscBadgeLargeDark : BscBadgeLarge; } else if (chainId === ChainId.degen) { val = isDarkMode ? DegenBadgeLargeDark : DegenBadgeLarge; - // } else if (chainId === ChainId.gnosis) { - // val = isDarkMode ? GnosisBadgeLargeDark : GnosisBadgeLarge; - // } else if (chainId === ChainId.gravity) { - // val = isDarkMode ? GravityBadgeLargeDark : GravityBadgeLarge; + } else if (chainId === ChainId.gnosis) { + val = isDarkMode ? GnosisBadgeLargeDark : GnosisBadgeLarge; + } else if (chainId === ChainId.gravity) { + val = isDarkMode ? GravityBadgeLargeDark : GravityBadgeLarge; } else if (chainId === ChainId.ink) { val = isDarkMode ? InkBadgeLargeDark : InkBadgeLarge; - // } else if (chainId === ChainId.linea) { - // val = isDarkMode ? LineaBadgeLargeDark : LineaBadgeLarge; + } else if (chainId === ChainId.linea) { + val = isDarkMode ? LineaBadgeLargeDark : LineaBadgeLarge; } else if (chainId === ChainId.optimism) { val = isDarkMode ? OptimismBadgeLargeDark : OptimismBadgeLarge; } else if (chainId === ChainId.polygon) { val = isDarkMode ? PolygonBadgeLargeDark : PolygonBadgeLarge; - // } else if (chainId === ChainId.sanko) { - // val = isDarkMode ? SankoBadgeLargeDark : SankoBadgeLarge; - // } else if (chainId === ChainId.scroll) { - // val = isDarkMode ? ScrollBadgeLargeDark : ScrollBadgeLarge; - // } else if (chainId === ChainId.zksync) { - // val = isDarkMode ? ZksyncBadgeLargeDark : ZksyncBadgeLarge; + } else if (chainId === ChainId.sanko) { + val = isDarkMode ? SankoBadgeLargeDark : SankoBadgeLarge; + } else if (chainId === ChainId.scroll) { + val = isDarkMode ? ScrollBadgeLargeDark : ScrollBadgeLarge; + } else if (chainId === ChainId.zksync) { + val = isDarkMode ? ZksyncBadgeLargeDark : ZksyncBadgeLarge; } else if (chainId === ChainId.zora) { val = isDarkMode ? ZoraBadgeLargeDark : ZoraBadgeLarge; } @@ -160,24 +159,24 @@ export default function ChainBadge({ val = isDarkMode ? BscBadgeDark : BscBadge; } else if (chainId === ChainId.degen) { val = isDarkMode ? DegenBadgeDark : DegenBadge; - // } else if (chainId === ChainId.gnosis) { - // val = isDarkMode ? GnosisBadgeDark : GnosisBadge; - // } else if (chainId === ChainId.gravity) { - // val = isDarkMode ? GravityBadgeDark : GravityBadge; + } else if (chainId === ChainId.gnosis) { + val = isDarkMode ? GnosisBadgeDark : GnosisBadge; + } else if (chainId === ChainId.gravity) { + val = isDarkMode ? GravityBadgeDark : GravityBadge; } else if (chainId === ChainId.ink) { val = isDarkMode ? InkBadgeDark : InkBadge; - // } else if (chainId === ChainId.linea) { - // val = isDarkMode ? LineaBadgeDark : LineaBadge; + } else if (chainId === ChainId.linea) { + val = isDarkMode ? LineaBadgeDark : LineaBadge; } else if (chainId === ChainId.optimism) { val = isDarkMode ? OptimismBadgeDark : OptimismBadge; } else if (chainId === ChainId.polygon) { val = isDarkMode ? PolygonBadgeDark : PolygonBadge; - // } else if (chainId === ChainId.sanko) { - // val = isDarkMode ? SankoBadgeDark : SankoBadge; - // } else if (chainId === ChainId.scroll) { - // val = isDarkMode ? ScrollBadgeDark : ScrollBadge; - // } else if (chainId === ChainId.zksync) { - // val = isDarkMode ? ZksyncBadgeDark : ZksyncBadge; + } else if (chainId === ChainId.sanko) { + val = SankoBadge; + } else if (chainId === ChainId.scroll) { + val = isDarkMode ? ScrollBadgeDark : ScrollBadge; + } else if (chainId === ChainId.zksync) { + val = isDarkMode ? ZksyncBadgeDark : ZksyncBadge; } else if (chainId === ChainId.zora) { val = isDarkMode ? ZoraBadgeDark : ZoraBadge; } diff --git a/src/components/coin-icon/ChainImage.tsx b/src/components/coin-icon/ChainImage.tsx index 1aa5c479b8e..5b325e12fe4 100644 --- a/src/components/coin-icon/ChainImage.tsx +++ b/src/components/coin-icon/ChainImage.tsx @@ -9,15 +9,15 @@ import BlastBadge from '@/assets/badges/blast.png'; import BscBadge from '@/assets/badges/bsc.png'; import DegenBadge from '@/assets/badges/degen.png'; import EthereumBadge from '@/assets/badges/ethereum.png'; -// import GnosisBadge from '@/assets/badges/gnosis.png'; -// import GravityBadge from '@/assets/badges/gravity.png'; +import GnosisBadge from '@/assets/badges/gnosis.png'; +import GravityBadge from '@/assets/badges/gravity.png'; import InkBadge from '@/assets/badges/ink.png'; -// import LineaBadge from '@/assets/badges/linea.png'; +import LineaBadge from '@/assets/badges/linea.png'; import OptimismBadge from '@/assets/badges/optimism.png'; import PolygonBadge from '@/assets/badges/polygon.png'; -// import SankoBadge from '@/assets/badges/sanko.png'; -// import ScrollBadge from '@/assets/badges/scroll.png'; -// import ZksyncBadge from '@/assets/badges/zksync.png'; +import SankoBadge from '@/assets/badges/sanko.png'; +import ScrollBadge from '@/assets/badges/scroll.png'; +import ZksyncBadge from '@/assets/badges/zksync.png'; import ZoraBadge from '@/assets/badges/zora.png'; import FastImage, { Source } from 'react-native-fast-image'; @@ -39,26 +39,26 @@ export function ChainImage({ chainId, size = 20 }: { chainId: ChainId | null | u return BscBadge; case ChainId.degen: return DegenBadge; - // case ChainId.gnosis: - // return GnosisBadge; - // case ChainId.gravity: - // return GravityBadge; + case ChainId.gnosis: + return GnosisBadge; + case ChainId.gravity: + return GravityBadge; case ChainId.ink: return InkBadge; - // case ChainId.linea: - // return LineaBadge; + case ChainId.linea: + return LineaBadge; case ChainId.mainnet: return EthereumBadge; case ChainId.optimism: return OptimismBadge; case ChainId.polygon: return PolygonBadge; - // case ChainId.sanko: - // return SankoBadge; - // case ChainId.scroll: - // return ScrollBadge; - // case ChainId.zksync: - // return ZksyncBadge; + case ChainId.sanko: + return SankoBadge; + case ChainId.scroll: + return ScrollBadge; + case ChainId.zksync: + return ZksyncBadge; case ChainId.zora: return ZoraBadge; default: From 0acafeb7455796cd64eed77407ba2cc8ef78a615 Mon Sep 17 00:00:00 2001 From: gregs Date: Thu, 19 Dec 2024 18:17:23 -0300 Subject: [PATCH 05/19] Trending tokens polishes (#6331) * portal * trending tokens * network switcher * feat flag * opss * i18n * performance * ops * Wire up trending tokens UI (#6292) * implement gql query to get trending tokens for selected network and display them * fix dragging issue with no chainId and tapping empty space resetting network to all networks * add mock handler for navigating to swaps flow * fix lint * shuffle files and break out network switcher to be composable * refactor SwapCoinIcon to use a size prop instead of small, large, xlarge, etc. * add view token analytics event * add time tracking to discover screen * add tracking for if user has swapped a trending token * decouple network selector from trending tokens and add rest of analytics events * fix customize network banner not being dismissable * revert white color token change * lint? * add remote config flag for trending tokens * scroll & light mode * better categories colors * fix select all chain badges * polish ui * better buttons * save * align friends pfps * fix price change timeframes * fix images * better currency formatting * fix comment * fix network button selecting the wrong one * fix: tt sort (#6337) * TT fixes (#6338) * remove arrows for price change * fix friend holders display * fix dupes * align and make friends looks better * remove spread * ops --------- Co-authored-by: gregs * fix: tt -> swaps nav (#6343) * fix missing header height on the sheet (#6315) * convert network accessors to functions (#6219) * convert network accessors to functions * backend networks store * wrote a couple worklet functions to get swaps working * fix other calls * Update package.json * Update ios/Podfile.lock * move all functions into backendNetworksStore and replace calls * refresh podlock * no clue what happened during merge * fix: APP-2021 * fix: APP-2022 * fix build and lint * Bump nanoid from 3.3.7 to 3.3.8 in /src/design-system/docs (#6320) Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8. - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8) --- updated-dependencies: - dependency-name: nanoid dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update default currentNonce value to -1 (use case: fresh wallet or freshly imported wallet) (#6324) * Set currentNonce default to -1 if not stored (use case: fresh wallet or freshly imported wallet) * Update pending txn logic to treat default of -1 for currentNonce when it does not exist yet * Replace node ack retries with a small delay (#6326) * fix undefined size on TextShadow component when switching themes (#6329) * chore: update swaps sdk + use new getWrappedAssetAddress method (#6327) * NFT checker 2.0 (#6293) * Add inkchain support (#6323) * add basic entries * update chain badge assets * alphabetizing imports / mappings * update tokenSearch, default bips * alphabetize and clean up * alphabetize en_US * add explainer text and colors * update simplehash networks * update chainIds and explainer copy * chain IDs * add proper colors * add badges I have access to * add assets to assets folder as well * add assets * comment out other chains * remove badges for other networks * fix ethereum badge assets * idk if podlock is needed * Readd avalanche network type * Add new chains to chainsIdByNetwork mapping --------- Co-authored-by: Bruno Barbieri Co-authored-by: jinchung * Retrieve FID for wallet addresses (#6330) * bump iOS and Android to v1.9.50 (#6340) * Icons hotfix (#6342) * handle raw response from contract call correctly * fix logic to reveal icons * resolve missing imports * chainId * prioritize symbol & not resize selected catergory pill * discorty screen trending tokens separator * add remote config to control limit * remove unused import * chore: temp hc for review at limit 12 * Update iOS and Android to v1.9.51 (#6346) * chore: remove unnecessary hc limit * fix: nav to swap from tt row (#6347) * Fix non fractal price data formatter (#6348) * format price for amounts >1 different than fractal amounts * handle >6 figs native value different and show in compact notation to prevent row collision * prevent token symbol from growing beyond what it needs * Update src/components/Discover/TrendingTokens.tsx * remove DebugLayout * Fix spacing to 28px in latest TestFlight version (#6351) * fix spacing between items * Update src/components/Discover/TrendingTokens.tsx * fix network switcher using name instead of label (#6350) * add default initial pinned chains (#6349) * portal * trending tokens * network switcher * feat flag * opss * i18n * performance * ops * Wire up trending tokens UI (#6292) * implement gql query to get trending tokens for selected network and display them * fix dragging issue with no chainId and tapping empty space resetting network to all networks * add mock handler for navigating to swaps flow * fix lint * shuffle files and break out network switcher to be composable * refactor SwapCoinIcon to use a size prop instead of small, large, xlarge, etc. * add view token analytics event * add time tracking to discover screen * add tracking for if user has swapped a trending token * decouple network selector from trending tokens and add rest of analytics events * fix customize network banner not being dismissable * revert white color token change * lint? * add remote config flag for trending tokens * scroll & light mode * better categories colors * fix select all chain badges * polish ui * better buttons * save * align friends pfps * fix price change timeframes * fix images * better currency formatting * fix comment * fix network button selecting the wrong one * fix: tt sort (#6337) * TT fixes (#6338) * remove arrows for price change * fix friend holders display * fix dupes * align and make friends looks better * remove spread * ops --------- Co-authored-by: gregs * fix: tt -> swaps nav (#6343) * convert network accessors to functions (#6219) * convert network accessors to functions * backend networks store * wrote a couple worklet functions to get swaps working * fix other calls * Update package.json * Update ios/Podfile.lock * move all functions into backendNetworksStore and replace calls * refresh podlock * no clue what happened during merge * fix: APP-2021 * fix: APP-2022 * fix build and lint * NFT checker 2.0 (#6293) * Icons hotfix (#6342) * handle raw response from contract call correctly * fix logic to reveal icons * resolve missing imports * chainId * prioritize symbol & not resize selected catergory pill * discorty screen trending tokens separator * add remote config to control limit * remove unused import * chore: temp hc for review at limit 12 * chore: remove unnecessary hc limit * Fix non fractal price data formatter (#6348) * format price for amounts >1 different than fractal amounts * handle >6 figs native value different and show in compact notation to prevent row collision * prevent token symbol from growing beyond what it needs * Update src/components/Discover/TrendingTokens.tsx * remove DebugLayout * Fix spacing to 28px in latest TestFlight version (#6351) * fix spacing between items * Update src/components/Discover/TrendingTokens.tsx * fix network switcher using name instead of label (#6350) * add default initial pinned chains (#6349) * fix network switcher to use a network chip when odd number of pinned (#6354) * Use sheet instead of custom AbsolutePortal (#6357) * use sheet instead of absoluteportal * fix timings * add a little delay between transition expanded and collapsed --------- Signed-off-by: dependabot[bot] Co-authored-by: Matthew Wall Co-authored-by: Christopher Howard Co-authored-by: Bruno Barbieri <1247834+brunobar79@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jin Co-authored-by: Wayne Cheng <677680+welps@users.noreply.github.com> Co-authored-by: Bruno Barbieri Co-authored-by: Ibrahim Taveras --- .eslintrc.js | 1 + src/App.tsx | 2 + .../Swap/components/AnimatedSwapCoinIcon.tsx | 90 +- .../screens/Swap/components/CoinRow.tsx | 2 +- .../screens/Swap/components/SwapCoinIcon.tsx | 103 +-- .../Swap/components/SwapInputAsset.tsx | 2 +- .../Swap/components/SwapOutputAsset.tsx | 2 +- .../screens/Swap/components/SwapSlider.tsx | 2 +- .../screens/Swap/providers/swap-provider.tsx | 10 + src/analytics/event.ts | 43 + src/analytics/userProperties.ts | 4 + src/components/AbsolutePortal.tsx | 10 +- .../control-panel/ControlPanel.tsx | 2 +- .../Discover}/DiscoverFeaturedResultsCard.tsx | 0 .../Discover}/DiscoverHome.tsx | 13 +- .../Discover}/DiscoverScreenContent.tsx | 8 +- .../Discover}/DiscoverScreenContext.tsx | 3 + .../Discover}/DiscoverSearch.tsx | 2 +- .../Discover}/DiscoverSearchContainer.tsx | 4 +- .../Discover}/DiscoverSearchInput.tsx | 2 +- src/components/Discover/TrendingTokens.tsx | 656 ++++++++++++++ .../Discover/useTrackDiscoverScreenTime.ts | 21 + src/components/NetworkSwitcher.tsx | 805 ++++++++++++++++++ src/components/coin-icon/ChainImage.tsx | 31 +- .../sheet-action-buttons/SwapActionButton.tsx | 2 +- src/config/experimental.ts | 2 + src/graphql/queries/arc.graphql | 2 + src/helpers/strings.ts | 128 +++ src/hooks/reanimated/useSyncSharedValue.ts | 8 +- src/hooks/useFarcasterAccountForWallets.ts | 27 +- src/languages/en_US.json | 48 ++ src/model/remoteConfig.ts | 6 + src/navigation/Routes.android.tsx | 2 + src/navigation/Routes.ios.tsx | 3 + src/navigation/SwipeNavigator.tsx | 4 +- src/navigation/config.tsx | 14 + src/navigation/routesNames.ts | 1 + src/navigation/types.ts | 10 +- src/performance/tracking/index.ts | 2 +- .../tracking/types/PerformanceMetrics.ts | 1 + src/redux/settings.ts | 7 +- .../trendingTokens/trendingTokens.ts | 108 ++- src/screens/{discover => }/DiscoverScreen.tsx | 16 +- src/state/backendNetworks/backendNetworks.ts | 6 + src/state/internal/createRainbowStore.ts | 7 + src/state/networkSwitcher/networkSwitcher.ts | 57 ++ src/state/swaps/swapsStore.ts | 6 +- src/state/trendingTokens/trendingTokens.ts | 59 ++ src/walletConnect/sheets/AuthRequest.tsx | 2 +- 49 files changed, 2139 insertions(+), 207 deletions(-) rename src/{screens/discover/components => components/Discover}/DiscoverFeaturedResultsCard.tsx (100%) rename src/{screens/discover/components => components/Discover}/DiscoverHome.tsx (89%) rename src/{screens/discover/components => components/Discover}/DiscoverScreenContent.tsx (76%) rename src/{screens/discover => components/Discover}/DiscoverScreenContext.tsx (96%) rename src/{screens/discover/components => components/Discover}/DiscoverSearch.tsx (99%) rename src/{screens/discover/components => components/Discover}/DiscoverSearchContainer.tsx (92%) rename src/{screens/discover/components => components/Discover}/DiscoverSearchInput.tsx (98%) create mode 100644 src/components/Discover/TrendingTokens.tsx create mode 100644 src/components/Discover/useTrackDiscoverScreenTime.ts create mode 100644 src/components/NetworkSwitcher.tsx rename src/screens/{discover => }/DiscoverScreen.tsx (95%) create mode 100644 src/state/networkSwitcher/networkSwitcher.ts create mode 100644 src/state/trendingTokens/trendingTokens.ts diff --git a/.eslintrc.js b/.eslintrc.js index 6df1e6e1e52..f8cb2150123 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -39,5 +39,6 @@ module.exports = { ], 'jest/expect-expect': 'off', 'jest/no-disabled-tests': 'off', + 'no-nested-ternary': 'off', }, }; diff --git a/src/App.tsx b/src/App.tsx index 157ff68b606..4977067dc60 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -40,6 +40,7 @@ import { IS_ANDROID, IS_DEV } from '@/env'; import { prefetchDefaultFavorites } from '@/resources/favorites'; import Routes from '@/navigation/Routes'; import { BackendNetworks } from '@/components/BackendNetworks'; +import { AbsolutePortalRoot } from './components/AbsolutePortal'; if (IS_DEV) { reactNativeDisableYellowBox && LogBox.ignoreAllLogs(); @@ -73,6 +74,7 @@ function App({ walletReady }: AppProps) { + )} diff --git a/src/__swaps__/screens/Swap/components/AnimatedSwapCoinIcon.tsx b/src/__swaps__/screens/Swap/components/AnimatedSwapCoinIcon.tsx index 2c8ba92b2ea..7d8ec66e8e1 100644 --- a/src/__swaps__/screens/Swap/components/AnimatedSwapCoinIcon.tsx +++ b/src/__swaps__/screens/Swap/components/AnimatedSwapCoinIcon.tsx @@ -14,37 +14,19 @@ import { IS_ANDROID, IS_IOS } from '@/env'; import { PIXEL_RATIO } from '@/utils/deviceUtils'; import { useSwapContext } from '../providers/swap-provider'; -const fallbackIconStyle = { - ...borders.buildCircleAsObject(32), - position: 'absolute' as ViewStyle['position'], -}; - -const largeFallbackIconStyle = { - ...borders.buildCircleAsObject(36), - position: 'absolute' as ViewStyle['position'], -}; - -const smallFallbackIconStyle = { - ...borders.buildCircleAsObject(16), - position: 'absolute' as ViewStyle['position'], -}; - export const AnimatedSwapCoinIcon = memo(function AnimatedSwapCoinIcon({ assetType, - large = true, - small, + size = 32, showBadge = true, }: { assetType: 'input' | 'output'; - large?: boolean; - small?: boolean; + size?: number; showBadge?: boolean; }) { const { isDarkMode, colors } = useTheme(); const { internalSelectedInputAsset, internalSelectedOutputAsset } = useSwapContext(); const asset = assetType === 'input' ? internalSelectedInputAsset : internalSelectedOutputAsset; - const size = small ? 16 : large ? 36 : 32; const didErrorForUniqueId = useSharedValue(undefined); @@ -91,15 +73,8 @@ export const AnimatedSwapCoinIcon = memo(function AnimatedSwapCoinIcon({ })); return ( - - + + {/* ⚠️ TODO: This works but we should figure out how to type this correctly to avoid this error */} {/* @ts-expect-error: Doesn't pick up that it's getting a source prop via animatedProps */} @@ -122,29 +97,14 @@ export const AnimatedSwapCoinIcon = memo(function AnimatedSwapCoinIcon({ /> - - + + @@ -153,28 +113,28 @@ export const AnimatedSwapCoinIcon = memo(function AnimatedSwapCoinIcon({ ); }); +const fallbackIconStyle = (size: number) => ({ + ...borders.buildCircleAsObject(size), + position: 'absolute' as ViewStyle['position'], +}); + +const coinIconFallbackStyle = (size: number) => ({ + borderRadius: size / 2, + height: size, + width: size, + overflow: 'visible' as const, +}); + +const containerStyle = (size: number) => ({ + elevation: 6, + height: size, + overflow: 'visible' as const, +}); + const sx = StyleSheet.create({ coinIcon: { overflow: 'hidden', }, - coinIconFallback: { - borderRadius: 16, - height: 32, - overflow: 'visible', - width: 32, - }, - coinIconFallbackLarge: { - borderRadius: 18, - height: 36, - overflow: 'visible', - width: 36, - }, - coinIconFallbackSmall: { - borderRadius: 8, - height: 16, - overflow: 'visible', - width: 16, - }, container: { elevation: 6, height: 32, diff --git a/src/__swaps__/screens/Swap/components/CoinRow.tsx b/src/__swaps__/screens/Swap/components/CoinRow.tsx index c3fb98919b1..dc1894bddf1 100644 --- a/src/__swaps__/screens/Swap/components/CoinRow.tsx +++ b/src/__swaps__/screens/Swap/components/CoinRow.tsx @@ -131,7 +131,7 @@ export function CoinRow({ isFavorite, onPress, output, uniqueId, testID, ...asse iconUrl={icon_url} address={address} mainnetAddress={mainnetAddress} - large + size={36} chainId={chainId} symbol={symbol || ''} color={colors?.primary} diff --git a/src/__swaps__/screens/Swap/components/SwapCoinIcon.tsx b/src/__swaps__/screens/Swap/components/SwapCoinIcon.tsx index bb5069c5092..f5e15d41c8d 100644 --- a/src/__swaps__/screens/Swap/components/SwapCoinIcon.tsx +++ b/src/__swaps__/screens/Swap/components/SwapCoinIcon.tsx @@ -24,20 +24,10 @@ const fallbackTextStyles = { textAlign: 'center', }; -const fallbackIconStyle = { - ...borders.buildCircleAsObject(32), +const fallbackIconStyle = (size: number) => ({ + ...borders.buildCircleAsObject(size), position: 'absolute', -}; - -const largeFallbackIconStyle = { - ...borders.buildCircleAsObject(36), - position: 'absolute', -}; - -const smallFallbackIconStyle = { - ...borders.buildCircleAsObject(16), - position: 'absolute', -}; +}); /** * If mainnet asset is available, get the token under /ethereum/ (token) url. @@ -63,22 +53,22 @@ export const SwapCoinIcon = React.memo(function FeedCoinIcon({ iconUrl, disableShadow = true, forceDarkMode, - large, mainnetAddress, chainId, - small, symbol, + size = 32, + chainSize, }: { address: string; color?: string; iconUrl?: string; disableShadow?: boolean; forceDarkMode?: boolean; - large?: boolean; mainnetAddress?: string; chainId: ChainId; - small?: boolean; symbol: string; + size?: number; + chainSize?: number; }) { const theme = useTheme(); @@ -92,52 +82,52 @@ export const SwapCoinIcon = React.memo(function FeedCoinIcon({ const eth = isETH(resolvedAddress); return ( - + {eth ? ( - + ) : ( - + {() => ( )} )} - {chainId && chainId !== ChainId.mainnet && !small && ( + {chainId && chainId !== ChainId.mainnet && size > 16 && ( - + )} ); }); +const styles = { + container: (size: number) => ({ + elevation: 6, + height: size, + overflow: 'visible' as const, + }), + coinIcon: (size: number) => ({ + borderRadius: size / 2, + height: size, + width: size, + overflow: 'visible' as const, + }), +}; + const sx = StyleSheet.create({ badge: { bottom: -0, @@ -151,39 +141,6 @@ const sx = StyleSheet.create({ shadowRadius: 6, shadowOpacity: 0.2, }, - coinIconFallback: { - borderRadius: 16, - height: 32, - overflow: 'visible', - width: 32, - }, - coinIconFallbackLarge: { - borderRadius: 18, - height: 36, - overflow: 'visible', - width: 36, - }, - coinIconFallbackSmall: { - borderRadius: 8, - height: 16, - overflow: 'visible', - width: 16, - }, - container: { - elevation: 6, - height: 32, - overflow: 'visible', - }, - containerLarge: { - elevation: 6, - height: 36, - overflow: 'visible', - }, - containerSmall: { - elevation: 6, - height: 16, - overflow: 'visible', - }, reactCoinIconContainer: { alignItems: 'center', justifyContent: 'center', diff --git a/src/__swaps__/screens/Swap/components/SwapInputAsset.tsx b/src/__swaps__/screens/Swap/components/SwapInputAsset.tsx index af94a152e8a..23734d39ce8 100644 --- a/src/__swaps__/screens/Swap/components/SwapInputAsset.tsx +++ b/src/__swaps__/screens/Swap/components/SwapInputAsset.tsx @@ -96,7 +96,7 @@ function SwapInputAmount() { function SwapInputIcon() { return ( - + ); } diff --git a/src/__swaps__/screens/Swap/components/SwapOutputAsset.tsx b/src/__swaps__/screens/Swap/components/SwapOutputAsset.tsx index de15b46bee6..93130066142 100644 --- a/src/__swaps__/screens/Swap/components/SwapOutputAsset.tsx +++ b/src/__swaps__/screens/Swap/components/SwapOutputAsset.tsx @@ -108,7 +108,7 @@ function SwapOutputAmount({ handleTapWhileDisabled }: { handleTapWhileDisabled: function SwapOutputIcon() { return ( - + ); } diff --git a/src/__swaps__/screens/Swap/components/SwapSlider.tsx b/src/__swaps__/screens/Swap/components/SwapSlider.tsx index 572f9eb6e80..90ac3ac724c 100644 --- a/src/__swaps__/screens/Swap/components/SwapSlider.tsx +++ b/src/__swaps__/screens/Swap/components/SwapSlider.tsx @@ -412,7 +412,7 @@ export const SwapSlider = ({ - + { const isBridge = swapsStore.getState().inputAsset?.mainnetAddress === swapsStore.getState().outputAsset?.mainnetAddress; const isDegenModeEnabled = swapsStore.getState().degenMode; const isSwappingToPopularAsset = swapsStore.getState().outputAsset?.sectionId === 'popular'; + const lastNavigatedTrendingToken = swapsStore.getState().lastNavigatedTrendingToken; + const isSwappingToTrendingAsset = + lastNavigatedTrendingToken === parameters.assetToBuy.uniqueId || lastNavigatedTrendingToken === parameters.assetToSell.uniqueId; const selectedGas = getSelectedGas(parameters.chainId); if (!selectedGas) { @@ -325,6 +328,7 @@ export const SwapProvider = ({ children }: SwapProviderProps) => { tradeAmountUSD: parameters.quote.tradeAmountUSD, degenMode: isDegenModeEnabled, isSwappingToPopularAsset, + isSwappingToTrendingAsset, errorMessage, isHardwareWallet, }); @@ -389,6 +393,7 @@ export const SwapProvider = ({ children }: SwapProviderProps) => { tradeAmountUSD: parameters.quote.tradeAmountUSD, degenMode: isDegenModeEnabled, isSwappingToPopularAsset, + isSwappingToTrendingAsset, isHardwareWallet, }); } catch (error) { @@ -403,6 +408,11 @@ export const SwapProvider = ({ children }: SwapProviderProps) => { }, }); } + + // reset the last navigated trending token after a swap has taken place + swapsStore.setState({ + lastNavigatedTrendingToken: undefined, + }); }; const executeSwap = performanceTracking.getState().executeFn({ diff --git a/src/analytics/event.ts b/src/analytics/event.ts index adfcbee8a6d..673e71a810d 100644 --- a/src/analytics/event.ts +++ b/src/analytics/event.ts @@ -9,6 +9,7 @@ import { RequestSource } from '@/utils/requestNavigationHandlers'; import { CrosschainQuote, Quote, QuoteError } from '@rainbow-me/swaps'; import { AnyPerformanceLog, Screen } from '../state/performance/operations'; import { FavoritedSite } from '@/state/browser/favoriteDappsStore'; +import { TrendingToken } from '@/resources/trendingTokens/trendingTokens'; /** * All events, used by `analytics.track()` @@ -167,6 +168,14 @@ export const event = { // token details tokenDetailsErc20: 'token_details.erc20', tokenDetailsNFT: 'token_details.nft', + + // trending tokens + viewTrendingToken: 'trending_tokens.view_trending_token', + viewRankedCategory: 'trending_tokens.view_ranked_category', + changeNetworkFilter: 'trending_tokens.change_network_filter', + changeTimeframeFilter: 'trending_tokens.change_timeframe_filter', + changeSortFilter: 'trending_tokens.change_sort_filter', + hasLinkedFarcaster: 'trending_tokens.has_linked_farcaster', } as const; type SwapEventParameters = { @@ -186,6 +195,7 @@ type SwapEventParameters = { tradeAmountUSD: number; degenMode: boolean; isSwappingToPopularAsset: boolean; + isSwappingToTrendingAsset: boolean; isHardwareWallet: boolean; }; @@ -706,4 +716,37 @@ export type EventProperties = { eventSentAfterMs: number; available_data: { description: boolean; image_url: boolean; floorPrice: boolean }; }; + + [event.viewTrendingToken]: { + address: TrendingToken['address']; + chainId: TrendingToken['chainId']; + symbol: TrendingToken['symbol']; + name: TrendingToken['name']; + highlightedFriends: number; + }; + + [event.viewRankedCategory]: { + category: string; + chainId: ChainId | undefined; + isLimited: boolean; + isEmpty: boolean; + }; + + [event.changeNetworkFilter]: { + chainId: ChainId | undefined; + }; + + [event.changeTimeframeFilter]: { + timeframe: string; + }; + + [event.changeSortFilter]: { + sort: string | undefined; + }; + + [event.hasLinkedFarcaster]: { + hasFarcaster: boolean; + personalizedTrending: boolean; + walletHash: string; + }; }; diff --git a/src/analytics/userProperties.ts b/src/analytics/userProperties.ts index b42d5518a61..8a467e4b09a 100644 --- a/src/analytics/userProperties.ts +++ b/src/analytics/userProperties.ts @@ -1,3 +1,4 @@ +import { ChainId } from '@/state/backendNetworks/types'; import { NativeCurrencyKey } from '@/entities'; import { Language } from '@/languages'; @@ -36,6 +37,9 @@ export interface UserProperties { hiddenCOins?: string[]; appIcon?: string; + // most used networks at the time the user first opens the network switcher + mostUsedNetworks?: ChainId[]; + // assets NFTs?: number; poaps?: number; diff --git a/src/components/AbsolutePortal.tsx b/src/components/AbsolutePortal.tsx index b578234bd0a..c98b036cd70 100644 --- a/src/components/AbsolutePortal.tsx +++ b/src/components/AbsolutePortal.tsx @@ -32,17 +32,15 @@ export const AbsolutePortalRoot = () => { return () => unsubscribe(); }, []); - return ( - - {nodes} - - ); + return {nodes}; }; export const AbsolutePortal = ({ children }: PropsWithChildren) => { useEffect(() => { absolutePortal.addNode(children); - return () => absolutePortal.removeNode(children); + return () => { + absolutePortal.removeNode(children); + }; }, [children]); return null; diff --git a/src/components/DappBrowser/control-panel/ControlPanel.tsx b/src/components/DappBrowser/control-panel/ControlPanel.tsx index 99c24dd0597..94977e35f14 100644 --- a/src/components/DappBrowser/control-panel/ControlPanel.tsx +++ b/src/components/DappBrowser/control-panel/ControlPanel.tsx @@ -311,7 +311,7 @@ export const ControlPanel = () => { ); }; -const TapToDismiss = memo(function TapToDismiss() { +export const TapToDismiss = memo(function TapToDismiss() { const { goBack } = useNavigation(); return ( diff --git a/src/screens/discover/components/DiscoverFeaturedResultsCard.tsx b/src/components/Discover/DiscoverFeaturedResultsCard.tsx similarity index 100% rename from src/screens/discover/components/DiscoverFeaturedResultsCard.tsx rename to src/components/Discover/DiscoverFeaturedResultsCard.tsx diff --git a/src/screens/discover/components/DiscoverHome.tsx b/src/components/Discover/DiscoverHome.tsx similarity index 89% rename from src/screens/discover/components/DiscoverHome.tsx rename to src/components/Discover/DiscoverHome.tsx index 7132c19c016..019328a92b6 100644 --- a/src/screens/discover/components/DiscoverHome.tsx +++ b/src/components/Discover/DiscoverHome.tsx @@ -6,9 +6,10 @@ import useExperimentalFlag, { MINTS, NFT_OFFERS, FEATURED_RESULTS, + TRENDING_TOKENS, } from '@rainbow-me/config/experimentalHooks'; import { isTestnetChain } from '@/handlers/web3'; -import { Inline, Inset, Stack, Box } from '@/design-system'; +import { Inline, Inset, Stack, Box, Separator } from '@/design-system'; import { useAccountSettings, useWallets } from '@/hooks'; import { ENSCreateProfileCard } from '@/components/cards/ENSCreateProfileCard'; import { ENSSearchCard } from '@/components/cards/ENSSearchCard'; @@ -28,11 +29,12 @@ import { FeaturedResultStack } from '@/components/FeaturedResult/FeaturedResultS import Routes from '@/navigation/routesNames'; import { useNavigation } from '@/navigation'; import { DiscoverFeaturedResultsCard } from './DiscoverFeaturedResultsCard'; +import { TrendingTokens } from '@/components/Discover/TrendingTokens'; export const HORIZONTAL_PADDING = 20; export default function DiscoverHome() { - const { profiles_enabled, mints_enabled, op_rewards_enabled, featured_results } = useRemoteConfig(); + const { profiles_enabled, mints_enabled, op_rewards_enabled, featured_results, trending_tokens_enabled } = useRemoteConfig(); const { chainId } = useAccountSettings(); const profilesEnabledLocalFlag = useExperimentalFlag(PROFILES); const profilesEnabledRemoteFlag = profiles_enabled; @@ -42,6 +44,7 @@ export default function DiscoverHome() { const mintsEnabled = (useExperimentalFlag(MINTS) || mints_enabled) && !IS_TEST; const opRewardsLocalFlag = useExperimentalFlag(OP_REWARDS); const opRewardsRemoteFlag = op_rewards_enabled; + const trendingTokensEnabled = (useExperimentalFlag(TRENDING_TOKENS) || trending_tokens_enabled) && !IS_TEST; const testNetwork = isTestnetChain({ chainId }); const { navigate } = useNavigation(); const isProfilesEnabled = profilesEnabledLocalFlag && profilesEnabledRemoteFlag; @@ -67,6 +70,12 @@ export default function DiscoverHome() { {isProfilesEnabled && } + {trendingTokensEnabled && ( + <> + + + + )} {mintsEnabled && ( diff --git a/src/screens/discover/components/DiscoverScreenContent.tsx b/src/components/Discover/DiscoverScreenContent.tsx similarity index 76% rename from src/screens/discover/components/DiscoverScreenContent.tsx rename to src/components/Discover/DiscoverScreenContent.tsx index 1e3a7650013..99271271ded 100644 --- a/src/screens/discover/components/DiscoverScreenContent.tsx +++ b/src/components/Discover/DiscoverScreenContent.tsx @@ -1,12 +1,12 @@ import React from 'react'; import { View } from 'react-native'; import { FlexItem, Page } from '@/components/layout'; -import DiscoverHome from './DiscoverHome'; -import DiscoverSearch from './DiscoverSearch'; -import DiscoverSearchContainer from './DiscoverSearchContainer'; +import DiscoverHome from '@/components/Discover/DiscoverHome'; +import DiscoverSearch from '@/components/Discover/DiscoverSearch'; +import DiscoverSearchContainer from '@/components/Discover/DiscoverSearchContainer'; import { Box, Inset } from '@/design-system'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; -import { useDiscoverScreenContext } from '../DiscoverScreenContext'; +import { useDiscoverScreenContext } from '@/components/Discover/DiscoverScreenContext'; function Switcher({ children }: { children: React.ReactNode[] }) { const { isSearching } = useDiscoverScreenContext(); diff --git a/src/screens/discover/DiscoverScreenContext.tsx b/src/components/Discover/DiscoverScreenContext.tsx similarity index 96% rename from src/screens/discover/DiscoverScreenContext.tsx rename to src/components/Discover/DiscoverScreenContext.tsx index eb9b276443d..31a8e89106b 100644 --- a/src/screens/discover/DiscoverScreenContext.tsx +++ b/src/components/Discover/DiscoverScreenContext.tsx @@ -2,6 +2,7 @@ import { analytics } from '@/analytics'; import React, { createContext, Dispatch, SetStateAction, RefObject, useState, useRef, useCallback } from 'react'; import { SectionList, TextInput } from 'react-native'; import Animated from 'react-native-reanimated'; +import { useTrackDiscoverScreenTime } from './useTrackDiscoverScreenTime'; type DiscoverScreenContextType = { scrollViewRef: RefObject; @@ -80,6 +81,8 @@ const DiscoverScreenProvider = ({ children }: { children: React.ReactNode }) => setIsSearching(false); }, [searchQuery]); + useTrackDiscoverScreenTime(); + return ( { + pressed.value = true; + if (onPress) runOnJS(onPress)(); + }) + .onFinalize(() => (pressed.value = false)); + + const animatedStyles = useAnimatedStyle(() => ({ + transform: [{ scale: withTiming(pressed.value ? 0.95 : 1, { duration: 100 }) }], + })); + + const backgroundColor = useBackgroundColor('fillTertiary'); + const borderColor = useBackgroundColor('fillSecondary'); + + const iconColor = useForegroundColor('labelQuaternary'); + + return ( + + + {typeof icon === 'string' ? ( + + {icon} + + ) : ( + icon + )} + + {label} + + + 􀆏 + + + + ); +} + +function useTrendingTokensData() { + const { nativeCurrency } = useAccountSettings(); + const remoteConfig = useRemoteConfig(); + const { chainId, category, timeframe, sort } = useTrendingTokensStore(state => ({ + chainId: state.chainId, + category: state.category, + timeframe: state.timeframe, + sort: state.sort, + })); + + const walletAddress = useFarcasterAccountForWallets(); + + return useTrendingTokens({ + chainId, + category, + timeframe, + sortBy: sort, + sortDirection: SortDirection.Desc, + limit: remoteConfig.trending_tokens_limit, + walletAddress: walletAddress, + currency: nativeCurrency, + }); +} + +function ReportAnalytics() { + const activeSwipeRoute = useNavigationStore(state => state.activeSwipeRoute); + const { category, chainId } = useTrendingTokensStore(state => ({ category: state.category, chainId: state.chainId })); + const { data: trendingTokens, isLoading } = useTrendingTokensData(); + + useEffect(() => { + if (isLoading || activeSwipeRoute !== Routes.DISCOVER_SCREEN) return; + + const isEmpty = (trendingTokens?.length ?? 0) === 0; + const isLimited = !isEmpty && (trendingTokens?.length ?? 0) < 6; + + analyticsV2.track(analyticsV2.event.viewRankedCategory, { + category, + chainId, + isLimited, + isEmpty, + }); + }, [isLoading, activeSwipeRoute, trendingTokens?.length, category, chainId]); + + return null; +} + +function CategoryFilterButton({ + category, + icon, + iconWidth = 16, + iconColor, + label, + highlightedBackgroundColor, +}: { + category: TrendingCategory; + icon: string; + iconColor: string; + highlightedBackgroundColor: string; + iconWidth?: number; + label: string; +}) { + const { isDarkMode } = useTheme(); + const fillTertiary = useBackgroundColor('fillTertiary'); + const fillSecondary = useBackgroundColor('fillSecondary'); + + const selected = useTrendingTokensStore(state => state.category === category); + + const borderColor = selected && isDarkMode ? globalColors.white80 : fillSecondary; + + const pressed = useSharedValue(false); + + const selectCategory = useCallback(() => { + useTrendingTokensStore.getState().setCategory(category); + }, [category]); + + const tap = Gesture.Tap() + .onBegin(() => { + pressed.value = true; + }) + .onEnd(() => { + pressed.value = false; + runOnJS(selectCategory)(); + }); + + const animatedStyles = useAnimatedStyle(() => ({ + transform: [{ scale: withTiming(pressed.value ? 0.95 : 1, { duration: 100 }) }], + })); + + return ( + + + + {icon} + + + {label} + + + + ); +} + +function FriendPfp({ pfp_url }: { pfp_url: string }) { + const backgroundColor = useBackgroundColor('surfacePrimary'); + return ( + + ); +} +function FriendHolders({ friends }: { friends: FarcasterUser[] }) { + if (friends.length === 0) return null; + const howManyOthers = Math.max(1, friends.length - 2); + const separator = howManyOthers === 1 && friends.length === 2 ? ` ${i18n.t(t.and)} ` : ', '; + + return ( + + + + {friends[1] && } + + + + + {friends[0].username} + {friends[1] && ( + <> + + {separator} + + {friends[1].username} + + )} + + {friends.length > 2 && ( + + {' '} + {i18n.t('trending_tokens.and_others', { count: howManyOthers })} + + )} + + + ); +} + +function TrendingTokenLoadingRow() { + const backgroundColor = useBackgroundColor('surfacePrimary'); + const { isDarkMode } = useTheme(); + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} + +function getPriceChangeColor(priceChange: number) { + if (priceChange === 0) return 'labelTertiary'; + return priceChange > 0 ? 'green' : 'red'; +} + +function TrendingTokenRow({ token }: { token: TrendingToken }) { + const separatorColor = useForegroundColor('separator'); + + const price = formatCurrency(token.price); + const marketCap = formatNumber(token.marketCap, { useOrderSuffix: true, decimals: 1, style: '$' }); + const volume = formatNumber(token.volume, { useOrderSuffix: true, decimals: 1, style: '$' }); + + const handleNavigateToToken = useCallback(() => { + analyticsV2.track(analyticsV2.event.viewTrendingToken, { + address: token.address, + chainId: token.chainId, + symbol: token.symbol, + name: token.name, + highlightedFriends: token.highlightedFriends.length, + }); + + swapsStore.setState({ + lastNavigatedTrendingToken: token.uniqueId, + }); + + Navigation.handleAction(Routes.EXPANDED_ASSET_SHEET, { + asset: token, + type: 'token', + }); + }, [token]); + + if (!token) return null; + + return ( + + + + + + + + + + + + {token.name} + + + {token.symbol} + + + {price} + + + + + + + VOL + + + {volume} + + + + + | + + + + + MCAP + + + {marketCap} + + + + + + + + + {formatNumber(token.priceChange.day, { decimals: 2, useOrderSuffix: true })}% + + + + + 1H + + + {formatNumber(token.priceChange.hr, { decimals: 2, useOrderSuffix: true })}% + + + + + + + + ); +} + +function NoResults() { + const { isDarkMode } = useTheme(); + const fillQuaternary = useBackgroundColor('fillQuaternary'); + const backgroundColor = isDarkMode ? '#191A1C' : fillQuaternary; + + return ( + + + + {i18n.t(t.no_results.title)} + + + {i18n.t(t.no_results.body)} + + + + + 􀙭 + + + + ); +} + +function NetworkFilter() { + const selected = useSharedValue(undefined); + + const { chainId, setChainId } = useTrendingTokensStore(state => ({ + chainId: state.chainId, + setChainId: state.setChainId, + })); + + const setSelected = useCallback( + (chainId: ChainId | undefined) => { + 'worklet'; + selected.value = chainId; + runOnJS(setChainId)(chainId); + }, + [selected, setChainId] + ); + + const label = !chainId ? i18n.t(t.all) : useBackendNetworksStore.getState().getChainsLabel()[chainId]; + + const icon = useMemo(() => { + if (!chainId) return '􀤆'; + return ; + }, [chainId]); + + const navigateToNetworkSelector = useCallback(() => { + Navigation.handleAction(Routes.NETWORK_SELECTOR, { + selected, + setSelected, + }); + }, [selected, setSelected]); + + return ; +} + +function TimeFilter() { + const timeframe = useTrendingTokensStore(state => state.timeframe); + + return ( + ({ + actionTitle: i18n.t(t.filters.time[time]), + actionKey: time, + })), + }} + side="bottom" + onPressMenuItem={timeframe => useTrendingTokensStore.getState().setTimeframe(timeframe)} + > + + + ); +} + +function SortFilter() { + const sort = useTrendingTokensStore(state => state.sort); + + const iconColor = useForegroundColor('labelQuaternary'); + + return ( + s !== 'RECOMMENDED') + .map(sort => ({ + actionTitle: i18n.t(t.filters.sort[sort]), + actionKey: sort, + })), + }} + side="bottom" + onPressMenuItem={selection => { + if (selection === sort) return useTrendingTokensStore.getState().setSort(TrendingSort.Recommended); + useTrendingTokensStore.getState().setSort(selection); + }} + > + + 􀄬 + + } + /> + + ); +} + +function TrendingTokensLoader() { + const { trending_tokens_limit } = useRemoteConfig(); + + return ( + + {Array.from({ length: trending_tokens_limit }).map((_, index) => ( + + ))} + + ); +} + +function TrendingTokenData() { + const { data: trendingTokens, isLoading } = useTrendingTokensData(); + if (isLoading) return ; + + return ( + } + data={trendingTokens} + renderItem={({ item }) => } + /> + ); +} + +const padding = 20; + +export function TrendingTokens() { + return ( + + + + + + + + + + + + + + + + + + + ); +} diff --git a/src/components/Discover/useTrackDiscoverScreenTime.ts b/src/components/Discover/useTrackDiscoverScreenTime.ts new file mode 100644 index 00000000000..64e96a50fa1 --- /dev/null +++ b/src/components/Discover/useTrackDiscoverScreenTime.ts @@ -0,0 +1,21 @@ +import { useNavigationStore } from '@/state/navigation/navigationStore'; +import { useEffect } from 'react'; +import Routes from '@/navigation/routesNames'; +import { PerformanceTracking, currentlyTrackedMetrics } from '@/performance/tracking'; +import { PerformanceMetrics } from '@/performance/tracking/types/PerformanceMetrics'; + +export const useTrackDiscoverScreenTime = () => { + const activeSwipeRoute = useNavigationStore(state => state.activeSwipeRoute); + useEffect(() => { + const isOnDiscoverScreen = activeSwipeRoute === Routes.DISCOVER_SCREEN; + const data = currentlyTrackedMetrics.get(PerformanceMetrics.timeSpentOnDiscoverScreen); + + if (!isOnDiscoverScreen && data?.startTimestamp) { + PerformanceTracking.finishMeasuring(PerformanceMetrics.timeSpentOnDiscoverScreen); + } + + if (isOnDiscoverScreen) { + PerformanceTracking.startMeasuring(PerformanceMetrics.timeSpentOnDiscoverScreen); + } + }, [activeSwipeRoute]); +}; diff --git a/src/components/NetworkSwitcher.tsx b/src/components/NetworkSwitcher.tsx new file mode 100644 index 00000000000..50c4e13d639 --- /dev/null +++ b/src/components/NetworkSwitcher.tsx @@ -0,0 +1,805 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +import { getChainColorWorklet } from '@/__swaps__/utils/swaps'; +import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; +import { ChainId } from '@/state/backendNetworks/types'; +import { AnimatedBlurView } from '@/components/AnimatedComponents/AnimatedBlurView'; +import { ButtonPressAnimation } from '@/components/animations'; +import { SPRING_CONFIGS, TIMING_CONFIGS } from '@/components/animations/animationConfigs'; +import { AnimatedChainImage, ChainImage } from '@/components/coin-icon/ChainImage'; +import { AnimatedText, Box, DesignSystemProvider, globalColors, Separator, Text, useBackgroundColor, useColorMode } from '@/design-system'; +import { useForegroundColor } from '@/design-system/color/useForegroundColor'; +import * as i18n from '@/languages'; +import { useTheme } from '@/theme'; +import deviceUtils, { DEVICE_WIDTH } from '@/utils/deviceUtils'; +import MaskedView from '@react-native-masked-view/masked-view'; +import chroma from 'chroma-js'; +import { PropsWithChildren, useEffect } from 'react'; +import React, { Pressable, StyleSheet, View } from 'react-native'; +import { RouteProp, useRoute } from '@react-navigation/native'; +import { Gesture, GestureDetector } from 'react-native-gesture-handler'; +import LinearGradient from 'react-native-linear-gradient'; +import Animated, { + FadeIn, + FadeOutUp, + LinearTransition, + runOnJS, + SharedValue, + useAnimatedReaction, + useAnimatedStyle, + useDerivedValue, + useSharedValue, + withDelay, + withSequence, + withSpring, + withTiming, +} from 'react-native-reanimated'; +import Svg, { Path } from 'react-native-svg'; +import { + customizeNetworksBannerStore, + defaultPinnedNetworks, + dismissCustomizeNetworksBanner, + networkSwitcherStore, + shouldShowCustomizeNetworksBanner, +} from '@/state/networkSwitcher/networkSwitcher'; +import { RootStackParamList } from '@/navigation/types'; +import { IS_IOS } from '@/env'; +import { safeAreaInsetValues } from '@/utils'; +import { noop } from 'lodash'; +import { TapToDismiss } from './DappBrowser/control-panel/ControlPanel'; + +const t = i18n.l.network_switcher; + +const translations = { + edit: i18n.t(t.edit), + done: i18n.t(i18n.l.done), + networks: i18n.t(t.networks), + more: i18n.t(t.more), + show_more: i18n.t(t.show_more), + show_less: i18n.t(t.show_less), + drag_to_rearrange: i18n.t(t.drag_to_rearrange), +}; + +function EditButton({ editing }: { editing: SharedValue }) { + const blue = useForegroundColor('blue'); + const borderColor = chroma(blue).alpha(0.08).hex(); + + const text = useDerivedValue(() => (editing.value ? translations.done : translations.edit)); + + return ( + { + 'worklet'; + editing.value = !editing.value; + }} + scaleTo={0.95} + style={[ + { position: 'absolute', right: 0 }, + { paddingHorizontal: 10, height: 28, justifyContent: 'center' }, + { borderColor, borderWidth: 1.33, borderRadius: 14 }, + ]} + > + + {text} + + + ); +} + +function Header({ editing }: { editing: SharedValue }) { + const separatorTertiary = useForegroundColor('separatorTertiary'); + const fill = useForegroundColor('fill'); + + const title = useDerivedValue(() => { + return editing.value ? translations.edit : translations.networks; + }); + + return ( + + + + + + + + {title} + + + + + + ); +} + +const CustomizeNetworksBanner = !shouldShowCustomizeNetworksBanner(customizeNetworksBannerStore.getState().dismissedAt) + ? () => null + : function CustomizeNetworksBanner({ editing }: { editing: SharedValue }) { + useAnimatedReaction( + () => editing.value, + (editing, prev) => { + if (!prev && editing) runOnJS(dismissCustomizeNetworksBanner)(); + } + ); + + const dismissedAt = customizeNetworksBannerStore(s => s.dismissedAt); + if (!shouldShowCustomizeNetworksBanner(dismissedAt)) return null; + + const height = 75; + const blue = '#268FFF'; + + return ( + + + + + + } + > + + + + + 􀍱 + + + + + {i18n.t(t.customize_networks_banner.title)} + + + {i18n.t(t.customize_networks_banner.tap_the)}{' '} + + {i18n.t(t.edit)} + {' '} + {i18n.t(t.customize_networks_banner.button_to_set_up)} + + + + + 􀆄 + + + + + + + + ); + }; + +const useNetworkOptionStyle = (isSelected: SharedValue, color?: string) => { + const { isDarkMode } = useColorMode(); + const label = useForegroundColor('labelTertiary'); + + const surfacePrimary = useBackgroundColor('surfacePrimary'); + const networkSwitcherBackgroundColor = isDarkMode ? '#191A1C' : surfacePrimary; + + const defaultStyle = { + backgroundColor: isDarkMode ? globalColors.white10 : globalColors.grey20, + borderColor: '#F5F8FF05', + }; + const selectedStyle = { + backgroundColor: chroma + .scale([networkSwitcherBackgroundColor, color || label])(0.16) + .hex(), + borderColor: chroma(color || label) + .alpha(0.16) + .hex(), + }; + + const scale = useSharedValue(1); + useAnimatedReaction( + () => isSelected.value, + current => { + if (current === true) { + scale.value = withSequence(withTiming(0.95, { duration: 50 }), withTiming(1, { duration: 80 })); + } + } + ); + + const animatedStyle = useAnimatedStyle(() => { + const colors = isSelected.value ? selectedStyle : defaultStyle; + return { + backgroundColor: colors.backgroundColor, + borderColor: colors.borderColor, + transform: [{ scale: scale.value }], + }; + }); + + return { + animatedStyle, + selectedStyle, + defaultStyle, + }; +}; + +function AllNetworksOption({ + selected, + setSelected, +}: { + selected: SharedValue; + setSelected: (chainId: ChainId | undefined) => void; +}) { + const blue = useForegroundColor('blue'); + + const isSelected = useDerivedValue(() => selected.value === undefined); + const { animatedStyle, selectedStyle, defaultStyle } = useNetworkOptionStyle(isSelected, blue); + + const overlappingBadge = useAnimatedStyle(() => { + return { + borderColor: isSelected.value ? selectedStyle.backgroundColor : defaultStyle.backgroundColor, + borderWidth: 1.67, + borderRadius: 16, + marginLeft: -9, + width: 16 + 1.67 * 2, // size + borders + height: 16 + 1.67 * 2, + }; + }); + + const tapGesture = Gesture.Tap().onTouchesDown(() => { + 'worklet'; + setSelected(undefined); + }); + + return ( + + + + + + + + + + {i18n.t(t.all_networks)} + + + + ); +} + +function AllNetworksSection({ + editing, + setSelected, + selected, +}: { + editing: SharedValue; + setSelected: (chainId: ChainId | undefined) => void; + selected: SharedValue; +}) { + const style = useAnimatedStyle(() => ({ + opacity: editing.value ? withTiming(0, TIMING_CONFIGS.fastFadeConfig) : withTiming(1, TIMING_CONFIGS.fastFadeConfig), + height: withTiming( + editing.value ? 0 : ITEM_HEIGHT + 14, // 14 is the gap to the separator + TIMING_CONFIGS.fastFadeConfig + ), + marginTop: editing.value ? 0 : 14, + pointerEvents: editing.value ? 'none' : 'auto', + })); + return ( + + + + + ); +} + +function NetworkOption({ chainId, selected }: { chainId: ChainId; selected: SharedValue }) { + const chainName = useBackendNetworksStore.getState().getChainsLabel()[chainId]; + const chainColor = getChainColorWorklet(chainId, true); + const isSelected = useDerivedValue(() => selected.value === chainId); + const { animatedStyle } = useNetworkOptionStyle(isSelected, chainColor); + + return ( + + + + {chainName} + + + ); +} + +const SHEET_OUTER_INSET = 8; +const SHEET_INNER_PADDING = 16; +const GAP = 12; +const ITEM_WIDTH = (DEVICE_WIDTH - SHEET_INNER_PADDING * 2 - SHEET_OUTER_INSET * 2 - GAP) / 2; +const ITEM_HEIGHT = 48; +const SEPARATOR_HEIGHT = 68; +const enum Section { + pinned, + separator, + unpinned, +} + +function Draggable({ + children, + dragging, + chainId, + networks, + sectionsOffsets, + isUnpinnedHidden, +}: PropsWithChildren<{ + chainId: ChainId; + dragging: SharedValue; + networks: SharedValue>; + sectionsOffsets: SharedValue>; + isUnpinnedHidden: SharedValue; +}>) { + const zIndex = useSharedValue(0); + useAnimatedReaction( + () => dragging.value?.chainId, + (current, prev) => { + if (current === prev) return; + if (current === chainId) zIndex.value = 2; + if (prev === chainId) zIndex.value = 1; + } + ); + + const draggableStyles = useAnimatedStyle(() => { + const section = networks.value[Section.pinned].includes(chainId) ? Section.pinned : Section.unpinned; + const itemIndex = networks.value[section].indexOf(chainId); + const slotPosition = positionFromIndex(itemIndex, sectionsOffsets.value[section]); + + const opacity = + section === Section.unpinned && isUnpinnedHidden.value + ? withTiming(0, TIMING_CONFIGS.fastFadeConfig) + : withDelay(100, withTiming(1, TIMING_CONFIGS.fadeConfig)); + + const isBeingDragged = dragging.value?.chainId === chainId; + const position = isBeingDragged ? dragging.value!.position : slotPosition; + + return { + opacity, + zIndex: zIndex.value, + transform: [ + { scale: withSpring(isBeingDragged ? 1.05 : 1, SPRING_CONFIGS.springConfig) }, + { translateX: isBeingDragged ? position.x : withSpring(position.x, SPRING_CONFIGS.springConfig) }, + { translateY: isBeingDragged ? position.y : withSpring(position.y, SPRING_CONFIGS.springConfig) }, + ], + }; + }); + + return {children}; +} + +const indexFromPosition = (x: number, y: number, offset: { y: number }) => { + 'worklet'; + const yoffsets = y > offset.y ? offset.y : 0; + const column = x > ITEM_WIDTH + GAP / 2 ? 1 : 0; + const row = Math.floor((y - yoffsets) / (ITEM_HEIGHT + GAP)); + const index = row * 2 + column; + return index < 0 ? 0 : index; // row can be negative if the dragged item is above the first row +}; + +const positionFromIndex = (index: number, offset: { y: number }) => { + 'worklet'; + const column = index % 2; + const row = Math.floor(index / 2); + const position = { x: column * (ITEM_WIDTH + GAP), y: row * (ITEM_HEIGHT + GAP) + offset.y }; + return position; +}; + +type Point = { x: number; y: number }; +type DraggingState = { + chainId: ChainId; + position: Point; +}; + +function SectionSeparator({ + sectionsOffsets, + editing, + expanded, + networks, +}: { + sectionsOffsets: SharedValue>; + editing: SharedValue; + expanded: SharedValue; + networks: SharedValue>; +}) { + const pressed = useSharedValue(false); + + const showExpandButtonAsNetworkChip = useDerivedValue(() => { + return !expanded.value && !editing.value && networks.value[Section.pinned].length % 2 !== 0; + }); + + const visible = useDerivedValue(() => { + return networks.value[Section.unpinned].length > 0 || editing.value; + }); + + const tapExpand = Gesture.Tap() + .onTouchesDown((e, s) => { + if (editing.value || !visible.value) return s.fail(); + pressed.value = true; + }) + .onEnd(() => { + pressed.value = false; + expanded.value = !expanded.value; + }); + + const text = useDerivedValue(() => { + if (editing.value) return translations.drag_to_rearrange; + if (showExpandButtonAsNetworkChip.value) return translations.more; + return expanded.value ? translations.show_less : translations.show_more; + }); + + const unpinnedNetworksLength = useDerivedValue(() => networks.value[Section.unpinned].length.toString()); + const showMoreAmountStyle = useAnimatedStyle(() => ({ + opacity: expanded.value || editing.value ? 0 : 1, + })); + const showMoreOrLessIcon = useDerivedValue(() => (expanded.value ? '􀆇' : '􀆈') as string); + const showMoreOrLessIconStyle = useAnimatedStyle(() => ({ opacity: editing.value ? 0 : 1 })); + + const { isDarkMode } = useTheme(); + + const separatorContainerStyles = useAnimatedStyle(() => { + if (showExpandButtonAsNetworkChip.value) { + const position = positionFromIndex(networks.value[Section.pinned].length, sectionsOffsets.value[Section.pinned]); + return { + backgroundColor: isDarkMode ? globalColors.white10 : globalColors.grey20, + borderColor: '#F5F8FF05', + height: ITEM_HEIGHT, + width: ITEM_WIDTH, + flexDirection: 'row', + alignItems: 'center', + borderRadius: 24, + borderWidth: 1.33, + transform: [{ translateX: position.x }, { translateY: position.y }], + }; + } + + return { + backgroundColor: 'transparent', + opacity: visible.value ? 1 : 0, + transform: [{ translateY: sectionsOffsets.value[Section.separator].y }, { scale: withTiming(pressed.value ? 0.95 : 1) }], + position: 'absolute', + width: '100%', + height: SEPARATOR_HEIGHT, + }; + }); + + return ( + + + + + {unpinnedNetworksLength} + + + + {text} + + + + {showMoreOrLessIcon} + + + + + ); +} + +function EmptyUnpinnedPlaceholder({ + sectionsOffsets, + networks, + isUnpinnedHidden, +}: { + sectionsOffsets: SharedValue>; + networks: SharedValue>; + isUnpinnedHidden: SharedValue; +}) { + const styles = useAnimatedStyle(() => { + const isVisible = networks.value[Section.unpinned].length === 0 && !isUnpinnedHidden.value; + return { + opacity: isVisible ? withTiming(1, { duration: 800 }) : 0, + transform: [{ translateY: sectionsOffsets.value[Section.unpinned].y }], + }; + }); + const { isDarkMode } = useTheme(); + return ( + + + {i18n.t(t.drag_here_to_unpin)} + + + ); +} + +function NetworksGrid({ + editing, + setSelected, + selected, +}: { + editing: SharedValue; + setSelected: (chainId: ChainId | undefined) => void; + selected: SharedValue; +}) { + const initialPinned = networkSwitcherStore.getState().pinnedNetworks; + const sortedSupportedChainIds = useBackendNetworksStore.getState().getSortedSupportedChainIds(); + const initialUnpinned = sortedSupportedChainIds.filter(chainId => !initialPinned.includes(chainId)); + const networks = useSharedValue({ [Section.pinned]: initialPinned, [Section.unpinned]: initialUnpinned }); + + useEffect(() => { + // persists pinned networks when closing the sheet + // should be the only time this component is unmounted + return () => { + if (networks.value[Section.pinned].length > 0) { + networkSwitcherStore.setState({ pinnedNetworks: networks.value[Section.pinned] }); + } else { + networkSwitcherStore.setState({ pinnedNetworks: defaultPinnedNetworks }); + } + }; + }, [networks]); + + const expanded = useSharedValue(false); + const isUnpinnedHidden = useDerivedValue(() => !expanded.value && !editing.value); + + const dragging = useSharedValue(null); + + const sectionsOffsets = useDerivedValue(() => { + const pinnedHeight = Math.ceil(networks.value[Section.pinned].length / 2) * (ITEM_HEIGHT + GAP) - GAP; + return { + [Section.pinned]: { y: 0 }, + [Section.separator]: { y: pinnedHeight }, + [Section.unpinned]: { y: pinnedHeight + SEPARATOR_HEIGHT }, + }; + }); + const containerHeight = useDerivedValue(() => { + const length = networks.value[Section.unpinned].length; + const paddingBottom = 32; + const unpinnedHeight = isUnpinnedHidden.value + ? length === 0 + ? -SEPARATOR_HEIGHT + paddingBottom + : 0 + : length === 0 + ? ITEM_HEIGHT + paddingBottom + : Math.ceil((length + 1) / 2) * (ITEM_HEIGHT + GAP) - GAP + paddingBottom; + const height = sectionsOffsets.value[Section.unpinned].y + unpinnedHeight; + return height; + }); + const containerStyle = useAnimatedStyle(() => ({ + height: withDelay(expanded.value ? 0 : 25, withTiming(containerHeight.value, TIMING_CONFIGS.slowerFadeConfig)), + })); + + const dragNetwork = Gesture.Pan() + .maxPointers(1) + .onTouchesDown((e, s) => { + if (!editing.value) { + s.fail(); + return; + } + const touch = e.allTouches[0]; + const section = touch.y > sectionsOffsets.value[Section.unpinned].y ? Section.unpinned : Section.pinned; + const sectionOffset = sectionsOffsets.value[section]; + const index = indexFromPosition(touch.x, touch.y, sectionOffset); + const sectionNetworks = networks.value[section]; + const chainId = sectionNetworks[index]; + + if (!chainId || (section === Section.pinned && sectionNetworks.length === 1)) { + s.fail(); + return; + } + + const position = positionFromIndex(index, sectionOffset); + dragging.value = { chainId, position }; + }) + .onChange(e => { + if (!dragging.value) return; + const chainId = dragging.value.chainId; + if (!chainId) return; + + const section = e.y > sectionsOffsets.value[Section.unpinned].y - SEPARATOR_HEIGHT / 2 ? Section.unpinned : Section.pinned; + const sectionArray = networks.value[section]; + + const currentIndex = sectionArray.indexOf(chainId); + const newIndex = Math.min(indexFromPosition(e.x, e.y, sectionsOffsets.value[section]), sectionArray.length - 1); + + networks.modify(networks => { + if (currentIndex === -1) { + // Pin/Unpin + if (section === Section.unpinned) networks[Section.pinned].splice(currentIndex, 1); + else networks[Section.pinned].push(chainId); + networks[Section.unpinned] = sortedSupportedChainIds.filter(chainId => !networks[Section.pinned].includes(chainId)); + } else if (section === Section.pinned && newIndex !== currentIndex) { + // Reorder + networks[Section.pinned].splice(currentIndex, 1); + networks[Section.pinned].splice(newIndex, 0, chainId); + } + return networks; + }); + dragging.modify(dragging => { + if (!dragging) return dragging; + dragging.position.x += e.changeX; + dragging.position.y += e.changeY; + return dragging; + }); + }) + .onFinalize(() => { + dragging.value = null; + }); + + const tapNetwork = Gesture.Tap() + .onTouchesDown((e, s) => { + if (editing.value) return s.fail(); + }) + .onEnd(e => { + const section = e.y > sectionsOffsets.value[Section.unpinned].y ? Section.unpinned : Section.pinned; + const index = indexFromPosition(e.x, e.y, sectionsOffsets.value[section]); + const chainId = networks.value[section][index]; + if (!chainId) return; + + setSelected(chainId); + }); + + const gridGesture = Gesture.Exclusive(dragNetwork, tapNetwork); + + return ( + + + {initialPinned.map(chainId => ( + + + + ))} + + + + + + {initialUnpinned.map(chainId => ( + + + + ))} + + + ); +} + +function Sheet({ children, editing, onClose }: PropsWithChildren<{ editing: SharedValue; onClose: VoidFunction }>) { + const { isDarkMode } = useTheme(); + const surfacePrimary = useBackgroundColor('surfacePrimary'); + const backgroundColor = isDarkMode ? '#191A1C' : surfacePrimary; + const separatorSecondary = useForegroundColor('separatorSecondary'); + + // make sure the onClose function is called when the sheet unmounts + useEffect(() => { + return () => onClose?.(); + }, [onClose]); + + return ( + <> + +

      + {children} + + + + ); +} + +export function NetworkSelector() { + const { + params: { onClose = noop, selected, setSelected }, + } = useRoute>(); + + const editing = useSharedValue(false); + + return ( + + + + + + ); +} + +const sx = StyleSheet.create({ + sheet: { + flex: 1, + width: deviceUtils.dimensions.width - 16, + bottom: Math.max(safeAreaInsetValues.bottom + 5, IS_IOS ? 8 : 30), + pointerEvents: 'box-none', + position: 'absolute', + zIndex: 30000, + left: 8, + right: 8, + paddingHorizontal: 16, + borderRadius: 42, + borderWidth: 1.33, + }, +}); diff --git a/src/components/coin-icon/ChainImage.tsx b/src/components/coin-icon/ChainImage.tsx index 5b325e12fe4..671296c8445 100644 --- a/src/components/coin-icon/ChainImage.tsx +++ b/src/components/coin-icon/ChainImage.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import React, { useMemo, forwardRef } from 'react'; import { ChainId } from '@/state/backendNetworks/types'; import ApechainBadge from '@/assets/badges/apechain.png'; @@ -19,10 +19,21 @@ import SankoBadge from '@/assets/badges/sanko.png'; import ScrollBadge from '@/assets/badges/scroll.png'; import ZksyncBadge from '@/assets/badges/zksync.png'; import ZoraBadge from '@/assets/badges/zora.png'; +import FastImage, { FastImageProps, Source } from 'react-native-fast-image'; +import Animated from 'react-native-reanimated'; -import FastImage, { Source } from 'react-native-fast-image'; - -export function ChainImage({ chainId, size = 20 }: { chainId: ChainId | null | undefined; size?: number }) { +export const ChainImage = forwardRef(function ChainImage( + { + chainId, + size = 20, + style, + }: { + chainId: ChainId | null | undefined; + size?: number; + style?: FastImageProps['style']; + }, + ref +) { const source = useMemo(() => { switch (chainId) { case ChainId.apechain: @@ -69,6 +80,14 @@ export function ChainImage({ chainId, size = 20 }: { chainId: ChainId | null | u if (!chainId) return null; return ( - + ); -} +}); + +export const AnimatedChainImage = Animated.createAnimatedComponent(ChainImage); diff --git a/src/components/sheet/sheet-action-buttons/SwapActionButton.tsx b/src/components/sheet/sheet-action-buttons/SwapActionButton.tsx index 9a7ea341748..81f82de844b 100644 --- a/src/components/sheet/sheet-action-buttons/SwapActionButton.tsx +++ b/src/components/sheet/sheet-action-buttons/SwapActionButton.tsx @@ -31,7 +31,7 @@ function SwapActionButton({ asset, color: givenColor, inputType, label, weight = const goToSwap = useCallback(async () => { const chainsIdByName = useBackendNetworksStore.getState().getChainsIdByName(); const chainsName = useBackendNetworksStore.getState().getChainsName(); - const chainId = chainsIdByName[asset.network]; + const chainId = asset.chainId || chainsIdByName[asset.network]; const uniqueId = `${asset.address}_${chainId}`; const userAsset = userAssetsStore.getState().userAssets.get(uniqueId); diff --git a/src/config/experimental.ts b/src/config/experimental.ts index b68e23260ff..cef7e04d7d7 100644 --- a/src/config/experimental.ts +++ b/src/config/experimental.ts @@ -29,6 +29,7 @@ export const DEGEN_MODE = 'Degen Mode'; export const FEATURED_RESULTS = 'Featured Results'; export const CLAIMABLES = 'Claimables'; export const NFTS_ENABLED = 'Nfts Enabled'; +export const TRENDING_TOKENS = 'Trending Tokens'; /** * A developer setting that pushes log lines to an array in-memory so that @@ -66,6 +67,7 @@ export const defaultConfig: Record = { [FEATURED_RESULTS]: { settings: true, value: false }, [CLAIMABLES]: { settings: true, value: false }, [NFTS_ENABLED]: { settings: true, value: !!IS_TEST }, + [TRENDING_TOKENS]: { settings: true, value: false }, }; export const defaultConfigValues: Record = Object.fromEntries( diff --git a/src/graphql/queries/arc.graphql b/src/graphql/queries/arc.graphql index 68e797864e5..17dccca539c 100644 --- a/src/graphql/queries/arc.graphql +++ b/src/graphql/queries/arc.graphql @@ -522,6 +522,7 @@ query trendingTokens( $sortBy: TrendingSort $sortDirection: SortDirection $walletAddress: String + $limit: Int ) { trendingTokens( chainId: $chainId @@ -531,6 +532,7 @@ query trendingTokens( sortBy: $sortBy sortDirection: $sortDirection walletAddress: $walletAddress + limit: $limit ) { data { colors { diff --git a/src/helpers/strings.ts b/src/helpers/strings.ts index 4e7fd76ab91..986c23a665a 100644 --- a/src/helpers/strings.ts +++ b/src/helpers/strings.ts @@ -1,4 +1,8 @@ +import store from '@/redux/store'; import { memoFn } from '../utils/memoFn'; +import { supportedNativeCurrencies } from '@/references'; +import { NativeCurrencyKey } from '@/entities'; +import { convertAmountToNativeDisplayWorklet } from './utilities'; /** * @desc subtracts two numbers * @param {String} str @@ -10,3 +14,127 @@ export const containsEmoji = memoFn(str => { // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'. return !!str.match(ranges.join('|')); }); + +/* + * Return the given number as a formatted string. The default format is a plain + * integer with thousands-separator commas. The optional parameters facilitate + * other formats: + * - decimals = the number of decimals places to round to and show + * - valueIfNaN = the value to show for non-numeric input + * - style + * - '%': multiplies by 100 and appends a percent symbol + * - '$': prepends a dollar sign + * - useOrderSuffix = whether to use suffixes like k for 1,000, etc. + * - orderSuffixes = the list of suffixes to use + * - minOrder and maxOrder allow the order to be constrained. Examples: + * - minOrder = 1 means the k suffix should be used for numbers < 1,000 + * - maxOrder = 1 means the k suffix should be used for numbers >= 1,000,000 + */ +export function formatNumber( + number: string | number, + { + decimals = 0, + valueIfNaN = '', + style = '', + useOrderSuffix = false, + orderSuffixes = ['', 'K', 'M', 'B', 'T'], + minOrder = 0, + maxOrder = Infinity, + } = {} +) { + let x = parseFloat(`${number}`); + + if (isNaN(x)) return valueIfNaN; + + if (style === '%') x *= 100.0; + + let order; + if (!isFinite(x) || !useOrderSuffix) order = 0; + else if (minOrder === maxOrder) order = minOrder; + else { + const unboundedOrder = Math.floor(Math.log10(Math.abs(x)) / 3); + order = Math.max(0, minOrder, Math.min(unboundedOrder, maxOrder, orderSuffixes.length - 1)); + } + + const orderSuffix = orderSuffixes[order]; + if (order !== 0) x /= Math.pow(10, order * 3); + + return ( + (style === '$' ? '$' : '') + + x.toLocaleString('en-US', { + style: 'decimal', + minimumFractionDigits: decimals, + maximumFractionDigits: decimals, + }) + + orderSuffix + + (style === '%' ? '%' : '') + ); +} + +type CurrencyFormatterOptions = { + decimals?: number; + valueIfNaN?: string; + currency?: NativeCurrencyKey; +}; + +const toSubscript = (str: string | number) => str.toString().replace(/[0-9]/g, num => String.fromCharCode(0x2080 + +num)); + +/* + converts 6.9e-7 to 0.00000069 +*/ +const toDecimalString = (num: number): string => { + const [coefficient, exponent] = num.toExponential(20).split('e'); + const exp = parseInt(exponent); + const digits = coefficient.replace('.', '').replace(/0+$/, ''); + + if (exp >= 0) { + const position = exp + 1; + if (position >= digits.length) return digits + '0'.repeat(position - digits.length); + return digits.slice(0, position) + (digits.slice(position) && '.' + digits.slice(position)); + } + return '0.' + '0'.repeat(Math.abs(exp) - 1) + digits; +}; + +/* + formats a numeric string like 0000069 to 0₅69 +*/ +function formatFraction(fraction: string) { + const leadingZeros = fraction.match(/^[0]+/)?.[0].length || 0; + if (+fraction === 0) return '00'; + + const significantDigits = fraction.slice(leadingZeros, leadingZeros + 2); + if (+significantDigits === 0) return '00'; + + if (leadingZeros >= 4) return `0${toSubscript(leadingZeros)}${significantDigits}`; + return `${'0'.repeat(leadingZeros)}${significantDigits}`; +} + +export function formatCurrency( + value: string | number, + { valueIfNaN = '', currency = store.getState().settings.nativeCurrency }: CurrencyFormatterOptions = {} +): string { + const numericString = typeof value === 'number' ? toDecimalString(value) : String(value); + if (isNaN(+numericString)) return valueIfNaN; + + const currencySymbol = supportedNativeCurrencies[currency].symbol; + const [whole, fraction = ''] = numericString.split('.'); + + if (fraction === '') { + // if the fraction is empty and the numeric string is less than 6 characters, we can just run it through our native currency display worklet + if (numericString.length <= 6) { + return convertAmountToNativeDisplayWorklet(numericString, currency, false, true); + } + + const decimals = supportedNativeCurrencies[currency].decimals; + // otherwise for > 6 figs native value we need to format in compact notation + const formattedWhole = formatNumber(numericString, { decimals, useOrderSuffix: true }); + return `${currencySymbol}${formattedWhole}`; + } + + const formattedWhole = formatNumber(whole, { decimals: 0, useOrderSuffix: true }); + const formattedFraction = formatFraction(fraction); + // if it ends with a non-numeric character, it's in compact notation like '1.2K' + if (isNaN(+formattedWhole[formattedWhole.length - 1])) return `${currencySymbol}${formattedWhole}`; + + return `${currencySymbol}${formattedWhole}.${formattedFraction}`; +} diff --git a/src/hooks/reanimated/useSyncSharedValue.ts b/src/hooks/reanimated/useSyncSharedValue.ts index f8c19c71a0c..c48f83a3643 100644 --- a/src/hooks/reanimated/useSyncSharedValue.ts +++ b/src/hooks/reanimated/useSyncSharedValue.ts @@ -9,14 +9,14 @@ interface BaseSyncParams { /** A boolean or shared value boolean that controls whether synchronization is paused. */ pauseSync?: DerivedValue | SharedValue | boolean; /** The JS state to be synchronized. */ - state: T | undefined; + state: T; } interface SharedToStateParams extends BaseSyncParams { /** The setter function for the JS state (only applicable when `syncDirection` is `'sharedValueToState'`). */ setState: (value: T) => void; /** The shared value to be synchronized. */ - sharedValue: DerivedValue | DerivedValue | SharedValue | SharedValue; + sharedValue: DerivedValue | SharedValue; /** The direction of synchronization. */ syncDirection: 'sharedValueToState'; } @@ -24,7 +24,7 @@ interface SharedToStateParams extends BaseSyncParams { interface StateToSharedParams extends BaseSyncParams { setState?: never; /** The shared value to be synchronized. */ - sharedValue: SharedValue | SharedValue; + sharedValue: SharedValue; /** The direction of synchronization. */ syncDirection: 'stateToSharedValue'; } @@ -73,7 +73,7 @@ export function useSyncSharedValue({ compareDepth = 'deep', pauseSync, setSta }, shouldSync => { if (shouldSync) { - if (syncDirection === 'sharedValueToState' && sharedValue.value !== undefined) { + if (syncDirection === 'sharedValueToState') { runOnJS(setState)(sharedValue.value); } else if (syncDirection === 'stateToSharedValue') { sharedValue.value = state; diff --git a/src/hooks/useFarcasterAccountForWallets.ts b/src/hooks/useFarcasterAccountForWallets.ts index 4c5702051b7..80873b867e3 100644 --- a/src/hooks/useFarcasterAccountForWallets.ts +++ b/src/hooks/useFarcasterAccountForWallets.ts @@ -12,12 +12,12 @@ import { AllRainbowWallets } from '@/model/wallet'; type SummaryData = ReturnType['data']; -const getWalletForAddress = (wallets: AllRainbowWallets, address: string) => { +const getWalletForAddress = (wallets: AllRainbowWallets | null, address: string) => { return Object.values(wallets || {}).find(wallet => wallet.addresses.some(addr => isLowerCaseMatch(addr.address, address))); }; -export const useFarcasterWalletAddress = () => { - const [farcasterWalletAddress, setFarcasterWalletAddress] = useState(null); +export const useFarcasterAccountForWallets = () => { + const [farcasterWalletAddress, setFarcasterWalletAddress] = useState
      (); const { accountAddress } = useAccountSettings(); const { wallets } = useWallets(); @@ -33,31 +33,32 @@ export const useFarcasterWalletAddress = () => { currency: store.getState().settings.nativeCurrency, }) ); - if (isEmpty(summaryData?.data.addresses) || isEmpty(wallets)) { - setFarcasterWalletAddress(null); + const addresses = summaryData?.data.addresses; + + if (!addresses || isEmpty(addresses) || isEmpty(wallets)) { + setFarcasterWalletAddress(undefined); return; } - const selectedAddressFid = summaryData?.data.addresses[accountAddress as Address]?.meta?.farcaster?.fid; - - if (selectedAddressFid && getWalletForAddress(wallets || {}, accountAddress)?.type !== walletTypes.readOnly) { + const selectedAddressFid = addresses[accountAddress]?.meta?.farcaster?.fid; + if (selectedAddressFid && getWalletForAddress(wallets, accountAddress)?.type !== walletTypes.readOnly) { setFarcasterWalletAddress(accountAddress); return; } - const farcasterWalletAddress = Object.keys(summaryData?.data.addresses || {}).find(addr => { + const farcasterWalletAddress = Object.keys(addresses).find(addr => { const address = addr as Address; const faracsterId = summaryData?.data.addresses[address]?.meta?.farcaster?.fid; - if (faracsterId && getWalletForAddress(wallets || {}, address)?.type !== walletTypes.readOnly) { - return faracsterId; + if (faracsterId && getWalletForAddress(wallets, address)?.type !== walletTypes.readOnly) { + return address; } - }); + }) as Address | undefined; if (farcasterWalletAddress) { setFarcasterWalletAddress(farcasterWalletAddress); return; } - setFarcasterWalletAddress(null); + setFarcasterWalletAddress(undefined); }, [wallets, allAddresses, accountAddress]); return farcasterWalletAddress; diff --git a/src/languages/en_US.json b/src/languages/en_US.json index 725d9b674d1..4bfe7a65a0d 100644 --- a/src/languages/en_US.json +++ b/src/languages/en_US.json @@ -3018,6 +3018,54 @@ "new_tab": "New Tab" } }, + "trending_tokens": { + "all": "All", + "no_results": { + "title": "No results", + "body": "Try browsing a larger timeframe or a different network or category." + }, + "and": "and", + "and_others": { + "one": "and %{count} other", + "other": "and %{count} others" + }, + "filters": { + "categories": { + "TRENDING": "Trending", + "NEW": "New", + "FARCASTER": "Farcaster" + }, + "sort": { + "RECOMMENDED": "Sort", + "VOLUME": "Volume", + "MARKET_CAP": "Market Cap", + "TOP_GAINERS": "Top Gainers", + "TOP_LOSERS": "Top Losers" + }, + "time": { + "H12": "12h", + "H24": "24h", + "D7": "1 Week", + "D3": "1 Month" + } + } + }, + "network_switcher": { + "customize_networks_banner": { + "title": "Customize Networks", + "tap_the": "Tap the", + "button_to_set_up": "button below to set up" + }, + "drag_here_to_unpin": "Drag here to unpin networks", + "edit": "Edit", + "networks": "Networks", + "drag_to_rearrange": "Drag to rearrange", + "show_less": "Show less", + "more": "More", + "show_more": "More Networks", + "all_networks": "All Networks" + }, + "done": "Done", "copy": "Copy", "paste": "Paste" } diff --git a/src/model/remoteConfig.ts b/src/model/remoteConfig.ts index 40382af707b..3341a3a0000 100644 --- a/src/model/remoteConfig.ts +++ b/src/model/remoteConfig.ts @@ -57,6 +57,8 @@ export interface RainbowConfig extends Record featured_results: boolean; claimables: boolean; nfts_enabled: boolean; + + trending_tokens_limit: number; } export const DEFAULT_CONFIG: RainbowConfig = { @@ -147,6 +149,8 @@ export const DEFAULT_CONFIG: RainbowConfig = { featured_results: true, claimables: true, nfts_enabled: true, + + trending_tokens_limit: 10, }; export async function fetchRemoteConfig(): Promise { @@ -205,6 +209,8 @@ export async function fetchRemoteConfig(): Promise { key === 'nfts_enabled' ) { config[key] = entry.asBoolean(); + } else if (key === 'trending_tokens_limit') { + config[key] = entry.asNumber(); } else { config[key] = entry.asString(); } diff --git a/src/navigation/Routes.android.tsx b/src/navigation/Routes.android.tsx index d246a004f6a..05b09059948 100644 --- a/src/navigation/Routes.android.tsx +++ b/src/navigation/Routes.android.tsx @@ -90,6 +90,7 @@ import { ControlPanel } from '@/components/DappBrowser/control-panel/ControlPane import { ClaimRewardsPanel } from '@/screens/points/claim-flow/ClaimRewardsPanel'; import { ClaimClaimablePanel } from '@/screens/claimables/ClaimPanel'; import { RootStackParamList } from './types'; +import { NetworkSelector } from '@/components/NetworkSwitcher'; const Stack = createStackNavigator(); const OuterStack = createStackNavigator(); @@ -242,6 +243,7 @@ function BSNavigator() { + diff --git a/src/navigation/Routes.ios.tsx b/src/navigation/Routes.ios.tsx index e65e309538a..c07ef6294b5 100644 --- a/src/navigation/Routes.ios.tsx +++ b/src/navigation/Routes.ios.tsx @@ -70,6 +70,7 @@ import { swapConfig, checkIdentifierSheetConfig, recieveModalSheetConfig, + networkSelectorConfig, } from './config'; import { addCashSheet, emojiPreset, emojiPresetWallet, overlayExpandedPreset, sheetPreset } from './effects'; import { InitialRouteContext } from './initialRoute'; @@ -102,6 +103,7 @@ import { ControlPanel } from '@/components/DappBrowser/control-panel/ControlPane import { ClaimRewardsPanel } from '@/screens/points/claim-flow/ClaimRewardsPanel'; import { ClaimClaimablePanel } from '@/screens/claimables/ClaimPanel'; import { RootStackParamList } from './types'; +import { NetworkSelector } from '@/components/NetworkSwitcher'; const Stack = createStackNavigator(); const NativeStack = createNativeStackNavigator(); @@ -273,6 +275,7 @@ function NativeStackNavigator() { + diff --git a/src/navigation/SwipeNavigator.tsx b/src/navigation/SwipeNavigator.tsx index 33f84504828..781ca8932d4 100644 --- a/src/navigation/SwipeNavigator.tsx +++ b/src/navigation/SwipeNavigator.tsx @@ -15,7 +15,7 @@ import RecyclerListViewScrollToTopProvider, { useRecyclerListViewScrollToTopContext, } from '@/navigation/RecyclerListViewScrollToTopContext'; import DappBrowserScreen from '@/screens/dapp-browser/DappBrowserScreen'; -import { discoverOpenSearchFnRef } from '@/screens/discover/components/DiscoverSearchContainer'; +import { discoverOpenSearchFnRef } from '@/components/Discover/DiscoverSearchContainer'; import { PointsScreen } from '@/screens/points/PointsScreen'; import WalletScreen from '@/screens/WalletScreen'; import { useTheme } from '@/theme'; @@ -39,7 +39,7 @@ import { TIMING_CONFIGS } from '@/components/animations/animationConfigs'; import { useBrowserStore } from '@/state/browser/browserStore'; import { opacityWorklet } from '@/__swaps__/utils/swaps'; import ProfileScreen from '../screens/ProfileScreen'; -import DiscoverScreen, { discoverScrollToTopFnRef } from '../screens/discover/DiscoverScreen'; +import DiscoverScreen, { discoverScrollToTopFnRef } from '@/screens/DiscoverScreen'; import { ScrollPositionContext } from './ScrollPositionContext'; import SectionListScrollToTopProvider, { useSectionListScrollToTopContext } from './SectionListScrollToTopContext'; import Routes from './routesNames'; diff --git a/src/navigation/config.tsx b/src/navigation/config.tsx index 5428d27e37b..38b7a0032fe 100644 --- a/src/navigation/config.tsx +++ b/src/navigation/config.tsx @@ -248,6 +248,20 @@ export const consoleSheetConfig = { }), }; +export const networkSelectorConfig = { + options: ({ route: { params = {} } }) => ({ + ...buildCoolModalConfig({ + ...params, + backgroundColor: '#000000B2', + backgroundOpacity: 0.7, + cornerRadius: 0, + springDamping: 1, + topOffset: 0, + transitionDuration: 0.3, + }), + }), +}; + export const panelConfig = { options: ({ route: { params = {} } }) => ({ ...buildCoolModalConfig({ diff --git a/src/navigation/routesNames.ts b/src/navigation/routesNames.ts index 96cc67fb146..ff4372906e3 100644 --- a/src/navigation/routesNames.ts +++ b/src/navigation/routesNames.ts @@ -100,6 +100,7 @@ const Routes = { SETTINGS_SECTION_NOTIFICATIONS: 'NotificationsSection', SETTINGS_SECTION_PRIVACY: 'PrivacySection', DAPP_BROWSER_CONTROL_PANEL: 'DappBrowserControlPanel', + NETWORK_SELECTOR: 'NetworkSelector', CLAIM_REWARDS_PANEL: 'ClaimRewardsPanel', } as const; diff --git a/src/navigation/types.ts b/src/navigation/types.ts index cc2c8842ab5..c1877d015da 100644 --- a/src/navigation/types.ts +++ b/src/navigation/types.ts @@ -10,6 +10,9 @@ import { Claimable } from '@/resources/addys/claimables/types'; import { WalletconnectApprovalSheetRouteParams, WalletconnectResultType } from '@/walletConnect/types'; import { WalletConnectApprovalSheetType } from '@/helpers/walletConnectApprovalSheetTypes'; import { RainbowPosition } from '@/resources/defi/types'; +import { Address } from 'viem'; +import { SharedValue } from 'react-native-reanimated'; +import { ChainId } from '@/state/backendNetworks/types'; export type PartialNavigatorConfigOptions = Pick['Screen']>[0]>, 'options'>; @@ -31,7 +34,7 @@ export type RootStackParamList = { [Routes.CHANGE_WALLET_SHEET]: { watchOnly: boolean; currentAccountAddress: string; - onChangeWallet: (address: string) => void; + onChangeWallet: (address: Address) => void; }; [Routes.SPEED_UP_AND_CANCEL_BOTTOM_SHEET]: { accentColor?: string; @@ -104,4 +107,9 @@ export type RootStackParamList = { [Routes.POSITION_SHEET]: { position: RainbowPosition; }; + [Routes.NETWORK_SELECTOR]: { + onClose?: VoidFunction; + selected: SharedValue; + setSelected: (chainId: ChainId | undefined) => void; + }; }; diff --git a/src/performance/tracking/index.ts b/src/performance/tracking/index.ts index 425faba867e..81b8fb5e73a 100644 --- a/src/performance/tracking/index.ts +++ b/src/performance/tracking/index.ts @@ -18,7 +18,7 @@ function logDurationIfAppropriate(metric: PerformanceMetricsType, durationInMs: } } -const currentlyTrackedMetrics = new Map(); +export const currentlyTrackedMetrics = new Map(); interface AdditionalParams extends Record { tag?: PerformanceTagsType; diff --git a/src/performance/tracking/types/PerformanceMetrics.ts b/src/performance/tracking/types/PerformanceMetrics.ts index 3baf050eb54..3d272e1e71b 100644 --- a/src/performance/tracking/types/PerformanceMetrics.ts +++ b/src/performance/tracking/types/PerformanceMetrics.ts @@ -11,6 +11,7 @@ export const PerformanceMetrics = { initializeWalletconnect: 'Performance WalletConnect Initialize Time', quoteFetching: 'Performance Quote Fetching Time', + timeSpentOnDiscoverScreen: 'Time spent on the Discover screen', } as const; export type PerformanceMetricsType = (typeof PerformanceMetrics)[keyof typeof PerformanceMetrics]; diff --git a/src/redux/settings.ts b/src/redux/settings.ts index ce19a5f6131..4535437ea7c 100644 --- a/src/redux/settings.ts +++ b/src/redux/settings.ts @@ -24,6 +24,7 @@ import { getProvider } from '@/handlers/web3'; import { AppState } from '@/redux/store'; import { logger, RainbowError } from '@/logger'; import { Network, ChainId } from '@/state/backendNetworks/types'; +import { Address } from 'viem'; // -- Constants ------------------------------------------------------------- // const SETTINGS_UPDATE_SETTINGS_ADDRESS = 'settings/SETTINGS_UPDATE_SETTINGS_ADDRESS'; @@ -41,7 +42,7 @@ const SETTINGS_UPDATE_ACCOUNT_SETTINGS_SUCCESS = 'settings/SETTINGS_UPDATE_ACCOU */ interface SettingsState { appIcon: string; - accountAddress: string; + accountAddress: Address; chainId: number; language: Language; nativeCurrency: NativeCurrencyKey; @@ -205,7 +206,7 @@ export const settingsChangeAppIcon = (appIcon: string) => (dispatch: Dispatch async (dispatch: Dispatch) => { dispatch({ - payload: accountAddress, + payload: accountAddress as Address, type: SETTINGS_UPDATE_SETTINGS_ADDRESS, }); }; @@ -254,7 +255,7 @@ export const settingsChangeNativeCurrency = // -- Reducer --------------------------------------------------------------- // export const INITIAL_STATE: SettingsState = { - accountAddress: '', + accountAddress: '' as Address, appIcon: 'og', chainId: 1, language: Language.EN_US, diff --git a/src/resources/trendingTokens/trendingTokens.ts b/src/resources/trendingTokens/trendingTokens.ts index 169a24ab6f4..4bbb62e9308 100644 --- a/src/resources/trendingTokens/trendingTokens.ts +++ b/src/resources/trendingTokens/trendingTokens.ts @@ -2,23 +2,117 @@ import { QueryConfigWithSelect, createQueryKey } from '@/react-query'; import { useQuery } from '@tanstack/react-query'; import { arcClient } from '@/graphql'; -export type TrendingTokensVariables = Parameters['0']; -export type TrendingTokens = Awaited>; +import { TrendingCategory, TrendingSort, TrendingTimeframe } from '@/state/trendingTokens/trendingTokens'; +import { Address } from 'viem'; +import { NativeCurrencyKey } from '@/entities'; +import store from '@/redux/store'; +import { SortDirection } from '@/graphql/__generated__/arc'; +import { UniqueId } from '@/__swaps__/types/assets'; +import { ChainId } from '@/state/backendNetworks/types'; + +export type FarcasterUser = { + username: string; + pfp_url: string; +}; +export type TrendingToken = { + uniqueId: UniqueId; + chainId: ChainId; + address: string; + name: string; + symbol: string; + decimals: number; + price: number; + priceChange: { + hr: number; + day: number; + }; + marketCap: number; + volume: number; + highlightedFriends: FarcasterUser[]; + colors: { + primary: string; + }; + icon_url: string; +}; // /////////////////////////////////////////////// // Query Key -export const trendingTokensQueryKey = (props: TrendingTokensVariables) => createQueryKey('trending-tokens', props, { persisterVersion: 0 }); +export const trendingTokensQueryKey = (props: FetchTrendingTokensArgs) => createQueryKey('trending-tokens', props, { persisterVersion: 2 }); export type TrendingTokensQueryKey = ReturnType; +type FetchTrendingTokensArgs = { + chainId?: ChainId; + category: TrendingCategory; + sortBy: TrendingSort; + sortDirection: SortDirection | undefined; + timeframe: TrendingTimeframe; + walletAddress: Address | undefined; + limit?: number; + currency?: NativeCurrencyKey; +}; + +async function fetchTrendingTokens({ + queryKey: [ + { currency = store.getState().settings.nativeCurrency, category, sortBy, sortDirection, timeframe, walletAddress, chainId, limit }, + ], +}: { + queryKey: TrendingTokensQueryKey; +}) { + const response = await arcClient.trendingTokens({ + category, + sortBy, + sortDirection, + timeframe, + walletAddress, + limit, + chainId, + currency: currency.toLowerCase(), + }); + const trendingTokens: TrendingToken[] = []; + + for (const token of response.trendingTokens.data) { + const { uniqueId, address, name, symbol, chainId, decimals, trending, market, icon_url, colors } = token; + const { bought_stats } = trending.swap_data; + const highlightedFriends = (bought_stats.farcaster_users || []).reduce((friends, friend) => { + const { username, pfp_url } = friend; + if (username && pfp_url) friends.push({ username, pfp_url }); + return friends; + }, [] as FarcasterUser[]); + + trendingTokens.push({ + uniqueId, + chainId: chainId as ChainId, + address, + name, + symbol, + decimals, + price: market.price?.value || 0, + priceChange: { + hr: trending.pool_data.h1_price_change || 0, + day: trending.pool_data.h24_price_change || 0, + }, + marketCap: market.market_cap?.value || 0, + volume: market.volume_24h || 0, + highlightedFriends, + icon_url, + colors: { + primary: colors.primary, + }, + }); + } + + return trendingTokens; +} + // /////////////////////////////////////////////// // Query Hook -export function useTrendingTokens( - props: TrendingTokensVariables, - config: QueryConfigWithSelect = {} +export function useTrendingTokens( + args: FetchTrendingTokensArgs, + config: QueryConfigWithSelect = {} ) { - return useQuery(trendingTokensQueryKey(props), () => arcClient.trendingTokens(props), { + return useQuery(trendingTokensQueryKey(args), fetchTrendingTokens, { ...config, staleTime: 60_000, // 1 minute cacheTime: 60_000 * 30, // 30 minutes diff --git a/src/screens/discover/DiscoverScreen.tsx b/src/screens/DiscoverScreen.tsx similarity index 95% rename from src/screens/discover/DiscoverScreen.tsx rename to src/screens/DiscoverScreen.tsx index 601066d6260..2a0d43df6a2 100644 --- a/src/screens/discover/DiscoverScreen.tsx +++ b/src/screens/DiscoverScreen.tsx @@ -4,7 +4,7 @@ import { useIsFocused } from '@react-navigation/native'; import { Box } from '@/design-system'; import { Page } from '@/components/layout'; import { Navbar } from '@/components/navbar/Navbar'; -import DiscoverScreenContent from './components/DiscoverScreenContent'; +import DiscoverScreenContent from '@/components/Discover/DiscoverScreenContent'; import { ButtonPressAnimation } from '@/components/animations'; import { ContactAvatar } from '@/components/contacts'; import ImageAvatar from '@/components/contacts/ImageAvatar'; @@ -14,7 +14,7 @@ import { useNavigation } from '@/navigation'; import { safeAreaInsetValues } from '@/utils'; import * as i18n from '@/languages'; import Animated, { useAnimatedScrollHandler, useSharedValue } from 'react-native-reanimated'; -import DiscoverScreenProvider, { useDiscoverScreenContext } from './DiscoverScreenContext'; +import DiscoverScreenProvider, { useDiscoverScreenContext } from '@/components/Discover/DiscoverScreenContext'; export let discoverScrollToTopFnRef: () => number | null = () => null; @@ -30,18 +30,18 @@ const Content = () => { navigate(Routes.CHANGE_WALLET_SHEET); }, [navigate]); - React.useEffect(() => { - if (isSearching && !isFocused) { - Keyboard.dismiss(); - } - }, [isFocused, isSearching]); - const scrollHandler = useAnimatedScrollHandler({ onScroll: event => { scrollY.value = event.contentOffset.y; }, }); + useEffect(() => { + if (isSearching && !isFocused) { + Keyboard.dismiss(); + } + }, [isFocused, isSearching]); + useEffect(() => { discoverScrollToTopFnRef = scrollToTop; }, [scrollToTop]); diff --git a/src/state/backendNetworks/backendNetworks.ts b/src/state/backendNetworks/backendNetworks.ts index 9e1882f2601..60736773864 100644 --- a/src/state/backendNetworks/backendNetworks.ts +++ b/src/state/backendNetworks/backendNetworks.ts @@ -19,6 +19,7 @@ export interface BackendNetworksState { getBackendChains: () => Chain[]; getSupportedChains: () => Chain[]; + getSortedSupportedChainIds: () => number[]; getDefaultChains: () => Record; getSupportedChainIds: () => ChainId[]; @@ -75,6 +76,11 @@ export const useBackendNetworksStore = createRainbowStore( return IS_TEST ? [...backendChains, chainHardhat, chainHardhatOptimism] : backendChains; }, + getSortedSupportedChainIds: () => { + const supportedChains = get().getSupportedChains(); + return supportedChains.sort((a, b) => a.name.localeCompare(b.name)).map(c => c.id); + }, + getDefaultChains: () => { const supportedChains = get().getSupportedChains(); return supportedChains.reduce( diff --git a/src/state/internal/createRainbowStore.ts b/src/state/internal/createRainbowStore.ts index 9b7d9a39dd7..e0c14b79ead 100644 --- a/src/state/internal/createRainbowStore.ts +++ b/src/state/internal/createRainbowStore.ts @@ -43,6 +43,12 @@ interface RainbowPersistConfig { * This function will be called when persisted state versions mismatch with the one specified here. */ migrate?: (persistedState: unknown, version: number) => S | Promise; + /** + * A function returning another (optional) function. + * The main function will be called before the state rehydration. + * The returned function will be called after the state rehydration or when an error occurred. + */ + onRehydrateStorage?: PersistOptions>['onRehydrateStorage']; } /** @@ -157,6 +163,7 @@ export function createRainbowStore( storage: persistStorage, version, migrate: persistConfig.migrate, + onRehydrateStorage: persistConfig.onRehydrateStorage, }) ) ); diff --git a/src/state/networkSwitcher/networkSwitcher.ts b/src/state/networkSwitcher/networkSwitcher.ts new file mode 100644 index 00000000000..aa82dc85a44 --- /dev/null +++ b/src/state/networkSwitcher/networkSwitcher.ts @@ -0,0 +1,57 @@ +import { ChainId } from '@/state/backendNetworks/types'; +import { createRainbowStore } from '../internal/createRainbowStore'; +import { analyticsV2 } from '@/analytics'; +import { nonceStore } from '@/state/nonces'; +import { logger } from '@/logger'; + +export const defaultPinnedNetworks = [ChainId.base, ChainId.mainnet, ChainId.optimism, ChainId.arbitrum, ChainId.polygon, ChainId.zora]; + +function getMostUsedChains() { + try { + const noncesByAddress = nonceStore.getState().nonces; + const summedNoncesByChainId: Record = {}; + for (const addressNonces of Object.values(noncesByAddress)) { + for (const [chainId, { currentNonce }] of Object.entries(addressNonces)) { + summedNoncesByChainId[chainId] ??= 0; + summedNoncesByChainId[chainId] += currentNonce || 0; + } + } + + const mostUsedNetworks = Object.entries(summedNoncesByChainId) + .sort((a, b) => b[1] - a[1]) + .map(([chainId]) => parseInt(chainId)); + + return mostUsedNetworks.length ? mostUsedNetworks.slice(0, 5) : defaultPinnedNetworks; + } catch (error) { + logger.warn('[networkSwitcher]: Error getting most used chains', { error }); + return defaultPinnedNetworks; + } +} + +export const networkSwitcherStore = createRainbowStore<{ + pinnedNetworks: ChainId[]; +}>(() => ({ pinnedNetworks: getMostUsedChains().slice(0, 5) }), { + storageKey: 'network-switcher', + version: 0, + onRehydrateStorage(state) { + // if we are missing pinned networks, use the user most used chains + if (state.pinnedNetworks.length === 0) { + const mostUsedNetworks = getMostUsedChains(); + state.pinnedNetworks = mostUsedNetworks.slice(0, 5); + analyticsV2.identify({ mostUsedNetworks: mostUsedNetworks.filter(Boolean) }); + } + }, +}); + +export const customizeNetworksBannerStore = createRainbowStore<{ + dismissedAt: number; // timestamp +}>(() => ({ dismissedAt: 0 }), { + storageKey: 'CustomizeNetworksBanner', + version: 0, +}); + +const twoWeeks = 1000 * 60 * 60 * 24 * 7 * 2; +export const shouldShowCustomizeNetworksBanner = (dismissedAt: number) => Date.now() - dismissedAt > twoWeeks; +export const dismissCustomizeNetworksBanner = () => { + customizeNetworksBannerStore.setState({ dismissedAt: Date.now() }); +}; diff --git a/src/state/swaps/swapsStore.ts b/src/state/swaps/swapsStore.ts index 49cc99d0268..7d4d0d99f4b 100644 --- a/src/state/swaps/swapsStore.ts +++ b/src/state/swaps/swapsStore.ts @@ -1,5 +1,5 @@ import { INITIAL_SLIDER_POSITION } from '@/__swaps__/screens/Swap/constants'; -import { ExtendedAnimatedAssetWithColors, ParsedSearchAsset } from '@/__swaps__/types/assets'; +import { ExtendedAnimatedAssetWithColors, ParsedSearchAsset, UniqueId } from '@/__swaps__/types/assets'; import { ChainId } from '@/state/backendNetworks/types'; import { RecentSwap } from '@/__swaps__/types/swap'; import { getDefaultSlippage } from '@/__swaps__/utils/swaps'; @@ -42,6 +42,8 @@ export interface SwapsState { // degen mode preferences preferredNetwork: ChainId | undefined; setPreferredNetwork: (preferredNetwork: ChainId | undefined) => void; + + lastNavigatedTrendingToken: UniqueId | undefined; } type StateWithTransforms = Omit, 'latestSwapAt' | 'recentSwaps'> & { @@ -156,6 +158,8 @@ export const swapsStore = createRainbowStore( latestSwapAt: new Map(latestSwapAt), }); }, + + lastNavigatedTrendingToken: undefined, }), { storageKey: 'swapsStore', diff --git a/src/state/trendingTokens/trendingTokens.ts b/src/state/trendingTokens/trendingTokens.ts new file mode 100644 index 00000000000..644ccd45fba --- /dev/null +++ b/src/state/trendingTokens/trendingTokens.ts @@ -0,0 +1,59 @@ +import { analyticsV2 } from '@/analytics'; +import { ChainId } from '@/state/backendNetworks/types'; +import { createRainbowStore } from '../internal/createRainbowStore'; +import { + TrendingCategory as ArcTrendingCategory, + Timeframe as ArcTimeframe, + TrendingSort as ArcTrendingSort, +} from '@/graphql/__generated__/arc'; + +export const categories = [ArcTrendingCategory.Trending, ArcTrendingCategory.New, ArcTrendingCategory.Farcaster] as const; +export type TrendingCategory = (typeof categories)[number]; +export const sortFilters = [ + ArcTrendingSort.Recommended, + ArcTrendingSort.Volume, + ArcTrendingSort.MarketCap, + ArcTrendingSort.TopGainers, + ArcTrendingSort.TopLosers, +] as const; +export type TrendingSort = (typeof sortFilters)[number]; +export const timeFilters = [ArcTimeframe.H24, ArcTimeframe.D7, ArcTimeframe.D3] as const; +export type TrendingTimeframe = (typeof timeFilters)[number]; + +type TrendingTokensState = { + category: (typeof categories)[number]; + chainId: undefined | ChainId; + timeframe: (typeof timeFilters)[number]; + sort: (typeof sortFilters)[number]; + + setCategory: (category: TrendingTokensState['category']) => void; + setChainId: (chainId: TrendingTokensState['chainId']) => void; + setTimeframe: (timeframe: TrendingTokensState['timeframe']) => void; + setSort: (sort: TrendingTokensState['sort']) => void; +}; + +export const useTrendingTokensStore = createRainbowStore( + set => ({ + category: ArcTrendingCategory.Trending, + chainId: undefined, + timeframe: ArcTimeframe.H24, + sort: ArcTrendingSort.Recommended, + setCategory: category => set({ category }), + setChainId: chainId => { + analyticsV2.track(analyticsV2.event.changeNetworkFilter, { chainId }); + set({ chainId }); + }, + setTimeframe: timeframe => { + analyticsV2.track(analyticsV2.event.changeTimeframeFilter, { timeframe }); + set({ timeframe }); + }, + setSort: sort => { + analyticsV2.track(analyticsV2.event.changeSortFilter, { sort }); + set({ sort }); + }, + }), + { + storageKey: 'trending-tokens', + version: 1, + } +); diff --git a/src/walletConnect/sheets/AuthRequest.tsx b/src/walletConnect/sheets/AuthRequest.tsx index 338acad39b4..724cae00de2 100644 --- a/src/walletConnect/sheets/AuthRequest.tsx +++ b/src/walletConnect/sheets/AuthRequest.tsx @@ -149,7 +149,7 @@ export function AuthRequest({ navigate(Routes.CHANGE_WALLET_SHEET, { watchOnly: true, currentAccountAddress: address, - onChangeWallet(address: string) { + onChangeWallet(address) { setAddress(address); goBack(); }, From d90e32a71b6e185ec6829dfbcf071f47a6ba6003 Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Fri, 20 Dec 2024 07:01:18 -0500 Subject: [PATCH 06/19] Fix selected state for network, timeframe, sort (#6352) --- src/components/Discover/DiscoverHome.tsx | 3 +- src/components/Discover/TrendingTokens.tsx | 283 +++++++++++------- .../Discover/useTrackDiscoverScreenTime.ts | 6 +- src/components/NetworkSwitcher.tsx | 150 +++++++--- src/components/coin-icon/ChainImage.tsx | 2 - src/languages/en_US.json | 12 +- 6 files changed, 287 insertions(+), 169 deletions(-) diff --git a/src/components/Discover/DiscoverHome.tsx b/src/components/Discover/DiscoverHome.tsx index 019328a92b6..8da0ba974af 100644 --- a/src/components/Discover/DiscoverHome.tsx +++ b/src/components/Discover/DiscoverHome.tsx @@ -70,10 +70,11 @@ export default function DiscoverHome() { {isProfilesEnabled && } + {trendingTokensEnabled && ( <> - + )} diff --git a/src/components/Discover/TrendingTokens.tsx b/src/components/Discover/TrendingTokens.tsx index 0c3e0fba658..3a14f94011a 100644 --- a/src/components/Discover/TrendingTokens.tsx +++ b/src/components/Discover/TrendingTokens.tsx @@ -1,5 +1,5 @@ import { DropdownMenu } from '@/components/DropdownMenu'; -import { globalColors, Text, useBackgroundColor } from '@/design-system'; +import { globalColors, Text, TextIcon, useBackgroundColor, useColorMode } from '@/design-system'; import { useForegroundColor } from '@/design-system/color/useForegroundColor'; import { SwapCoinIcon } from '@/__swaps__/screens/Swap/components/SwapCoinIcon'; @@ -8,7 +8,7 @@ import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks import { ChainId } from '@/state/backendNetworks/types'; import { ChainImage } from '@/components/coin-icon/ChainImage'; import Skeleton, { FakeAvatar, FakeText } from '@/components/skeleton/Skeleton'; -import { SortDirection, TrendingCategory, TrendingSort } from '@/graphql/__generated__/arc'; +import { SortDirection, Timeframe, TrendingCategory, TrendingSort } from '@/graphql/__generated__/arc'; import { formatCurrency, formatNumber } from '@/helpers/strings'; import * as i18n from '@/languages'; import { Navigation } from '@/navigation'; @@ -22,71 +22,95 @@ import { darkModeThemeColors } from '@/styles/colors'; import { useTheme } from '@/theme'; import { useCallback, useEffect, useMemo } from 'react'; import React, { Dimensions, FlatList, View } from 'react-native'; -import { Gesture, GestureDetector } from 'react-native-gesture-handler'; import LinearGradient from 'react-native-linear-gradient'; -import Animated, { runOnJS, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated'; +import Animated, { runOnJS, useSharedValue } from 'react-native-reanimated'; import { ButtonPressAnimation } from '../animations'; import { useFarcasterAccountForWallets } from '@/hooks/useFarcasterAccountForWallets'; import { ImgixImage } from '../images'; import { useRemoteConfig } from '@/model/remoteConfig'; import { useAccountSettings } from '@/hooks'; +import { getColorWorklet, getMixedColor, opacity } from '@/__swaps__/utils/swaps'; +import { THICK_BORDER_WIDTH } from '@/__swaps__/screens/Swap/constants'; +import { IS_IOS } from '@/env'; const t = i18n.l.trending_tokens; -const AnimatedLinearGradient = Animated.createAnimatedComponent(LinearGradient); - -function FilterButton({ icon, label, onPress }: { onPress?: VoidFunction; label: string; icon: string | JSX.Element }) { - const pressed = useSharedValue(false); - - const tap = Gesture.Tap() - .onBegin(() => { - pressed.value = true; - if (onPress) runOnJS(onPress)(); - }) - .onFinalize(() => (pressed.value = false)); - - const animatedStyles = useAnimatedStyle(() => ({ - transform: [{ scale: withTiming(pressed.value ? 0.95 : 1, { duration: 100 }) }], - })); - - const backgroundColor = useBackgroundColor('fillTertiary'); - const borderColor = useBackgroundColor('fillSecondary'); - - const iconColor = useForegroundColor('labelQuaternary'); +function FilterButton({ + icon, + label, + onPress, + selected, + iconColor, + highlightedBackgroundColor, +}: { + onPress?: VoidFunction; + label: string; + icon: string | JSX.Element; + selected: boolean; + iconColor?: string; + highlightedBackgroundColor?: string; +}) { + const { isDarkMode } = useColorMode(); + const fillTertiary = useBackgroundColor('fillTertiary'); + const separatorSecondary = useForegroundColor('separatorSecondary'); + const borderColor = selected && isDarkMode ? globalColors.white80 : separatorSecondary; + const defaultIconColor = getColorWorklet('labelSecondary', selected ? false : isDarkMode); + + const gradientColors = useMemo(() => { + if (!selected) return [fillTertiary, fillTertiary]; + return highlightedBackgroundColor + ? [highlightedBackgroundColor, globalColors.white100] + : [ + isDarkMode ? opacity(globalColors.white100, 0.72) : opacity(fillTertiary, 0.2), + isDarkMode ? opacity(globalColors.white100, 0.92) : opacity(fillTertiary, 0), + ]; + }, [fillTertiary, highlightedBackgroundColor, selected, isDarkMode]); return ( - - + {typeof icon === 'string' ? ( - + {icon} - + ) : ( icon )} - - {label} - - + + {/* This first Text element sets the width of the container */} + + {label} + + {/* This second Text element is the visible label, positioned absolutely within the established frame */} + + {label} + + + 􀆏 - - + + ); } @@ -146,69 +170,70 @@ function CategoryFilterButton({ }: { category: TrendingCategory; icon: string; - iconColor: string; + iconColor: string | { default: string; selected: string }; highlightedBackgroundColor: string; iconWidth?: number; label: string; }) { - const { isDarkMode } = useTheme(); + const { isDarkMode } = useColorMode(); const fillTertiary = useBackgroundColor('fillTertiary'); - const fillSecondary = useBackgroundColor('fillSecondary'); + const separatorSecondary = useForegroundColor('separatorSecondary'); const selected = useTrendingTokensStore(state => state.category === category); - const borderColor = selected && isDarkMode ? globalColors.white80 : fillSecondary; + const borderColor = selected && isDarkMode ? globalColors.white80 : separatorSecondary; - const pressed = useSharedValue(false); + const gradientColors = useMemo(() => { + if (!selected) return [fillTertiary, fillTertiary]; + return [highlightedBackgroundColor, globalColors.white100]; + }, [fillTertiary, highlightedBackgroundColor, selected]); const selectCategory = useCallback(() => { useTrendingTokensStore.getState().setCategory(category); }, [category]); - const tap = Gesture.Tap() - .onBegin(() => { - pressed.value = true; - }) - .onEnd(() => { - pressed.value = false; - runOnJS(selectCategory)(); - }); - - const animatedStyles = useAnimatedStyle(() => ({ - transform: [{ scale: withTiming(pressed.value ? 0.95 : 1, { duration: 100 }) }], - })); - return ( - - + - - {icon} - - - {label} - - - + {icon} + + + {/* This first Text element sets the width of the container */} + + {label} + + {/* This second Text element is the visible label, positioned absolutely within the established frame */} + + {label} + + + + ); } @@ -266,7 +291,7 @@ function FriendHolders({ friends }: { friends: FarcasterUser[] }) { function TrendingTokenLoadingRow() { const backgroundColor = useBackgroundColor('surfacePrimary'); - const { isDarkMode } = useTheme(); + const { isDarkMode } = useColorMode(); return ( @@ -464,7 +489,7 @@ function TrendingTokenRow({ token }: { token: TrendingToken }) { } function NoResults() { - const { isDarkMode } = useTheme(); + const { isDarkMode } = useColorMode(); const fillQuaternary = useBackgroundColor('fillQuaternary'); const backgroundColor = isDarkMode ? '#191A1C' : fillQuaternary; @@ -488,12 +513,27 @@ function NoResults() { } function NetworkFilter() { - const selected = useSharedValue(undefined); + const { isDarkMode } = useColorMode(); + const { colors } = useTheme(); - const { chainId, setChainId } = useTrendingTokensStore(state => ({ - chainId: state.chainId, - setChainId: state.setChainId, - })); + const selected = useSharedValue(undefined); + const chainId = useTrendingTokensStore(state => state.chainId); + const setChainId = useTrendingTokensStore(state => state.setChainId); + + const { icon, label, lightenedNetworkColor } = useMemo(() => { + if (!chainId) return { icon: '􀤆', label: i18n.t(t.all), lightenedNetworkColor: undefined }; + return { + icon: ( + + + + ), + label: useBackendNetworksStore.getState().getChainsLabel()[chainId], + lightenedNetworkColor: colors.networkColors[chainId] + ? getMixedColor(colors.networkColors[chainId], globalColors.white100, isDarkMode ? 0.55 : 0.6) + : undefined, + }; + }, [chainId, colors.networkColors, isDarkMode]); const setSelected = useCallback( (chainId: ChainId | undefined) => { @@ -504,13 +544,6 @@ function NetworkFilter() { [selected, setChainId] ); - const label = !chainId ? i18n.t(t.all) : useBackendNetworksStore.getState().getChainsLabel()[chainId]; - - const icon = useMemo(() => { - if (!chainId) return '􀤆'; - return ; - }, [chainId]); - const navigateToNetworkSelector = useCallback(() => { Navigation.handleAction(Routes.NETWORK_SELECTOR, { selected, @@ -518,11 +551,20 @@ function NetworkFilter() { }); }, [selected, setSelected]); - return ; + return ( + + ); } function TimeFilter() { const timeframe = useTrendingTokensStore(state => state.timeframe); + const shouldAbbreviate = timeframe === Timeframe.H24; return ( useTrendingTokensStore.getState().setTimeframe(timeframe)} > - + ); } function SortFilter() { const sort = useTrendingTokensStore(state => state.sort); + const selected = sort !== TrendingSort.Recommended; - const iconColor = useForegroundColor('labelQuaternary'); + const iconColor = useForegroundColor(selected ? 'labelSecondary' : 'labelTertiary'); return ( @@ -591,8 +643,8 @@ function TrendingTokenData() { return ( } data={trendingTokens} renderItem={({ item }) => } @@ -603,6 +655,7 @@ function TrendingTokenData() { const padding = 20; export function TrendingTokens() { + const { isDarkMode } = useColorMode(); return ( @@ -623,8 +676,8 @@ export function TrendingTokens() { category={TrendingCategory.New} label={i18n.t(t.filters.categories.NEW)} icon="􀋃" - iconColor={'#FFDA24'} - highlightedBackgroundColor={'#F9EAA1'} + iconColor={{ default: isDarkMode ? globalColors.yellow60 : '#FFBB00', selected: '#F5A200' }} + highlightedBackgroundColor={'#FFEAC2'} iconWidth={18} /> { - const activeSwipeRoute = useNavigationStore(state => state.activeSwipeRoute); + const isOnDiscoverScreen = useNavigationStore(state => state.isRouteActive(Routes.DISCOVER_SCREEN)); + useEffect(() => { - const isOnDiscoverScreen = activeSwipeRoute === Routes.DISCOVER_SCREEN; const data = currentlyTrackedMetrics.get(PerformanceMetrics.timeSpentOnDiscoverScreen); if (!isOnDiscoverScreen && data?.startTimestamp) { @@ -17,5 +17,5 @@ export const useTrackDiscoverScreenTime = () => { if (isOnDiscoverScreen) { PerformanceTracking.startMeasuring(PerformanceMetrics.timeSpentOnDiscoverScreen); } - }, [activeSwipeRoute]); + }, [isOnDiscoverScreen]); }; diff --git a/src/components/NetworkSwitcher.tsx b/src/components/NetworkSwitcher.tsx index 50c4e13d639..65a66961d7a 100644 --- a/src/components/NetworkSwitcher.tsx +++ b/src/components/NetworkSwitcher.tsx @@ -1,15 +1,14 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { getChainColorWorklet } from '@/__swaps__/utils/swaps'; +import { getChainColorWorklet, opacity } from '@/__swaps__/utils/swaps'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; import { ChainId } from '@/state/backendNetworks/types'; import { AnimatedBlurView } from '@/components/AnimatedComponents/AnimatedBlurView'; import { ButtonPressAnimation } from '@/components/animations'; import { SPRING_CONFIGS, TIMING_CONFIGS } from '@/components/animations/animationConfigs'; -import { AnimatedChainImage, ChainImage } from '@/components/coin-icon/ChainImage'; +import { ChainImage } from '@/components/coin-icon/ChainImage'; import { AnimatedText, Box, DesignSystemProvider, globalColors, Separator, Text, useBackgroundColor, useColorMode } from '@/design-system'; import { useForegroundColor } from '@/design-system/color/useForegroundColor'; import * as i18n from '@/languages'; -import { useTheme } from '@/theme'; import deviceUtils, { DEVICE_WIDTH } from '@/utils/deviceUtils'; import MaskedView from '@react-native-masked-view/masked-view'; import chroma from 'chroma-js'; @@ -19,6 +18,7 @@ import { RouteProp, useRoute } from '@react-navigation/native'; import { Gesture, GestureDetector } from 'react-native-gesture-handler'; import LinearGradient from 'react-native-linear-gradient'; import Animated, { + Easing, FadeIn, FadeOutUp, LinearTransition, @@ -46,6 +46,8 @@ import { IS_IOS } from '@/env'; import { safeAreaInsetValues } from '@/utils'; import { noop } from 'lodash'; import { TapToDismiss } from './DappBrowser/control-panel/ControlPanel'; +import { THICK_BORDER_WIDTH } from '@/__swaps__/screens/Swap/constants'; +import { GestureHandlerButton } from '@/__swaps__/screens/Swap/components/GestureHandlerButton'; const t = i18n.l.network_switcher; @@ -72,11 +74,18 @@ function EditButton({ editing }: { editing: SharedValue }) { editing.value = !editing.value; }} scaleTo={0.95} - style={[ - { position: 'absolute', right: 0 }, - { paddingHorizontal: 10, height: 28, justifyContent: 'center' }, - { borderColor, borderWidth: 1.33, borderRadius: 14 }, - ]} + style={{ + borderColor, + borderCurve: 'continuous', + borderRadius: 14, + borderWidth: THICK_BORDER_WIDTH, + height: 28, + justifyContent: 'center', + overflow: 'hidden', + paddingHorizontal: 10, + position: 'absolute', + right: 0, + }} > {text} @@ -96,7 +105,17 @@ function Header({ editing }: { editing: SharedValue }) { return ( - + @@ -199,16 +218,28 @@ const CustomizeNetworksBanner = !shouldShowCustomizeNetworksBanner(customizeNetw ); }; +const BADGE_BORDER_COLORS = { + default: { + dark: globalColors.white10, + light: '#F2F3F4', + }, + selected: { + dark: '#1E2E40', + light: '#D7E9FD', + }, +}; + const useNetworkOptionStyle = (isSelected: SharedValue, color?: string) => { const { isDarkMode } = useColorMode(); const label = useForegroundColor('labelTertiary'); const surfacePrimary = useBackgroundColor('surfacePrimary'); const networkSwitcherBackgroundColor = isDarkMode ? '#191A1C' : surfacePrimary; + const separatorTertiary = useForegroundColor('separatorTertiary'); const defaultStyle = { backgroundColor: isDarkMode ? globalColors.white10 : globalColors.grey20, - borderColor: '#F5F8FF05', + borderColor: isDarkMode ? opacity(separatorTertiary, 0.02) : separatorTertiary, }; const selectedStyle = { backgroundColor: chroma @@ -222,9 +253,12 @@ const useNetworkOptionStyle = (isSelected: SharedValue, color?: string) const scale = useSharedValue(1); useAnimatedReaction( () => isSelected.value, - current => { - if (current === true) { - scale.value = withSequence(withTiming(0.95, { duration: 50 }), withTiming(1, { duration: 80 })); + (current, prev) => { + if (current === true && prev === false) { + scale.value = withSequence( + withTiming(0.9, { duration: 120, easing: Easing.bezier(0.25, 0.46, 0.45, 0.94) }), + withTiming(1, TIMING_CONFIGS.fadeConfig) + ); } } ); @@ -252,29 +286,28 @@ function AllNetworksOption({ selected: SharedValue; setSelected: (chainId: ChainId | undefined) => void; }) { + const { isDarkMode } = useColorMode(); const blue = useForegroundColor('blue'); const isSelected = useDerivedValue(() => selected.value === undefined); - const { animatedStyle, selectedStyle, defaultStyle } = useNetworkOptionStyle(isSelected, blue); + const { animatedStyle } = useNetworkOptionStyle(isSelected, blue); const overlappingBadge = useAnimatedStyle(() => { return { - borderColor: isSelected.value ? selectedStyle.backgroundColor : defaultStyle.backgroundColor, - borderWidth: 1.67, - borderRadius: 16, - marginLeft: -9, - width: 16 + 1.67 * 2, // size + borders - height: 16 + 1.67 * 2, + borderColor: isSelected.value + ? BADGE_BORDER_COLORS.selected[isDarkMode ? 'dark' : 'light'] + : BADGE_BORDER_COLORS.default[isDarkMode ? 'dark' : 'light'], }; }); - const tapGesture = Gesture.Tap().onTouchesDown(() => { - 'worklet'; - setSelected(undefined); - }); - return ( - + { + 'worklet'; + setSelected(undefined); + }} + scaleTo={0.95} + > - - - - - + + + + + + + + + + + + + {i18n.t(t.all_networks)} - + ); } @@ -338,9 +381,17 @@ function NetworkOption({ chainId, selected }: { chainId: ChainId; selected: Shar @@ -358,6 +409,10 @@ const GAP = 12; const ITEM_WIDTH = (DEVICE_WIDTH - SHEET_INNER_PADDING * 2 - SHEET_OUTER_INSET * 2 - GAP) / 2; const ITEM_HEIGHT = 48; const SEPARATOR_HEIGHT = 68; + +const ALL_NETWORKS_BADGE_SIZE = 16; +const THICKER_BORDER_WIDTH = 5 / 3; + const enum Section { pinned, separator, @@ -482,7 +537,7 @@ function SectionSeparator({ const showMoreOrLessIcon = useDerivedValue(() => (expanded.value ? '􀆇' : '􀆈') as string); const showMoreOrLessIconStyle = useAnimatedStyle(() => ({ opacity: editing.value ? 0 : 1 })); - const { isDarkMode } = useTheme(); + const { isDarkMode } = useColorMode(); const separatorContainerStyles = useAnimatedStyle(() => { if (showExpandButtonAsNetworkChip.value) { @@ -495,7 +550,7 @@ function SectionSeparator({ flexDirection: 'row', alignItems: 'center', borderRadius: 24, - borderWidth: 1.33, + borderWidth: THICK_BORDER_WIDTH, transform: [{ translateX: position.x }, { translateY: position.y }], }; } @@ -559,13 +614,13 @@ function EmptyUnpinnedPlaceholder({ transform: [{ translateY: sectionsOffsets.value[Section.unpinned].y }], }; }); - const { isDarkMode } = useTheme(); + const { isDarkMode } = useColorMode(); return ( ; onClose: VoidFunction }>) { - const { isDarkMode } = useTheme(); + const { isDarkMode } = useColorMode(); const surfacePrimary = useBackgroundColor('surfacePrimary'); const backgroundColor = isDarkMode ? '#191A1C' : surfacePrimary; const separatorSecondary = useForegroundColor('separatorSecondary'); @@ -760,7 +815,7 @@ function Sheet({ children, editing, onClose }: PropsWithChildren<{ editing: Shar sx.sheet, { backgroundColor, - borderColor: separatorSecondary, + borderColor: isDarkMode ? separatorSecondary : globalColors.white100, }, ]} > @@ -789,6 +844,13 @@ export function NetworkSelector() { } const sx = StyleSheet.create({ + overlappingBadge: { + borderWidth: THICKER_BORDER_WIDTH, + borderRadius: ALL_NETWORKS_BADGE_SIZE, + marginLeft: -9, + width: ALL_NETWORKS_BADGE_SIZE + THICKER_BORDER_WIDTH * 2, + height: ALL_NETWORKS_BADGE_SIZE + THICKER_BORDER_WIDTH * 2, + }, sheet: { flex: 1, width: deviceUtils.dimensions.width - 16, @@ -799,7 +861,9 @@ const sx = StyleSheet.create({ left: 8, right: 8, paddingHorizontal: 16, + borderCurve: 'continuous', borderRadius: 42, - borderWidth: 1.33, + borderWidth: THICK_BORDER_WIDTH, + overflow: 'hidden', }, }); diff --git a/src/components/coin-icon/ChainImage.tsx b/src/components/coin-icon/ChainImage.tsx index 671296c8445..90f8ffbc960 100644 --- a/src/components/coin-icon/ChainImage.tsx +++ b/src/components/coin-icon/ChainImage.tsx @@ -89,5 +89,3 @@ export const ChainImage = forwardRef(function ChainImage( /> ); }); - -export const AnimatedChainImage = Animated.createAnimatedComponent(ChainImage); diff --git a/src/languages/en_US.json b/src/languages/en_US.json index 4bfe7a65a0d..040e9da9ab7 100644 --- a/src/languages/en_US.json +++ b/src/languages/en_US.json @@ -3043,8 +3043,10 @@ "TOP_LOSERS": "Top Losers" }, "time": { - "H12": "12h", - "H24": "24h", + "H12": "12 Hours", + "H12_ABBREVIATED": "12h", + "H24": "24 Hours", + "H24_ABBREVIATED": "24h", "D7": "1 Week", "D3": "1 Month" } @@ -3056,11 +3058,11 @@ "tap_the": "Tap the", "button_to_set_up": "button below to set up" }, - "drag_here_to_unpin": "Drag here to unpin networks", + "drag_here_to_unpin": "Drop Here to Unpin", "edit": "Edit", "networks": "Networks", - "drag_to_rearrange": "Drag to rearrange", - "show_less": "Show less", + "drag_to_rearrange": "Drag to Rearrange", + "show_less": "Show Less", "more": "More", "show_more": "More Networks", "all_networks": "All Networks" From 572edec6c1dffeeb692209d9268cf7166ad5c0bd Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Fri, 20 Dec 2024 07:02:02 -0500 Subject: [PATCH 07/19] Backups V2 Follow-up Fixes / Improvements (#6213) --- src/App.tsx | 32 +- src/components/AbsolutePortal.tsx | 6 +- src/components/ExchangeTokenRow.tsx | 5 +- src/components/PortalConsumer.js | 18 - src/components/WalletLoadingListener.tsx | 17 + .../FastCurrencySelectionRow.tsx | 2 - .../ProfileActionButtonsRow.tsx | 16 +- .../profile-header/ProfileNameRow.tsx | 1 - .../backup/AddWalletToCloudBackupStep.tsx | 123 ---- src/components/backup/BackupManuallyStep.tsx | 100 ---- src/components/backup/BackupSheet.tsx | 41 +- ...roviderStep.tsx => BackupWalletPrompt.tsx} | 141 +++-- src/components/backup/ChooseBackupStep.tsx | 198 ++++--- src/components/backup/CloudBackupProvider.tsx | 87 --- src/components/backup/RestoreCloudStep.tsx | 118 ++-- src/components/backup/useCreateBackup.ts | 158 +++--- src/components/fields/PasswordField.tsx | 32 +- .../floating-emojis/FloatingEmojis.js | 156 ------ .../floating-emojis/FloatingEmojis.tsx | 151 +++++ .../floating-emojis/GravityEmoji.tsx | 2 + .../remote-promo-sheet/runChecks.ts | 9 +- .../secret-display/SecretDisplaySection.tsx | 10 +- .../components/Inline/Inline.tsx | 2 +- src/handlers/cloudBackup.ts | 30 +- src/handlers/walletReadyEvents.ts | 109 ++-- src/helpers/walletBackupStepTypes.ts | 2 +- src/helpers/walletLoadingStates.ts | 10 + src/hooks/useActiveRoute.ts | 16 + src/hooks/useCloudBackups.ts | 71 --- src/hooks/useImportingWallet.ts | 26 +- src/hooks/useInitializeWallet.ts | 4 +- src/hooks/useManageCloudBackups.ts | 64 ++- src/hooks/useUpdateEmoji.ts | 4 +- src/hooks/useWalletCloudBackup.ts | 117 ++-- src/hooks/useWallets.ts | 11 +- src/languages/en_US.json | 19 +- src/model/backup.ts | 339 +++++------ src/navigation/HardwareWalletTxNavigator.tsx | 2 +- src/navigation/Routes.android.tsx | 8 +- src/navigation/Routes.ios.tsx | 6 + src/navigation/config.tsx | 4 +- src/react-native-cool-modals/Portal.js | 50 -- src/react-native-cool-modals/Portal.tsx | 42 ++ src/redux/wallets.ts | 297 +++------- .../transactions/consolidatedTransactions.ts | 1 + src/screens/AddWalletSheet.tsx | 92 +-- src/screens/RestoreSheet.tsx | 2 +- src/screens/SendSheet.tsx | 16 +- src/screens/SettingsSheet/SettingsSheet.tsx | 185 +++--- .../components/Backups/BackUpMenuButton.tsx | 108 ++-- .../components/Backups/ViewCloudBackups.tsx | 222 ++++---- .../components/Backups/ViewWalletBackup.tsx | 315 ++++------- .../components/Backups/WalletsAndBackup.tsx | 528 +++++++++--------- .../components/GoogleAccountSection.tsx | 15 +- .../components/MenuContainer.tsx | 4 +- .../SettingsSheet/components/MenuHeader.tsx | 6 +- .../components/SettingsSection.tsx | 42 +- .../SettingsSheet/useVisibleWallets.ts | 81 +-- src/screens/SettingsSheet/utils.ts | 179 +++--- src/screens/WalletScreen/index.tsx | 5 +- src/state/backups/backups.ts | 182 ++++++ src/state/sync/BackupsSync.tsx | 12 + src/state/walletLoading/walletLoading.ts | 18 + 63 files changed, 2152 insertions(+), 2517 deletions(-) delete mode 100644 src/components/PortalConsumer.js create mode 100644 src/components/WalletLoadingListener.tsx delete mode 100644 src/components/backup/AddWalletToCloudBackupStep.tsx delete mode 100644 src/components/backup/BackupManuallyStep.tsx rename src/components/backup/{BackupChooseProviderStep.tsx => BackupWalletPrompt.tsx} (66%) delete mode 100644 src/components/backup/CloudBackupProvider.tsx delete mode 100644 src/components/floating-emojis/FloatingEmojis.js create mode 100644 src/components/floating-emojis/FloatingEmojis.tsx create mode 100644 src/helpers/walletLoadingStates.ts create mode 100644 src/hooks/useActiveRoute.ts delete mode 100644 src/hooks/useCloudBackups.ts delete mode 100644 src/react-native-cool-modals/Portal.js create mode 100644 src/react-native-cool-modals/Portal.tsx create mode 100644 src/state/backups/backups.ts create mode 100644 src/state/sync/BackupsSync.tsx create mode 100644 src/state/walletLoading/walletLoading.ts diff --git a/src/App.tsx b/src/App.tsx index 4977067dc60..1a749b8ce6d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,6 @@ import '@/languages'; import * as Sentry from '@sentry/react-native'; -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState, memo } from 'react'; import { AppRegistry, Dimensions, LogBox, StyleSheet, View } from 'react-native'; import { Toaster } from 'sonner-native'; import { MobileWalletProtocolProvider } from '@coinbase/mobile-wallet-protocol-host'; @@ -9,9 +9,8 @@ import { useApplicationSetup } from '@/hooks/useApplicationSetup'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { SafeAreaProvider, useSafeAreaInsets } from 'react-native-safe-area-context'; import { enableScreens } from 'react-native-screens'; -import { connect, Provider as ReduxProvider } from 'react-redux'; +import { connect, Provider as ReduxProvider, shallowEqual } from 'react-redux'; import { RecoilRoot } from 'recoil'; -import PortalConsumer from '@/components/PortalConsumer'; import ErrorBoundary from '@/components/error-boundary/ErrorBoundary'; import { OfflineToast } from '@/components/toasts'; import { designSystemPlaygroundEnabled, reactNativeDisableYellowBox, showNetworkRequests, showNetworkResponses } from '@/config/debug'; @@ -24,7 +23,6 @@ import store, { AppDispatch, type AppState } from '@/redux/store'; import { MainThemeProvider } from '@/theme/ThemeContext'; import { SharedValuesProvider } from '@/helpers/SharedValuesContext'; import { InitialRouteContext } from '@/navigation/initialRoute'; -import { Portal } from '@/react-native-cool-modals/Portal'; import { NotificationsHandler } from '@/notifications/NotificationsHandler'; import { analyticsV2 } from '@/analytics'; import { getOrCreateDeviceId } from '@/analytics/utils'; @@ -39,6 +37,7 @@ import { RootStackParamList } from '@/navigation/types'; import { IS_ANDROID, IS_DEV } from '@/env'; import { prefetchDefaultFavorites } from '@/resources/favorites'; import Routes from '@/navigation/Routes'; +import { BackupsSync } from '@/state/sync/BackupsSync'; import { BackendNetworks } from '@/components/BackendNetworks'; import { AbsolutePortalRoot } from './components/AbsolutePortal'; @@ -68,13 +67,11 @@ function App({ walletReady }: AppProps) { }, []); return ( - + <> {initialRoute && ( - - )} @@ -82,14 +79,27 @@ function App({ walletReady }: AppProps) { + - + + ); } -const AppWithRedux = connect(state => ({ - walletReady: state.appState.walletReady, -}))(App); +const AppWithRedux = connect( + state => ({ + walletReady: state.appState.walletReady, + }), + null, + null, + { + areStatesEqual: (next, prev) => { + // Only update if walletReady actually changed + return next.appState.walletReady === prev.appState.walletReady; + }, + areOwnPropsEqual: shallowEqual, + } +)(memo(App)); function Root() { const [initializing, setInitializing] = useState(true); diff --git a/src/components/AbsolutePortal.tsx b/src/components/AbsolutePortal.tsx index c98b036cd70..a992e84c11c 100644 --- a/src/components/AbsolutePortal.tsx +++ b/src/components/AbsolutePortal.tsx @@ -1,5 +1,5 @@ import React, { PropsWithChildren, ReactNode, useEffect, useState } from 'react'; -import { View } from 'react-native'; +import { StyleProp, ViewStyle, View } from 'react-native'; const absolutePortal = { nodes: [] as ReactNode[], @@ -24,7 +24,7 @@ const absolutePortal = { }, }; -export const AbsolutePortalRoot = () => { +export const AbsolutePortalRoot = ({ style }: { style?: StyleProp }) => { const [nodes, setNodes] = useState(absolutePortal.nodes); useEffect(() => { @@ -32,7 +32,7 @@ export const AbsolutePortalRoot = () => { return () => unsubscribe(); }, []); - return {nodes}; + return {nodes}; }; export const AbsolutePortal = ({ children }: PropsWithChildren) => { diff --git a/src/components/ExchangeTokenRow.tsx b/src/components/ExchangeTokenRow.tsx index 0e509debbe4..9fabd7219f5 100644 --- a/src/components/ExchangeTokenRow.tsx +++ b/src/components/ExchangeTokenRow.tsx @@ -2,7 +2,7 @@ import React from 'react'; import isEqual from 'react-fast-compare'; import { Box, Column, Columns, Inline, Stack, Text } from '@/design-system'; import { isNativeAsset } from '@/handlers/assets'; -import { useAsset, useDimensions } from '@/hooks'; +import { useAsset } from '@/hooks'; import { ButtonPressAnimation } from '@/components/animations'; import { FloatingEmojis } from '@/components/floating-emojis'; import { IS_IOS } from '@/env'; @@ -34,7 +34,6 @@ export default React.memo(function ExchangeTokenRow({ disabled, }, }: ExchangeTokenRowProps) { - const { width: deviceWidth } = useDimensions(); const item = useAsset({ address, chainId, @@ -101,10 +100,8 @@ export default React.memo(function ExchangeTokenRow({ {isInfoButtonVisible && } {showFavoriteButton && (IS_IOS ? ( - // @ts-ignore { - if (isWalletLoading) { - setComponent(, true); - } - return hide; - }, [hide, isWalletLoading, setComponent]); - - return null; -} diff --git a/src/components/WalletLoadingListener.tsx b/src/components/WalletLoadingListener.tsx new file mode 100644 index 00000000000..6a9e605ab4f --- /dev/null +++ b/src/components/WalletLoadingListener.tsx @@ -0,0 +1,17 @@ +import React, { useEffect } from 'react'; +import { LoadingOverlay } from './modal'; +import { sheetVerticalOffset } from '@/navigation/effects'; +import { walletLoadingStore } from '@/state/walletLoading/walletLoading'; + +export default function WalletLoadingListener() { + const loadingState = walletLoadingStore(state => state.loadingState); + + useEffect(() => { + if (loadingState) { + walletLoadingStore.getState().setComponent(); + } + return walletLoadingStore.getState().hide; + }, [loadingState]); + + return null; +} diff --git a/src/components/asset-list/RecyclerAssetList2/FastComponents/FastCurrencySelectionRow.tsx b/src/components/asset-list/RecyclerAssetList2/FastComponents/FastCurrencySelectionRow.tsx index d122b9a622e..49bf81fd43e 100644 --- a/src/components/asset-list/RecyclerAssetList2/FastComponents/FastCurrencySelectionRow.tsx +++ b/src/components/asset-list/RecyclerAssetList2/FastComponents/FastCurrencySelectionRow.tsx @@ -174,10 +174,8 @@ export default React.memo(function FastCurrencySelectionRow({ {showFavoriteButton && chainId === ChainId.mainnet && (ios ? ( - // @ts-ignore - + @@ -216,13 +216,17 @@ function SendButton() { ); } -export function MoreButton() { - // //////////////////////////////////////////////////// - // Handlers - +export function CopyButton() { const [isToastActive, setToastActive] = useRecoilState(addressCopiedToastAtom); const { accountAddress } = useAccountProfile(); + const { isDamaged } = useWallets(); + const handlePressCopy = React.useCallback(() => { + if (isDamaged) { + showWalletErrorAlert(); + return; + } + if (!isToastActive) { setToastActive(true); setTimeout(() => { @@ -230,7 +234,7 @@ export function MoreButton() { }, 2000); } Clipboard.setString(accountAddress); - }, [accountAddress, isToastActive, setToastActive]); + }, [accountAddress, isDamaged, isToastActive, setToastActive]); return ( <> diff --git a/src/components/asset-list/RecyclerAssetList2/profile-header/ProfileNameRow.tsx b/src/components/asset-list/RecyclerAssetList2/profile-header/ProfileNameRow.tsx index 616935fe6ff..9859a4ae105 100644 --- a/src/components/asset-list/RecyclerAssetList2/profile-header/ProfileNameRow.tsx +++ b/src/components/asset-list/RecyclerAssetList2/profile-header/ProfileNameRow.tsx @@ -109,7 +109,6 @@ export function ProfileNameRow({ scaleTo={0} size={50} wiggleFactor={0} - // @ts-expect-error – JS component setOnNewEmoji={newOnNewEmoji => (onNewEmoji.current = newOnNewEmoji)} /> diff --git a/src/components/backup/AddWalletToCloudBackupStep.tsx b/src/components/backup/AddWalletToCloudBackupStep.tsx deleted file mode 100644 index 62f92a99e2f..00000000000 --- a/src/components/backup/AddWalletToCloudBackupStep.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import React, { useCallback } from 'react'; -import { Bleed, Box, Inline, Inset, Separator, Stack, Text } from '@/design-system'; -import * as lang from '@/languages'; -import { ImgixImage } from '../images'; -import WalletsAndBackupIcon from '@/assets/WalletsAndBackup.png'; -import { Source } from 'react-native-fast-image'; -import { cloudPlatform } from '@/utils/platform'; -import { ButtonPressAnimation } from '../animations'; -import Routes from '@/navigation/routesNames'; -import { useNavigation } from '@/navigation'; -import { useWallets } from '@/hooks'; -import { WalletCountPerType, useVisibleWallets } from '@/screens/SettingsSheet/useVisibleWallets'; -import { format } from 'date-fns'; -import { useCreateBackup } from './useCreateBackup'; -import { login } from '@/handlers/cloudBackup'; - -const imageSize = 72; - -export default function AddWalletToCloudBackupStep() { - const { goBack } = useNavigation(); - const { wallets, selectedWallet } = useWallets(); - - const walletTypeCount: WalletCountPerType = { - phrase: 0, - privateKey: 0, - }; - - const { lastBackupDate } = useVisibleWallets({ wallets, walletTypeCount }); - - const { onSubmit } = useCreateBackup({ - walletId: selectedWallet.id, - navigateToRoute: { - route: Routes.SETTINGS_SHEET, - params: { - screen: Routes.SETTINGS_SECTION_BACKUP, - }, - }, - }); - - const potentiallyLoginAndSubmit = useCallback(async () => { - await login(); - return onSubmit({}); - }, [onSubmit]); - - const onMaybeLater = useCallback(() => goBack(), [goBack]); - - return ( - - - - - - {lang.t(lang.l.back_up.cloud.add_wallet_to_cloud_backups)} - - - - - - - - - potentiallyLoginAndSubmit().then(success => success && goBack())}> - - - - - 􀎽{' '} - {lang.t(lang.l.back_up.cloud.back_to_cloud_platform_now, { - cloudPlatform, - })} - - - - - - - - - - - - - - - - {lang.t(lang.l.back_up.cloud.mayber_later)} - - - - - - - - - - - {lastBackupDate && ( - - - - - {lang.t(lang.l.back_up.cloud.latest_backup, { - date: format(lastBackupDate, "M/d/yy 'at' h:mm a"), - })} - - - - - )} - - ); -} diff --git a/src/components/backup/BackupManuallyStep.tsx b/src/components/backup/BackupManuallyStep.tsx deleted file mode 100644 index da18d73806a..00000000000 --- a/src/components/backup/BackupManuallyStep.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import React, { useCallback } from 'react'; -import { Bleed, Box, Inline, Inset, Separator, Stack, Text } from '@/design-system'; -import * as lang from '@/languages'; -import { ImgixImage } from '../images'; -import ManuallyBackedUpIcon from '@/assets/ManuallyBackedUp.png'; -import { Source } from 'react-native-fast-image'; -import { ButtonPressAnimation } from '../animations'; -import { useNavigation } from '@/navigation'; -import Routes from '@/navigation/routesNames'; -import { useWallets } from '@/hooks'; -import walletTypes from '@/helpers/walletTypes'; -import { SETTINGS_BACKUP_ROUTES } from '@/screens/SettingsSheet/components/Backups/routes'; -import walletBackupTypes from '@/helpers/walletBackupTypes'; - -const imageSize = 72; - -export default function BackupManuallyStep() { - const { navigate, goBack } = useNavigation(); - const { selectedWallet } = useWallets(); - - const onManualBackup = async () => { - const title = - selectedWallet?.imported && selectedWallet.type === walletTypes.privateKey - ? (selectedWallet.addresses || [])[0].label - : selectedWallet.name; - - goBack(); - navigate(Routes.SETTINGS_SHEET, { - screen: SETTINGS_BACKUP_ROUTES.SECRET_WARNING, - params: { - isBackingUp: true, - title, - backupType: walletBackupTypes.manual, - walletId: selectedWallet.id, - }, - }); - }; - - const onMaybeLater = useCallback(() => goBack(), [goBack]); - - return ( - - - - - - {lang.t(lang.l.back_up.manual.backup_manually_now)} - - - - - - - - - - - - - - {lang.t(lang.l.back_up.manual.back_up_now)} - - - - - - - - - - - - - - - - {lang.t(lang.l.back_up.manual.already_backed_up)} - - - - - - - - - - - ); -} diff --git a/src/components/backup/BackupSheet.tsx b/src/components/backup/BackupSheet.tsx index 5b6a0a4300a..12e15c60190 100644 --- a/src/components/backup/BackupSheet.tsx +++ b/src/components/backup/BackupSheet.tsx @@ -2,13 +2,10 @@ import { RouteProp, useRoute } from '@react-navigation/native'; import React, { useCallback } from 'react'; import { BackupCloudStep, RestoreCloudStep } from '.'; import WalletBackupStepTypes from '@/helpers/walletBackupStepTypes'; -import BackupChooseProviderStep from '@/components/backup/BackupChooseProviderStep'; +import BackupWalletPrompt from '@/components/backup/BackupWalletPrompt'; import { BackgroundProvider } from '@/design-system'; import { SimpleSheet } from '@/components/sheet/SimpleSheet'; -import AddWalletToCloudBackupStep from '@/components/backup/AddWalletToCloudBackupStep'; -import BackupManuallyStep from './BackupManuallyStep'; import { getHeightForStep } from '@/navigation/config'; -import { CloudBackupProvider } from './CloudBackupProvider'; type BackupSheetParams = { BackupSheet: { @@ -21,38 +18,32 @@ type BackupSheetParams = { }; export default function BackupSheet() { - const { params: { step = WalletBackupStepTypes.no_provider } = {} } = useRoute>(); + const { params: { step = WalletBackupStepTypes.backup_prompt } = {} } = useRoute>(); const renderStep = useCallback(() => { switch (step) { - case WalletBackupStepTypes.backup_now_to_cloud: - return ; - case WalletBackupStepTypes.backup_now_manually: - return ; case WalletBackupStepTypes.backup_cloud: return ; case WalletBackupStepTypes.restore_from_backup: return ; - case WalletBackupStepTypes.no_provider: + case WalletBackupStepTypes.backup_prompt: default: - return ; + return ; } }, [step]); return ( - - - {({ backgroundColor }) => ( - - {renderStep()} - - )} - - + + {({ backgroundColor }) => ( + + {renderStep()} + + )} + ); } diff --git a/src/components/backup/BackupChooseProviderStep.tsx b/src/components/backup/BackupWalletPrompt.tsx similarity index 66% rename from src/components/backup/BackupChooseProviderStep.tsx rename to src/components/backup/BackupWalletPrompt.tsx index 38325639704..77071534f48 100644 --- a/src/components/backup/BackupChooseProviderStep.tsx +++ b/src/components/backup/BackupWalletPrompt.tsx @@ -1,7 +1,6 @@ -import React from 'react'; -import { useCreateBackup } from '@/components/backup/useCreateBackup'; +import React, { useCallback, useMemo } from 'react'; import { Bleed, Box, Inline, Inset, Separator, Stack, Text } from '@/design-system'; -import * as lang from '@/languages'; +import * as i18n from '@/languages'; import { ImgixImage } from '../images'; import WalletsAndBackupIcon from '@/assets/WalletsAndBackup.png'; import ManuallyBackedUpIcon from '@/assets/ManuallyBackedUp.png'; @@ -14,13 +13,13 @@ import { useNavigation } from '@/navigation'; import Routes from '@/navigation/routesNames'; import { SETTINGS_BACKUP_ROUTES } from '@/screens/SettingsSheet/components/Backups/routes'; import { useWallets } from '@/hooks'; -import walletTypes from '@/helpers/walletTypes'; +import WalletTypes from '@/helpers/walletTypes'; import walletBackupTypes from '@/helpers/walletBackupTypes'; -import { IS_ANDROID } from '@/env'; -import { GoogleDriveUserData, getGoogleAccountUserData, isCloudBackupAvailable, login } from '@/handlers/cloudBackup'; -import { WrappedAlert as Alert } from '@/helpers/alert'; -import { RainbowError, logger } from '@/logger'; -import { Linking } from 'react-native'; +import { useCreateBackup } from '@/components/backup/useCreateBackup'; +import { backupsStore, CloudBackupState } from '@/state/backups/backups'; +import { executeFnIfCloudBackupAvailable } from '@/model/backup'; +import { TextColor } from '@/design-system/color/palettes'; +import { CustomColor } from '@/design-system/color/useForegroundColor'; const imageSize = 72; @@ -28,67 +27,31 @@ export default function BackupSheetSectionNoProvider() { const { colors } = useTheme(); const { navigate, goBack } = useNavigation(); const { selectedWallet } = useWallets(); + const createBackup = useCreateBackup(); + const { status } = backupsStore(state => ({ + status: state.status, + })); - const { onSubmit, loading } = useCreateBackup({ - walletId: selectedWallet.id, - navigateToRoute: { - route: Routes.SETTINGS_SHEET, - params: { - screen: Routes.SETTINGS_SECTION_BACKUP, - }, - }, - }); - - const onCloudBackup = async () => { - if (loading !== 'none') { - return; - } - // NOTE: On Android we need to make sure the user is signed into a Google account before trying to backup - // otherwise we'll fake backup and it's confusing... - if (IS_ANDROID) { - try { - await login(); - getGoogleAccountUserData().then((accountDetails: GoogleDriveUserData | undefined) => { - if (!accountDetails) { - Alert.alert(lang.t(lang.l.back_up.errors.no_account_found)); - return; - } - }); - } catch (e) { - logger.error(new RainbowError('[BackupSheetSectionNoProvider]: No account found'), { - error: e, - }); - Alert.alert(lang.t(lang.l.back_up.errors.no_account_found)); - } - } else { - const isAvailable = await isCloudBackupAvailable(); - if (!isAvailable) { - Alert.alert( - lang.t(lang.l.modal.back_up.alerts.cloud_not_enabled.label), - lang.t(lang.l.modal.back_up.alerts.cloud_not_enabled.description), - [ - { - onPress: () => { - Linking.openURL('https://support.apple.com/en-us/HT204025'); - }, - text: lang.t(lang.l.modal.back_up.alerts.cloud_not_enabled.show_me), - }, - { - style: 'cancel', - text: lang.t(lang.l.modal.back_up.alerts.cloud_not_enabled.no_thanks), - }, - ] - ); - return; - } - } + const onCloudBackup = useCallback(() => { + // pop the bottom sheet, and navigate to the backup section inside settings sheet + goBack(); + navigate(Routes.SETTINGS_SHEET, { + screen: Routes.SETTINGS_SECTION_BACKUP, + initial: false, + }); - onSubmit({}); - }; + executeFnIfCloudBackupAvailable({ + fn: () => + createBackup({ + walletId: selectedWallet.id, + }), + logout: true, + }); + }, [createBackup, goBack, navigate, selectedWallet.id]); - const onManualBackup = async () => { + const onManualBackup = useCallback(async () => { const title = - selectedWallet?.imported && selectedWallet.type === walletTypes.privateKey + selectedWallet?.imported && selectedWallet.type === WalletTypes.privateKey ? (selectedWallet.addresses || [])[0].label : selectedWallet.name; @@ -102,13 +65,38 @@ export default function BackupSheetSectionNoProvider() { walletId: selectedWallet.id, }, }); - }; + }, [goBack, navigate, selectedWallet.addresses, selectedWallet.id, selectedWallet?.imported, selectedWallet.name, selectedWallet.type]); + + const isCloudBackupDisabled = useMemo(() => { + return status !== CloudBackupState.Ready && status !== CloudBackupState.NotAvailable; + }, [status]); + + const { color, text } = useMemo<{ text: string; color: TextColor | CustomColor }>(() => { + if (status === CloudBackupState.FailedToInitialize || status === CloudBackupState.NotAvailable) { + return { + text: i18n.t(i18n.l.back_up.cloud.statuses.not_enabled), + color: 'primary (Deprecated)', + }; + } + + if (status === CloudBackupState.Ready) { + return { + text: i18n.t(i18n.l.back_up.cloud.cloud_backup), + color: 'primary (Deprecated)', + }; + } + + return { + text: i18n.t(i18n.l.back_up.cloud.statuses.syncing), + color: 'yellow', + }; + }, [status]); return ( - {lang.t(lang.l.back_up.cloud.how_would_you_like_to_backup)} + {i18n.t(i18n.l.back_up.cloud.how_would_you_like_to_backup)} @@ -116,8 +104,7 @@ export default function BackupSheetSectionNoProvider() { - {/* replace this with BackUpMenuButton */} - + @@ -133,18 +120,18 @@ export default function BackupSheetSectionNoProvider() { marginRight={{ custom: -12 }} marginTop={{ custom: 0 }} marginBottom={{ custom: -8 }} - source={WalletsAndBackupIcon as Source} + source={WalletsAndBackupIcon} width={{ custom: imageSize }} size={imageSize} /> - - {lang.t(lang.l.back_up.cloud.cloud_backup)} + + {text} - {lang.t(lang.l.back_up.cloud.recommended_for_beginners)} + {i18n.t(i18n.l.back_up.cloud.recommended_for_beginners)} {' '} - {lang.t(lang.l.back_up.cloud.choose_backup_cloud_description, { + {i18n.t(i18n.l.back_up.cloud.choose_backup_cloud_description, { cloudPlatform, })} @@ -192,10 +179,10 @@ export default function BackupSheetSectionNoProvider() { size={imageSize} /> - {lang.t(lang.l.back_up.cloud.manual_backup)} + {i18n.t(i18n.l.back_up.cloud.manual_backup)} - {lang.t(lang.l.back_up.cloud.choose_backup_manual_description)} + {i18n.t(i18n.l.back_up.cloud.choose_backup_manual_description)} diff --git a/src/components/backup/ChooseBackupStep.tsx b/src/components/backup/ChooseBackupStep.tsx index 2f7b68cedf6..d08d4cdb0e2 100644 --- a/src/components/backup/ChooseBackupStep.tsx +++ b/src/components/backup/ChooseBackupStep.tsx @@ -6,26 +6,24 @@ import { useDimensions } from '@/hooks'; import { useNavigation } from '@/navigation'; import styled from '@/styled-thing'; import { margin, padding } from '@/styles'; -import { Box, Stack, Text } from '@/design-system'; -import { RouteProp, useRoute } from '@react-navigation/native'; +import { Box, Stack } from '@/design-system'; import { sharedCoolModalTopOffset } from '@/navigation/config'; -import { ImgixImage } from '../images'; +import { ImgixImage } from '@/components/images'; import MenuContainer from '@/screens/SettingsSheet/components/MenuContainer'; import Menu from '@/screens/SettingsSheet/components/Menu'; import { format } from 'date-fns'; import MenuItem from '@/screens/SettingsSheet/components/MenuItem'; import Routes from '@/navigation/routesNames'; -import { Backup, parseTimestampFromFilename } from '@/model/backup'; -import { RestoreSheetParams } from '@/screens/RestoreSheet'; +import { BackupFile, parseTimestampFromFilename } from '@/model/backup'; import { Source } from 'react-native-fast-image'; import { IS_ANDROID } from '@/env'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; -import useCloudBackups, { CloudBackupStep } from '@/hooks/useCloudBackups'; -import { Centered } from '../layout'; -import { cloudPlatform } from '@/utils/platform'; -import Spinner from '../Spinner'; -import ActivityIndicator from '../ActivityIndicator'; +import { Page } from '@/components/layout'; +import Spinner from '@/components/Spinner'; +import ActivityIndicator from '@/components/ActivityIndicator'; import { useTheme } from '@/theme'; +import { backupsStore, CloudBackupState, LoadingStates } from '@/state/backups/backups'; +import { titleForBackupState } from '@/screens/SettingsSheet/utils'; const Title = styled(RNText).attrs({ align: 'left', @@ -53,60 +51,27 @@ const Masthead = styled(Box).attrs({ }); export function ChooseBackupStep() { - const { - params: { fromSettings }, - } = useRoute>(); const { colors } = useTheme(); - const { isFetching, backups, userData, step, fetchBackups } = useCloudBackups(); + const { status, backups, mostRecentBackup } = backupsStore(state => ({ + status: state.status, + backups: state.backups, + mostRecentBackup: state.mostRecentBackup, + })); + + const isLoading = LoadingStates.includes(status); const { top } = useSafeAreaInsets(); const { height: deviceHeight } = useDimensions(); const { navigate } = useNavigation(); - const cloudBackups = backups.files - .filter(backup => { - if (IS_ANDROID) { - return !backup.name.match(/UserData/i); - } - - return backup.isFile && backup.size > 0 && !backup.name.match(/UserData/i); - }) - .sort((a, b) => { - return parseTimestampFromFilename(b.name) - parseTimestampFromFilename(a.name); - }); - - const mostRecentBackup = cloudBackups.reduce( - (prev, current) => { - if (!current) { - return prev; - } - - if (!prev) { - return current; - } - - const prevTimestamp = new Date(prev.lastModified).getTime(); - const currentTimestamp = new Date(current.lastModified).getTime(); - if (currentTimestamp > prevTimestamp) { - return current; - } - - return prev; - }, - undefined as Backup | undefined - ); - const onSelectCloudBackup = useCallback( - (selectedBackup: Backup) => { + (selectedBackup: BackupFile) => { navigate(Routes.RESTORE_CLOUD_SHEET, { - backups, - userData, selectedBackup, - fromSettings, }); }, - [navigate, userData, backups, fromSettings] + [navigate] ); const height = IS_ANDROID ? deviceHeight - top : deviceHeight - sharedCoolModalTopOffset - 48; @@ -132,7 +97,7 @@ export function ChooseBackupStep() { - {!isFetching && step === CloudBackupStep.FAILED && ( + {status === CloudBackupState.FailedToInitialize && ( backupsStore.getState().syncAndFetchBackups()} titleComponent={} /> )} - {!isFetching && !cloudBackups.length && step !== CloudBackupStep.FAILED && ( + {status === CloudBackupState.Ready && backups.files.length === 0 && ( + + + } + /> + + + - } /> + backupsStore.getState().syncAndFetchBackups()} + titleComponent={} + /> )} - {!isFetching && cloudBackups.length > 0 && ( + {status === CloudBackupState.Ready && backups.files.length > 0 && ( {mostRecentBackup && ( - - } - onPress={() => onSelectCloudBackup(mostRecentBackup)} - size={52} - width="full" - titleComponent={} - /> - + + + } + onPress={() => onSelectCloudBackup(mostRecentBackup)} + size={52} + width="full" + titleComponent={} + /> + + )} - - {cloudBackups.map( - backup => - backup.name !== mostRecentBackup?.name && ( + + + + {backups.files + .filter(backup => backup.name !== mostRecentBackup?.name) + .sort((a, b) => { + const timestampA = new Date(parseTimestampFromFilename(a.name)).getTime(); + const timestampB = new Date(parseTimestampFromFilename(b.name)).getTime(); + return timestampB - timestampA; + }) + .map(backup => ( + onSelectCloudBackup(backup)} + size={52} + width="full" + titleComponent={ + + } + /> + ))} + {backups.files.length === 1 && ( onSelectCloudBackup(backup)} + disabled size={52} - width="full" - titleComponent={ - - } + titleComponent={} /> - ) - )} + )} + + - {cloudBackups.length === 1 && ( + } + width="full" + onPress={() => backupsStore.getState().syncAndFetchBackups()} + titleComponent={} /> - )} - + + )} - {isFetching && ( - + {isLoading && ( + {android ? : } - - {lang.t(lang.l.back_up.cloud.fetching_backups, { - cloudPlatformName: cloudPlatform, - })} - - + {titleForBackupState[status]} + )} diff --git a/src/components/backup/CloudBackupProvider.tsx b/src/components/backup/CloudBackupProvider.tsx deleted file mode 100644 index 377e9d13a83..00000000000 --- a/src/components/backup/CloudBackupProvider.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import React, { PropsWithChildren, createContext, useContext, useEffect, useState } from 'react'; -import type { BackupUserData, CloudBackups } from '@/model/backup'; -import { - fetchAllBackups, - fetchUserDataFromCloud, - getGoogleAccountUserData, - isCloudBackupAvailable, - syncCloud, -} from '@/handlers/cloudBackup'; -import { RainbowError, logger } from '@/logger'; -import { IS_ANDROID } from '@/env'; - -type CloudBackupContext = { - isFetching: boolean; - backups: CloudBackups; - fetchBackups: () => Promise; - userData: BackupUserData | undefined; -}; - -const CloudBackupContext = createContext({} as CloudBackupContext); - -export function CloudBackupProvider({ children }: PropsWithChildren) { - const [isFetching, setIsFetching] = useState(false); - const [backups, setBackups] = useState({ - files: [], - }); - - const [userData, setUserData] = useState(); - - const fetchBackups = async () => { - try { - setIsFetching(true); - const isAvailable = await isCloudBackupAvailable(); - if (!isAvailable) { - logger.debug('[CloudBackupProvider]: Cloud backup is not available'); - setIsFetching(false); - return; - } - - if (IS_ANDROID) { - const gdata = await getGoogleAccountUserData(); - if (!gdata) { - return; - } - } - - logger.debug('[CloudBackupProvider]: Syncing with cloud'); - await syncCloud(); - - logger.debug('[CloudBackupProvider]: Fetching user data'); - const userData = await fetchUserDataFromCloud(); - setUserData(userData); - - logger.debug('[CloudBackupProvider]: Fetching all backups'); - const backups = await fetchAllBackups(); - - logger.debug(`[CloudBackupProvider]: Retrieved ${backups.files.length} backup files`); - setBackups(backups); - } catch (e) { - logger.error(new RainbowError('[CloudBackupProvider]: Failed to fetch all backups'), { - error: e, - }); - } - setIsFetching(false); - }; - - useEffect(() => { - fetchBackups(); - }, []); - - const value = { - isFetching, - backups, - fetchBackups, - userData, - }; - - return {children}; -} - -export function useCloudBackups() { - const context = useContext(CloudBackupContext); - if (context === null) { - throw new Error('useCloudBackups must be used within a CloudBackupProvider'); - } - return context; -} diff --git a/src/components/backup/RestoreCloudStep.tsx b/src/components/backup/RestoreCloudStep.tsx index e8bd83aa7a3..ce0774f2ec3 100644 --- a/src/components/backup/RestoreCloudStep.tsx +++ b/src/components/backup/RestoreCloudStep.tsx @@ -6,8 +6,7 @@ import WalletAndBackup from '@/assets/WalletsAndBackup.png'; import { KeyboardArea } from 'react-native-keyboard-area'; import { - Backup, - fetchBackupPassword, + BackupFile, getLocalBackupPassword, restoreCloudBackup, RestoreCloudBackupResultStates, @@ -17,10 +16,10 @@ import { cloudPlatform } from '@/utils/platform'; import { PasswordField } from '../fields'; import { Text } from '../text'; import { WrappedAlert as Alert } from '@/helpers/alert'; -import { cloudBackupPasswordMinLength, isCloudBackupPasswordValid, normalizeAndroidBackupFilename } from '@/handlers/cloudBackup'; +import { isCloudBackupPasswordValid, normalizeAndroidBackupFilename } from '@/handlers/cloudBackup'; import walletBackupTypes from '@/helpers/walletBackupTypes'; import { useDimensions, useInitializeWallet } from '@/hooks'; -import { useNavigation } from '@/navigation'; +import { Navigation, useNavigation } from '@/navigation'; import { addressSetSelected, setAllWalletsWithIdsAsBackedUp, walletsLoadState, walletsSetSelected } from '@/redux/wallets'; import Routes from '@/navigation/routesNames'; import styled from '@/styled-thing'; @@ -35,8 +34,16 @@ import RainbowButtonTypes from '../buttons/rainbow-button/RainbowButtonTypes'; import { RouteProp, useRoute } from '@react-navigation/native'; import { RestoreSheetParams } from '@/screens/RestoreSheet'; import { Source } from 'react-native-fast-image'; -import { useTheme } from '@/theme'; -import useCloudBackups from '@/hooks/useCloudBackups'; +import { ThemeContextProps, useTheme } from '@/theme'; +import { WalletLoadingStates } from '@/helpers/walletLoadingStates'; +import { isEmpty } from 'lodash'; +import { backupsStore } from '@/state/backups/backups'; +import { walletLoadingStore } from '@/state/walletLoading/walletLoading'; + +type ComponentProps = { + theme: ThemeContextProps; + color: ThemeContextProps['colors'][keyof ThemeContextProps['colors']]; +}; const Title = styled(Text).attrs({ size: 'big', @@ -45,7 +52,7 @@ const Title = styled(Text).attrs({ ...padding.object(12, 0, 0), }); -const DescriptionText = styled(Text).attrs(({ theme: { colors }, color }: any) => ({ +const DescriptionText = styled(Text).attrs(({ theme: { colors }, color }: ComponentProps) => ({ align: 'left', color: color || colors.alpha(colors.blueGreyDark, 0.5), lineHeight: 'looser', @@ -53,7 +60,7 @@ const DescriptionText = styled(Text).attrs(({ theme: { colors }, color }: any) = weight: 'medium', }))({}); -const ButtonText = styled(Text).attrs(({ theme: { colors }, color }: any) => ({ +const ButtonText = styled(Text).attrs(({ theme: { colors }, color }: ComponentProps) => ({ align: 'center', letterSpacing: 'rounded', color: color || colors.alpha(colors.blueGreyDark, 0.5), @@ -71,38 +78,46 @@ const Masthead = styled(Box).attrs({ }); const KeyboardSizeView = styled(KeyboardArea)({ - backgroundColor: ({ theme: { colors } }: any) => colors.transparent, + backgroundColor: ({ theme: { colors } }: ComponentProps) => colors.transparent, }); type RestoreCloudStepParams = { RestoreSheet: { - selectedBackup: Backup; + selectedBackup: BackupFile; }; }; export default function RestoreCloudStep() { const { params } = useRoute>(); + const { password } = backupsStore(state => ({ + password: state.password, + })); - const { userData } = useCloudBackups(); + const loadingState = walletLoadingStore(state => state.loadingState); const { selectedBackup } = params; const { isDarkMode } = useTheme(); - const [loading, setLoading] = useState(false); + const { canGoBack, goBack } = useNavigation(); + + const onRestoreSuccess = useCallback(() => { + while (canGoBack()) { + goBack(); + } + }, [canGoBack, goBack]); const dispatch = useDispatch(); const { width: deviceWidth, height: deviceHeight } = useDimensions(); - const { replace, navigate, getState: dangerouslyGetState, goBack } = useNavigation(); const [validPassword, setValidPassword] = useState(false); const [incorrectPassword, setIncorrectPassword] = useState(false); - const [password, setPassword] = useState(''); const passwordRef = useRef(null); const initializeWallet = useInitializeWallet(); useEffect(() => { const fetchPasswordIfPossible = async () => { - const pwd = await fetchBackupPassword(); + const pwd = await getLocalBackupPassword(); if (pwd) { - setPassword(pwd); + backupsStore.getState().setStoredPassword(pwd); + backupsStore.getState().setPassword(pwd); } }; fetchPasswordIfPossible(); @@ -118,35 +133,42 @@ export default function RestoreCloudStep() { }, [incorrectPassword, password]); const onPasswordChange = useCallback(({ nativeEvent: { text: inputText } }: { nativeEvent: { text: string } }) => { - setPassword(inputText); + backupsStore.getState().setPassword(inputText); setIncorrectPassword(false); }, []); const onSubmit = useCallback(async () => { - setLoading(true); + // NOTE: Localizing password to prevent an empty string from being saved if we re-render + const pwd = password.trim(); + let filename = selectedBackup.name; + + const prevWalletsState = await dispatch(walletsLoadState()); + try { if (!selectedBackup.name) { throw new Error('No backup file selected'); } - const prevWalletsState = await dispatch(walletsLoadState()); - + walletLoadingStore.setState({ + loadingState: WalletLoadingStates.RESTORING_WALLET, + }); const status = await restoreCloudBackup({ - password, - userData, - nameOfSelectedBackupFile: selectedBackup.name, + password: pwd, + backupFilename: filename, }); - if (status === RestoreCloudBackupResultStates.success) { // Store it in the keychain in case it was missing - const hasSavedPassword = await getLocalBackupPassword(); - if (!hasSavedPassword) { - await saveLocalBackupPassword(password); + if (backupsStore.getState().storedPassword !== pwd) { + await saveLocalBackupPassword(pwd); + } + + // Reset the storedPassword state for next restoration process + if (backupsStore.getState().storedPassword) { + backupsStore.getState().setStoredPassword(''); } InteractionManager.runAfterInteractions(async () => { const newWalletsState = await dispatch(walletsLoadState()); - let filename = selectedBackup.name; if (IS_ANDROID && filename) { filename = normalizeAndroidBackupFilename(filename); } @@ -188,14 +210,21 @@ export default function RestoreCloudStep() { const p2 = dispatch(addressSetSelected(firstAddress)); await Promise.all([p1, p2]); await initializeWallet(null, null, null, false, false, null, true, null); - - const operation = dangerouslyGetState()?.index === 1 ? navigate : replace; - operation(Routes.SWIPE_LAYOUT, { - screen: Routes.WALLET_SCREEN, - }); - - setLoading(false); }); + + onRestoreSuccess(); + backupsStore.getState().setPassword(''); + if (isEmpty(prevWalletsState)) { + Navigation.handleAction( + Routes.SWIPE_LAYOUT, + { + screen: Routes.WALLET_SCREEN, + }, + true + ); + } else { + Navigation.handleAction(Routes.WALLET_SCREEN, {}); + } } else { switch (status) { case RestoreCloudBackupResultStates.incorrectPassword: @@ -211,18 +240,17 @@ export default function RestoreCloudStep() { } } catch (e) { Alert.alert(lang.t('back_up.restore_cloud.error_while_restoring')); + } finally { + walletLoadingStore.setState({ + loadingState: null, + }); } - - setLoading(false); - }, [selectedBackup.name, password, userData, dispatch, initializeWallet, dangerouslyGetState, navigate, replace]); + }, [password, selectedBackup.name, dispatch, onRestoreSuccess, initializeWallet]); const onPasswordSubmit = useCallback(() => { validPassword && onSubmit(); }, [onSubmit, validPassword]); - const isPasswordValid = - (password !== '' && password.length < cloudBackupPasswordMinLength && !passwordRef?.current?.isFocused()) || incorrectPassword; - return ( @@ -248,8 +276,8 @@ export default function RestoreCloudStep() { ; }; }; -export type useCreateBackupStateType = 'none' | 'loading' | 'success' | 'error'; +type ConfirmBackupProps = { + password: string; +} & UseCreateBackupProps; -export enum BackupTypes { - Single = 'single', - All = 'all', -} - -export const useCreateBackup = ({ walletId, navigateToRoute }: UseCreateBackupProps) => { +export const useCreateBackup = () => { const dispatch = useDispatch(); const { navigate } = useNavigation(); - const { fetchBackups } = useCloudBackups(); const walletCloudBackup = useWalletCloudBackup(); const { wallets } = useWallets(); - const latestBackup = useMemo(() => findLatestBackUp(wallets), [wallets]); - const [loading, setLoading] = useState('none'); - - const [password, setPassword] = useState(''); const setLoadingStateWithTimeout = useCallback( - (state: useCreateBackupStateType, resetInMS = 2500) => { - setLoading(state); + ({ state, outOfSync = false, failInMs = 10_000 }: { state: CloudBackupState; outOfSync?: boolean; failInMs?: number }) => { + backupsStore.getState().setStatus(state); + if (outOfSync) { + setTimeout(() => { + backupsStore.getState().setStatus(CloudBackupState.Syncing); + }, 1_000); + } setTimeout(() => { - setLoading('none'); - }, resetInMS); + const currentState = backupsStore.getState().status; + if (currentState === state) { + backupsStore.getState().setStatus(CloudBackupState.Ready); + } + }, failInMs); }, - [setLoading] + [] + ); + + const onSuccess = useCallback( + async (password: string) => { + if (backupsStore.getState().storedPassword !== password) { + await saveLocalBackupPassword(password); + } + // Reset the storedPassword state for next backup + backupsStore.getState().setStoredPassword(''); + analytics.track('Backup Complete', { + category: 'backup', + label: cloudPlatform, + }); + setLoadingStateWithTimeout({ + state: CloudBackupState.Success, + outOfSync: true, + }); + backupsStore.getState().syncAndFetchBackups(); + }, + [setLoadingStateWithTimeout] ); - const onSuccess = useCallback(async () => { - const hasSavedPassword = await getLocalBackupPassword(); - if (!hasSavedPassword) { - await saveLocalBackupPassword(password); - } - analytics.track('Backup Complete', { - category: 'backup', - label: cloudPlatform, - }); - setLoadingStateWithTimeout('success'); - fetchBackups(); - }, [setLoadingStateWithTimeout, fetchBackups, password]); const onError = useCallback( - (msg: string) => { + (msg: string, isDamaged?: boolean) => { InteractionManager.runAfterInteractions(async () => { - DelayedAlert({ title: msg }, 500); - setLoadingStateWithTimeout('error', 5000); + if (isDamaged) { + showWalletErrorAlert(); + } else { + DelayedAlert({ title: msg }, 500); + } + setLoadingStateWithTimeout({ state: CloudBackupState.Error }); }); }, [setLoadingStateWithTimeout] ); const onConfirmBackup = useCallback( - async ({ password, type }: { password: string; type: BackupTypes }) => { + async ({ password, walletId, navigateToRoute }: ConfirmBackupProps) => { analytics.track('Tapped "Confirm Backup"'); - setLoading('loading'); + backupsStore.getState().setStatus(CloudBackupState.InProgress); - if (type === BackupTypes.All) { + if (typeof walletId === 'undefined') { if (!wallets) { - onError('Error loading wallets. Please try again.'); - setLoading('error'); + onError(i18n.t(i18n.l.back_up.errors.no_keys_found)); + backupsStore.getState().setStatus(CloudBackupState.Error); + return; + } + + const validWallets = Object.fromEntries(Object.entries(wallets).filter(([_, wallet]) => !wallet.damaged)); + if (Object.keys(validWallets).length === 0) { + onError(i18n.t(i18n.l.back_up.errors.no_keys_found), true); + backupsStore.getState().setStatus(CloudBackupState.Error); return; } + backupAllWalletsToCloud({ - wallets: wallets as AllRainbowWallets, + wallets: validWallets, password, - latestBackup, onError, onSuccess, dispatch, @@ -94,12 +114,6 @@ export const useCreateBackup = ({ walletId, navigateToRoute }: UseCreateBackupPr return; } - if (!walletId) { - onError('Wallet not found. Please try again.'); - setLoading('error'); - return; - } - await walletCloudBackup({ onError, onSuccess, @@ -111,13 +125,13 @@ export const useCreateBackup = ({ walletId, navigateToRoute }: UseCreateBackupPr navigate(navigateToRoute.route, navigateToRoute.params || {}); } }, - [walletId, walletCloudBackup, onError, onSuccess, navigateToRoute, wallets, latestBackup, dispatch, navigate] + [walletCloudBackup, onError, wallets, onSuccess, dispatch, navigate] ); - const getPassword = useCallback(async (): Promise => { + const getPassword = useCallback(async (props: UseCreateBackupProps): Promise => { const password = await getLocalBackupPassword(); if (password) { - setPassword(password); + backupsStore.getState().setStoredPassword(password); return password; } @@ -126,32 +140,36 @@ export const useCreateBackup = ({ walletId, navigateToRoute }: UseCreateBackupPr nativeScreen: true, step: walletBackupStepTypes.backup_cloud, onSuccess: async (password: string) => { - setPassword(password); - resolve(password); + return resolve(password); }, onCancel: async () => { - resolve(null); + return resolve(null); }, - walletId, + ...props, }); }); - }, [walletId]); + }, []); - const onSubmit = useCallback( - async ({ type = BackupTypes.Single }: { type?: BackupTypes }) => { - const password = await getPassword(); - if (password) { - onConfirmBackup({ - password, - type, + const createBackup = useCallback( + async (props: UseCreateBackupProps) => { + if (backupsStore.getState().status !== CloudBackupState.Ready) { + return false; + } + const password = await getPassword(props); + if (!password) { + setLoadingStateWithTimeout({ + state: CloudBackupState.Ready, }); - return true; + return false; } - setLoadingStateWithTimeout('error'); - return false; + onConfirmBackup({ + password, + ...props, + }); + return true; }, [getPassword, onConfirmBackup, setLoadingStateWithTimeout] ); - return { onSuccess, onError, onSubmit, loading }; + return createBackup; }; diff --git a/src/components/fields/PasswordField.tsx b/src/components/fields/PasswordField.tsx index 0925b29862c..6d28e81e802 100644 --- a/src/components/fields/PasswordField.tsx +++ b/src/components/fields/PasswordField.tsx @@ -1,14 +1,37 @@ import React, { forwardRef, useCallback, Ref } from 'react'; -import { useTheme } from '../../theme/ThemeContext'; +import { ThemeContextProps, useTheme } from '../../theme/ThemeContext'; import { Input } from '../inputs'; import { cloudBackupPasswordMinLength } from '@/handlers/cloudBackup'; import { useDimensions } from '@/hooks'; import styled from '@/styled-thing'; -import { padding } from '@/styles'; +import { padding, position } from '@/styles'; import ShadowStack from '@/react-native-shadow-stack'; import { Box } from '@/design-system'; import { TextInput, TextInputProps, View } from 'react-native'; import { IS_IOS, IS_ANDROID } from '@/env'; +import { Icon } from '../icons'; + +const FieldAccessoryBadgeSize = 22; +const FieldAccessoryBadgeWrapper = styled(ShadowStack).attrs( + ({ theme: { colors, isDarkMode }, color }: { theme: ThemeContextProps; color: string }) => ({ + ...position.sizeAsObject(FieldAccessoryBadgeSize), + borderRadius: FieldAccessoryBadgeSize, + shadows: [[0, 4, 12, isDarkMode ? colors.shadow : color, isDarkMode ? 0.1 : 0.4]], + }) +)({ + marginBottom: 12, + position: 'absolute', + right: 12, + top: 12, +}); + +function FieldAccessoryBadge({ color, name }: { color: string; name: string }) { + return ( + + + + ); +} const Container = styled(Box)({ width: '100%', @@ -53,9 +76,9 @@ interface PasswordFieldProps extends TextInputProps { } const PasswordField = forwardRef( - ({ password, returnKeyType = 'done', style, textContentType, ...props }, ref: Ref) => { + ({ password, isInvalid, returnKeyType = 'done', style, textContentType, ...props }, ref: Ref) => { const { width: deviceWidth } = useDimensions(); - const { isDarkMode } = useTheme(); + const { isDarkMode, colors } = useTheme(); const handleFocus = useCallback(() => { if (ref && 'current' in ref && ref.current) { @@ -67,6 +90,7 @@ const PasswordField = forwardRef( + {isInvalid && } ); diff --git a/src/components/floating-emojis/FloatingEmojis.js b/src/components/floating-emojis/FloatingEmojis.js deleted file mode 100644 index f4dc8342f50..00000000000 --- a/src/components/floating-emojis/FloatingEmojis.js +++ /dev/null @@ -1,156 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { Animated, View } from 'react-native'; -import FloatingEmoji from './FloatingEmoji'; -import GravityEmoji from './GravityEmoji'; -import { useTimeout } from '@/hooks'; -import { position } from '@/styles'; - -const EMPTY_ARRAY = []; -const getEmoji = emojis => Math.floor(Math.random() * emojis.length); -const getRandomNumber = (min, max) => Math.random() * (max - min) + min; - -const FloatingEmojis = ({ - centerVertically, - children, - disableHorizontalMovement, - disableRainbow, - disableVerticalMovement, - distance, - duration, - emojis, - fadeOut, - gravityEnabled, - marginTop, - opacity, - opacityThreshold, - range, - scaleTo, - setOnNewEmoji, - size, - wiggleFactor, - ...props -}) => { - const emojisArray = useMemo(() => (Array.isArray(emojis) ? emojis : [emojis]), [emojis]); - const [floatingEmojis, setEmojis] = useState(EMPTY_ARRAY); - const [startTimeout, stopTimeout] = useTimeout(); - const clearEmojis = useCallback(() => setEmojis(EMPTY_ARRAY), []); - - // 🚧️ TODO: 🚧️ - // Clear emojis if page navigatorPosition falls below 0.93 (which we should call like `pageTransitionThreshold` or something) - // otherwise, the FloatingEmojis look weird during stack transitions - - const onNewEmoji = useCallback( - (x, y) => { - // Set timeout to automatically clearEmojis after the latest one has finished animating - stopTimeout(); - startTimeout(clearEmojis, duration * 1.1); - - setEmojis(existingEmojis => { - const newEmoji = { - // if a user has smashed the button 7 times, they deserve a 🌈 rainbow - emojiToRender: - (existingEmojis.length + 1) % 7 === 0 && !disableRainbow - ? 'rainbow' - : emojisArray.length === 1 - ? emojisArray[0] - : emojisArray[getEmoji(emojisArray)], - x: x ? x - getRandomNumber(-20, 20) : getRandomNumber(...range), - y: y || 0, - }; - return [...existingEmojis, newEmoji]; - }); - }, - [clearEmojis, disableRainbow, duration, emojisArray, range, startTimeout, stopTimeout] - ); - - useEffect(() => { - setOnNewEmoji?.(onNewEmoji); - return () => setOnNewEmoji?.(undefined); - }, [setOnNewEmoji, onNewEmoji]); - - return ( - - {typeof children === 'function' ? children({ onNewEmoji }) : children} - - {gravityEnabled - ? floatingEmojis.map(({ emojiToRender, x, y }, index) => ( - - )) - : floatingEmojis.map(({ emojiToRender, x, y }, index) => ( - - ))} - - - ); -}; - -FloatingEmojis.propTypes = { - centerVertically: PropTypes.bool, - children: PropTypes.node, - disableHorizontalMovement: PropTypes.bool, - disableRainbow: PropTypes.bool, - disableVerticalMovement: PropTypes.bool, - distance: PropTypes.number, - duration: PropTypes.number, - emojis: PropTypes.arrayOf(PropTypes.string).isRequired, - fadeOut: PropTypes.bool, - gravityEnabled: PropTypes.bool, - marginTop: PropTypes.number, - opacity: PropTypes.oneOfType([PropTypes.number, PropTypes.object]), - opacityThreshold: PropTypes.number, - range: PropTypes.arrayOf(PropTypes.number), - scaleTo: PropTypes.number, - setOnNewEmoji: PropTypes.func, - size: PropTypes.string.isRequired, - wiggleFactor: PropTypes.number, -}; - -FloatingEmojis.defaultProps = { - distance: 130, - duration: 2000, - // Defaults the emoji to 👍️ (thumbs up). - // To view complete list of emojis compatible with this component, - // head to https://github.com/muan/unicode-emoji-json/blob/master/data-by-emoji.json - emojis: ['thumbs_up'], - fadeOut: true, - opacity: 1, - range: [0, 80], - scaleTo: 1, - size: 30, - wiggleFactor: 0.5, -}; - -export default FloatingEmojis; diff --git a/src/components/floating-emojis/FloatingEmojis.tsx b/src/components/floating-emojis/FloatingEmojis.tsx new file mode 100644 index 00000000000..7eccc8b69de --- /dev/null +++ b/src/components/floating-emojis/FloatingEmojis.tsx @@ -0,0 +1,151 @@ +import React, { useCallback, useEffect, useMemo, useState, ReactNode } from 'react'; +import { Animated, View, ViewProps } from 'react-native'; +import FloatingEmoji from './FloatingEmoji'; +import GravityEmoji from './GravityEmoji'; +import { useTimeout } from '@/hooks'; +import { position } from '@/styles'; +import { DebugLayout } from '@/design-system'; +import { DEVICE_HEIGHT, DEVICE_WIDTH } from '@/utils/deviceUtils'; +import { AbsolutePortal } from '../AbsolutePortal'; + +interface Emoji { + emojiToRender: string; + x: number; + y: number; +} + +interface FloatingEmojisProps extends Omit { + centerVertically?: boolean; + children?: ReactNode | ((props: { onNewEmoji: (x?: number, y?: number) => void }) => ReactNode); + disableHorizontalMovement?: boolean; + disableRainbow?: boolean; + disableVerticalMovement?: boolean; + distance?: number; + duration?: number; + emojis: string[]; + fadeOut?: boolean; + gravityEnabled?: boolean; + marginTop?: number; + opacity?: number | Animated.AnimatedInterpolation; + opacityThreshold?: number; + range?: [number, number]; + scaleTo?: number; + setOnNewEmoji?: (fn: ((x?: number, y?: number) => void) | undefined) => void; + size: number; + wiggleFactor?: number; +} + +const EMPTY_ARRAY: Emoji[] = []; +const getEmoji = (emojis: string[]) => Math.floor(Math.random() * emojis.length); +const getRandomNumber = (min: number, max: number) => Math.random() * (max - min) + min; + +const FloatingEmojis: React.FC = ({ + centerVertically, + children, + disableHorizontalMovement, + disableRainbow, + disableVerticalMovement, + distance = 130, + duration = 2000, + emojis, + fadeOut = true, + gravityEnabled, + marginTop, + opacity = 1, + opacityThreshold, + range: [rangeMin, rangeMax] = [0, 80], + scaleTo = 1, + setOnNewEmoji, + size = 30, + wiggleFactor = 0.5, + style, + ...props +}) => { + const emojisArray = useMemo(() => (Array.isArray(emojis) ? emojis : [emojis]), [emojis]); + const [floatingEmojis, setEmojis] = useState(EMPTY_ARRAY); + const [startTimeout, stopTimeout] = useTimeout(); + const clearEmojis = useCallback(() => setEmojis(EMPTY_ARRAY), []); + + // 🚧️ TODO: 🚧️ + // Clear emojis if page navigatorPosition falls below 0.93 (which we should call like `pageTransitionThreshold` or something) + // otherwise, the FloatingEmojis look weird during stack transitions + + const onNewEmoji = useCallback( + (x?: number, y?: number) => { + // Set timeout to automatically clearEmojis after the latest one has finished animating + stopTimeout(); + startTimeout(clearEmojis, duration * 1.1); + + setEmojis(existingEmojis => { + const newEmoji = { + emojiToRender: + (existingEmojis.length + 1) % 7 === 0 && !disableRainbow + ? 'rainbow' + : emojisArray.length === 1 + ? emojisArray[0] + : emojisArray[getEmoji(emojisArray)], + x: x !== undefined ? x - getRandomNumber(-20, 20) : getRandomNumber(rangeMin, rangeMax), + y: y || 0, + }; + return [...existingEmojis, newEmoji]; + }); + }, + [clearEmojis, disableRainbow, duration, emojisArray, rangeMin, rangeMax, startTimeout, stopTimeout] + ); + + useEffect(() => { + setOnNewEmoji?.(onNewEmoji); + return () => setOnNewEmoji?.(undefined); + }, [setOnNewEmoji, onNewEmoji]); + + return ( + + {typeof children === 'function' ? children({ onNewEmoji }) : children} + + + {gravityEnabled + ? floatingEmojis.map(({ emojiToRender, x, y }, index) => ( + + )) + : floatingEmojis.map(({ emojiToRender, x, y }, index) => ( + + ))} + + + + ); +}; + +export default FloatingEmojis; diff --git a/src/components/floating-emojis/GravityEmoji.tsx b/src/components/floating-emojis/GravityEmoji.tsx index 2bf06a3901f..0b1de95b47c 100644 --- a/src/components/floating-emojis/GravityEmoji.tsx +++ b/src/components/floating-emojis/GravityEmoji.tsx @@ -4,7 +4,9 @@ import { Emoji } from '../text'; interface GravityEmojiProps { distance: number; + duration: number; emoji: string; + index: number; left: number; size: number; top: number; diff --git a/src/components/remote-promo-sheet/runChecks.ts b/src/components/remote-promo-sheet/runChecks.ts index f83170eecce..9167de41182 100644 --- a/src/components/remote-promo-sheet/runChecks.ts +++ b/src/components/remote-promo-sheet/runChecks.ts @@ -1,7 +1,6 @@ import { IS_TEST } from '@/env'; -import { runFeatureUnlockChecks } from '@/handlers/walletReadyEvents'; +import { runFeaturesLocalCampaignAndBackupChecks } from '@/handlers/walletReadyEvents'; import { logger } from '@/logger'; -import { runLocalCampaignChecks } from '@/components/remote-promo-sheet/localCampaignChecks'; import { checkForRemotePromoSheet } from '@/components/remote-promo-sheet/checkForRemotePromoSheet'; import { useCallback, useEffect } from 'react'; import { InteractionManager } from 'react-native'; @@ -19,11 +18,7 @@ export const useRunChecks = ({ runChecksOnMount = true, walletReady }: { runChec return; } - const showedFeatureUnlock = await runFeatureUnlockChecks(); - if (showedFeatureUnlock) return; - - const showedLocalPromo = await runLocalCampaignChecks(); - if (showedLocalPromo) return; + if (await runFeaturesLocalCampaignAndBackupChecks()) return; if (!remotePromoSheets) { logger.debug('[useRunChecks]: remote promo sheets is disabled'); diff --git a/src/components/secret-display/SecretDisplaySection.tsx b/src/components/secret-display/SecretDisplaySection.tsx index 0ef93ba05e6..3cd37f05611 100644 --- a/src/components/secret-display/SecretDisplaySection.tsx +++ b/src/components/secret-display/SecretDisplaySection.tsx @@ -1,5 +1,4 @@ import { RouteProp, useRoute } from '@react-navigation/native'; -import { captureException } from '@sentry/react-native'; import React, { ReactNode, useCallback, useEffect, useState } from 'react'; import { createdWithBiometricError, identifyWalletType, loadPrivateKey, loadSeedPhraseAndMigrateIfNeeded } from '@/model/wallet'; import ActivityIndicator from '../ActivityIndicator'; @@ -25,6 +24,7 @@ import { useNavigation } from '@/navigation'; import { ImgixImage } from '../images'; import RoutesWithPlatformDifferences from '@/navigation/routesNames'; import { Source } from 'react-native-fast-image'; +import { backupsStore } from '@/state/backups/backups'; const MIN_HEIGHT = 740; @@ -63,6 +63,9 @@ export function SecretDisplaySection({ onSecretLoaded, onWalletTypeIdentified }: const { colors } = useTheme(); const { params } = useRoute>(); const { selectedWallet, wallets } = useWallets(); + const { backupProvider } = backupsStore(state => ({ + backupProvider: state.backupProvider, + })); const { onManuallyBackupWalletId } = useWalletManualBackup(); const { navigate } = useNavigation(); @@ -124,9 +127,12 @@ export function SecretDisplaySection({ onSecretLoaded, onWalletTypeIdentified }: const handleConfirmSaved = useCallback(() => { if (backupType === WalletBackupTypes.manual) { onManuallyBackupWalletId(walletId); + if (!backupProvider) { + backupsStore.getState().setBackupProvider(WalletBackupTypes.manual); + } navigate(RoutesWithPlatformDifferences.SETTINGS_SECTION_BACKUP); } - }, [backupType, walletId, onManuallyBackupWalletId, navigate]); + }, [backupType, onManuallyBackupWalletId, walletId, backupProvider, navigate]); const getIconForBackupType = useCallback(() => { if (isBackingUp) { diff --git a/src/design-system/components/Inline/Inline.tsx b/src/design-system/components/Inline/Inline.tsx index 5754bae6a93..3f93791cbc8 100644 --- a/src/design-system/components/Inline/Inline.tsx +++ b/src/design-system/components/Inline/Inline.tsx @@ -51,7 +51,7 @@ export function Inline({ > {wrap || !separator ? children - : Children.map(children, (child, index) => { + : Children.toArray(children).map((child, index) => { if (!child) return null; return ( <> diff --git a/src/handlers/cloudBackup.ts b/src/handlers/cloudBackup.ts index 1eb3f5be795..14347c42a75 100644 --- a/src/handlers/cloudBackup.ts +++ b/src/handlers/cloudBackup.ts @@ -1,14 +1,15 @@ import { sortBy } from 'lodash'; // @ts-expect-error ts-migrate(7016) FIXME: Could not find a declaration file for module 'reac... Remove this comment to see the full error message import RNCloudFs from 'react-native-cloud-fs'; -import { RAINBOW_MASTER_KEY } from 'react-native-dotenv'; import RNFS from 'react-native-fs'; import AesEncryptor from '../handlers/aesEncryption'; import { logger, RainbowError } from '@/logger'; import { IS_ANDROID, IS_IOS } from '@/env'; -import { CloudBackups } from '@/model/backup'; +import { BackupFile, CloudBackups } from '@/model/backup'; + const REMOTE_BACKUP_WALLET_DIR = 'rainbow.me/wallet-backups'; -const USERDATA_FILE = 'UserData.json'; +export const USERDATA_FILE = 'UserData.json'; + const encryptor = new AesEncryptor(); export const CLOUD_BACKUP_ERRORS = { @@ -65,13 +66,18 @@ export async function fetchAllBackups(): Promise { if (android) { await RNCloudFs.loginIfNeeded(); } - return RNCloudFs.listFiles({ + + const files = await RNCloudFs.listFiles({ scope: 'hidden', targetPath: REMOTE_BACKUP_WALLET_DIR, }); + + return { + files: files?.files?.filter((file: BackupFile) => normalizeAndroidBackupFilename(file.name) !== USERDATA_FILE) || [], + }; } -export async function encryptAndSaveDataToCloud(data: any, password: any, filename: any) { +export async function encryptAndSaveDataToCloud(data: Record, password: string, filename: string) { // Encrypt the data try { const encryptedData = await encryptor.encrypt(password, JSON.stringify(data)); @@ -100,6 +106,7 @@ export async function encryptAndSaveDataToCloud(data: any, password: any, filena scope, sourcePath: sourceUri, targetPath: destinationPath, + update: true, }); // Now we need to verify the file has been stored in the cloud const exists = await RNCloudFs.fileExists( @@ -201,19 +208,6 @@ export async function getDataFromCloud(backupPassword: any, filename: string | n throw error; } -export async function backupUserDataIntoCloud(data: any) { - const filename = USERDATA_FILE; - const password = RAINBOW_MASTER_KEY; - return encryptAndSaveDataToCloud(data, password, filename); -} - -export async function fetchUserDataFromCloud() { - const filename = USERDATA_FILE; - const password = RAINBOW_MASTER_KEY; - - return getDataFromCloud(password, filename); -} - export const cloudBackupPasswordMinLength = 8; export function isCloudBackupPasswordValid(password: any) { diff --git a/src/handlers/walletReadyEvents.ts b/src/handlers/walletReadyEvents.ts index 1cfa62be144..b62749da519 100644 --- a/src/handlers/walletReadyEvents.ts +++ b/src/handlers/walletReadyEvents.ts @@ -1,4 +1,3 @@ -import { IS_TESTING } from 'react-native-dotenv'; import { triggerOnSwipeLayout } from '../navigation/onNavigationStateChange'; import { getKeychainIntegrityState } from './localstorage/globalSettings'; import { runLocalCampaignChecks } from '@/components/remote-promo-sheet/localCampaignChecks'; @@ -6,18 +5,15 @@ import { EthereumAddress } from '@/entities'; import WalletBackupStepTypes from '@/helpers/walletBackupStepTypes'; import WalletTypes from '@/helpers/walletTypes'; import { featureUnlockChecks } from '@/featuresToUnlock'; -import { AllRainbowWallets, RainbowAccount, RainbowWallet } from '@/model/wallet'; +import { AllRainbowWallets, RainbowAccount } from '@/model/wallet'; import { Navigation } from '@/navigation'; import store from '@/redux/store'; import { checkKeychainIntegrity } from '@/redux/wallets'; import Routes from '@/navigation/routesNames'; import { logger } from '@/logger'; -import { checkWalletsForBackupStatus } from '@/screens/SettingsSheet/utils'; -import walletBackupTypes from '@/helpers/walletBackupTypes'; -import { InteractionManager } from 'react-native'; - -const BACKUP_SHEET_DELAY_MS = 3000; +import { IS_TEST } from '@/env'; +import { backupsStore, LoadingStates } from '@/state/backups/backups'; export const runKeychainIntegrityChecks = async () => { const keychainIntegrityState = await getKeychainIntegrityState(); @@ -26,60 +22,38 @@ export const runKeychainIntegrityChecks = async () => { } }; -export const runWalletBackupStatusChecks = () => { - const { - selected, - wallets, - }: { - wallets: AllRainbowWallets | null; - selected: RainbowWallet | undefined; - } = store.getState().wallets; - - // count how many visible, non-imported and non-readonly wallets are not backed up - if (!wallets) return; - - const { backupProvider } = checkWalletsForBackupStatus(wallets); - - const rainbowWalletsNotBackedUp = Object.values(wallets).filter(wallet => { - const hasVisibleAccount = wallet.addresses?.find((account: RainbowAccount) => account.visible); - return ( - !wallet.imported && - !!hasVisibleAccount && - wallet.type !== WalletTypes.readOnly && - wallet.type !== WalletTypes.bluetooth && - !wallet.backedUp - ); +const delay = (ms: number) => + new Promise(resolve => { + setTimeout(resolve, ms); }); - if (!rainbowWalletsNotBackedUp.length) return; - - logger.debug('[walletReadyEvents]: there is a rainbow wallet not backed up'); +const promptForBackupOnceReadyOrNotAvailable = async (): Promise => { + const { status } = backupsStore.getState(); + if (LoadingStates.includes(status)) { + await delay(1000); + return promptForBackupOnceReadyOrNotAvailable(); + } - const hasSelectedWallet = rainbowWalletsNotBackedUp.find(notBackedUpWallet => notBackedUpWallet.id === selected!.id); - logger.debug('[walletReadyEvents]: rainbow wallet not backed up that is selected?', { - hasSelectedWallet, - }); + logger.debug(`[walletReadyEvents]: BackupSheet: showing backup now sheet for selected wallet`); + triggerOnSwipeLayout(() => + Navigation.handleAction(Routes.BACKUP_SHEET, { + step: WalletBackupStepTypes.backup_prompt, + }) + ); + return true; +}; - // if one of them is selected, show the default BackupSheet - if (selected && hasSelectedWallet && IS_TESTING !== 'true') { - let stepType: string = WalletBackupStepTypes.no_provider; - if (backupProvider === walletBackupTypes.cloud) { - stepType = WalletBackupStepTypes.backup_now_to_cloud; - } else if (backupProvider === walletBackupTypes.manual) { - stepType = WalletBackupStepTypes.backup_now_manually; - } +export const runWalletBackupStatusChecks = async (): Promise => { + const { selected } = store.getState().wallets; + if (!selected || IS_TEST) return false; - setTimeout(() => { - logger.debug(`[walletReadyEvents]: showing ${stepType} backup sheet for selected wallet`); - triggerOnSwipeLayout(() => - Navigation.handleAction(Routes.BACKUP_SHEET, { - step: stepType, - }) - ); - }, BACKUP_SHEET_DELAY_MS); - return; + const selectedWalletNeedsBackedUp = + !selected.backedUp && !selected.damaged && selected.type !== WalletTypes.readOnly && selected.type !== WalletTypes.bluetooth; + if (selectedWalletNeedsBackedUp) { + logger.debug('[walletReadyEvents]: Selected wallet is not backed up, prompting backup sheet'); + return promptForBackupOnceReadyOrNotAvailable(); } - return; + return false; }; export const runFeatureUnlockChecks = async (): Promise => { @@ -107,19 +81,24 @@ export const runFeatureUnlockChecks = async (): Promise => { // short circuits once the first feature is unlocked for (const featureUnlockCheck of featureUnlockChecks) { - InteractionManager.runAfterInteractions(async () => { - const unlockNow = await featureUnlockCheck(walletsToCheck); - if (unlockNow) { - return true; - } - }); + const unlockNow = await featureUnlockCheck(walletsToCheck); + if (unlockNow) { + return true; + } } return false; }; -export const runFeatureAndLocalCampaignChecks = async () => { - const showingFeatureUnlock: boolean = await runFeatureUnlockChecks(); - if (!showingFeatureUnlock) { - await runLocalCampaignChecks(); +export const runFeaturesLocalCampaignAndBackupChecks = async () => { + if (await runFeatureUnlockChecks()) { + return true; } + if (await runLocalCampaignChecks()) { + return true; + } + if (await runWalletBackupStatusChecks()) { + return true; + } + + return false; }; diff --git a/src/helpers/walletBackupStepTypes.ts b/src/helpers/walletBackupStepTypes.ts index d3afc9598a2..2fbf0cb8f9e 100644 --- a/src/helpers/walletBackupStepTypes.ts +++ b/src/helpers/walletBackupStepTypes.ts @@ -1,5 +1,5 @@ export default { - no_provider: 'no_provider', + backup_prompt: 'backup_prompt', backup_manual: 'backup_manual', backup_cloud: 'backup_cloud', restore_from_backup: 'restore_from_backup', diff --git a/src/helpers/walletLoadingStates.ts b/src/helpers/walletLoadingStates.ts new file mode 100644 index 00000000000..a9cdd674d2e --- /dev/null +++ b/src/helpers/walletLoadingStates.ts @@ -0,0 +1,10 @@ +import * as i18n from '@/languages'; + +export const WalletLoadingStates = { + BACKING_UP_WALLET: i18n.t('loading.backing_up'), + CREATING_WALLET: i18n.t('loading.creating_wallet'), + IMPORTING_WALLET: i18n.t('loading.importing_wallet'), + RESTORING_WALLET: i18n.t('loading.restoring'), +} as const; + +export type WalletLoadingStates = (typeof WalletLoadingStates)[keyof typeof WalletLoadingStates]; diff --git a/src/hooks/useActiveRoute.ts b/src/hooks/useActiveRoute.ts new file mode 100644 index 00000000000..523eb741004 --- /dev/null +++ b/src/hooks/useActiveRoute.ts @@ -0,0 +1,16 @@ +import { Navigation, useNavigation } from '@/navigation'; +import { useEffect, useState } from 'react'; + +export const useActiveRoute = () => { + const { addListener } = useNavigation(); + const [activeRoute, setActiveRoute] = useState(Navigation.getActiveRoute()); + + useEffect(() => { + const unsubscribe = addListener('state', () => { + setActiveRoute(Navigation.getActiveRoute()); + }); + return unsubscribe; + }, [addListener]); + + return activeRoute?.name; +}; diff --git a/src/hooks/useCloudBackups.ts b/src/hooks/useCloudBackups.ts deleted file mode 100644 index 506e669c682..00000000000 --- a/src/hooks/useCloudBackups.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { useEffect, useState } from 'react'; -import type { BackupUserData, CloudBackups } from '../model/backup'; -import { fetchAllBackups, fetchUserDataFromCloud, isCloudBackupAvailable, syncCloud } from '@/handlers/cloudBackup'; -import { RainbowError, logger } from '@/logger'; - -export const enum CloudBackupStep { - IDLE, - SYNCING, - FETCHING_USER_DATA, - FETCHING_ALL_BACKUPS, - FAILED, -} - -export default function useCloudBackups() { - const [isFetching, setIsFetching] = useState(false); - const [backups, setBackups] = useState({ - files: [], - }); - - const [step, setStep] = useState(CloudBackupStep.SYNCING); - - const [userData, setUserData] = useState(); - - const fetchBackups = async () => { - try { - setIsFetching(true); - const isAvailable = isCloudBackupAvailable(); - if (!isAvailable) { - logger.debug('[useCloudBackups]: Cloud backup is not available'); - setIsFetching(false); - setStep(CloudBackupStep.IDLE); - return; - } - - setStep(CloudBackupStep.SYNCING); - logger.debug('[useCloudBackups]: Syncing with cloud'); - await syncCloud(); - - setStep(CloudBackupStep.FETCHING_USER_DATA); - logger.debug('[useCloudBackups]: Fetching user data'); - const userData = await fetchUserDataFromCloud(); - setUserData(userData); - - setStep(CloudBackupStep.FETCHING_ALL_BACKUPS); - logger.debug('[useCloudBackups]: Fetching all backups'); - const backups = await fetchAllBackups(); - - logger.debug(`[useCloudBackups]: Retrieved ${backups.files.length} backup files`); - setBackups(backups); - setStep(CloudBackupStep.IDLE); - } catch (e) { - setStep(CloudBackupStep.FAILED); - logger.error(new RainbowError('[useCloudBackups]: Failed to fetch all backups'), { - error: e, - }); - } - setIsFetching(false); - }; - - useEffect(() => { - fetchBackups(); - }, []); - - return { - isFetching, - backups, - fetchBackups, - userData, - step, - }; -} diff --git a/src/hooks/useImportingWallet.ts b/src/hooks/useImportingWallet.ts index d0f92e12a3a..f1cde6313da 100644 --- a/src/hooks/useImportingWallet.ts +++ b/src/hooks/useImportingWallet.ts @@ -3,7 +3,6 @@ import lang from 'i18n-js'; import { keys } from 'lodash'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { InteractionManager, Keyboard, TextInput } from 'react-native'; -import { IS_TESTING } from 'react-native-dotenv'; import { useDispatch } from 'react-redux'; import useAccountSettings from './useAccountSettings'; import { fetchENSAvatar } from './useENSAvatar'; @@ -29,9 +28,9 @@ import { deriveAccountFromWalletInput } from '@/utils/wallet'; import { logger, RainbowError } from '@/logger'; import { handleReviewPromptAction } from '@/utils/reviewAlert'; import { ReviewPromptAction } from '@/storage/schema'; -import { checkWalletsForBackupStatus } from '@/screens/SettingsSheet/utils'; -import walletBackupTypes from '@/helpers/walletBackupTypes'; import { ChainId } from '@/state/backendNetworks/types'; +import { backupsStore } from '@/state/backups/backups'; +import { IS_TEST } from '@/env'; export default function useImportingWallet({ showImportModal = true } = {}) { const { accountAddress } = useAccountSettings(); @@ -52,6 +51,10 @@ export default function useImportingWallet({ showImportModal = true } = {}) { const { updateWalletENSAvatars } = useWalletENSAvatar(); const profilesEnabled = useExperimentalFlag(PROFILES); + const { backupProvider } = backupsStore(state => ({ + backupProvider: state.backupProvider, + })); + const inputRef = useRef(null); const { handleFocus } = useMagicAutofocus(inputRef); @@ -291,7 +294,7 @@ export default function useImportingWallet({ showImportModal = true } = {}) { image, true ); - await dispatch(walletsLoadState(profilesEnabled)); + await dispatch(walletsLoadState()); handleSetImporting(false); } else { const previousWalletCount = keys(wallets).length; @@ -346,19 +349,11 @@ export default function useImportingWallet({ showImportModal = true } = {}) { isValidBluetoothDeviceId(input) ) ) { - const { backupProvider } = checkWalletsForBackupStatus(wallets); - - let stepType: string = WalletBackupStepTypes.no_provider; - if (backupProvider === walletBackupTypes.cloud) { - stepType = WalletBackupStepTypes.backup_now_to_cloud; - } else if (backupProvider === walletBackupTypes.manual) { - stepType = WalletBackupStepTypes.backup_now_manually; - } - - IS_TESTING !== 'true' && + if (!IS_TEST) { Navigation.handleAction(Routes.BACKUP_SHEET, { - step: stepType, + step: WalletBackupStepTypes.backup_prompt, }); + } } }, 1000); @@ -414,6 +409,7 @@ export default function useImportingWallet({ showImportModal = true } = {}) { showImportModal, profilesEnabled, dangerouslyGetParent, + backupProvider, ]); return { diff --git a/src/hooks/useInitializeWallet.ts b/src/hooks/useInitializeWallet.ts index 5f934050e9d..80aa4e903ea 100644 --- a/src/hooks/useInitializeWallet.ts +++ b/src/hooks/useInitializeWallet.ts @@ -68,7 +68,7 @@ export default function useInitializeWallet() { if (shouldRunMigrations && !seedPhrase) { logger.debug('[useInitializeWallet]: shouldRunMigrations && !seedPhrase? => true'); - await dispatch(walletsLoadState(profilesEnabled)); + await dispatch(walletsLoadState()); logger.debug('[useInitializeWallet]: walletsLoadState call #1'); await runMigrations(); logger.debug('[useInitializeWallet]: done with migrations'); @@ -110,7 +110,7 @@ export default function useInitializeWallet() { if (seedPhrase || isNew) { logger.debug('[useInitializeWallet]: walletsLoadState call #2'); - await dispatch(walletsLoadState(profilesEnabled)); + await dispatch(walletsLoadState()); } if (isNil(walletAddress)) { diff --git a/src/hooks/useManageCloudBackups.ts b/src/hooks/useManageCloudBackups.ts index 141f26b7f4e..323fd1d62db 100644 --- a/src/hooks/useManageCloudBackups.ts +++ b/src/hooks/useManageCloudBackups.ts @@ -3,12 +3,21 @@ import lang from 'i18n-js'; import { useDispatch } from 'react-redux'; import { cloudPlatform } from '../utils/platform'; import { WrappedAlert as Alert } from '@/helpers/alert'; -import { GoogleDriveUserData, getGoogleAccountUserData, deleteAllBackups, logoutFromGoogleDrive } from '@/handlers/cloudBackup'; -import { clearAllWalletsBackupStatus, updateWalletBackupStatusesBasedOnCloudUserData } from '@/redux/wallets'; +import { + GoogleDriveUserData, + getGoogleAccountUserData, + deleteAllBackups, + logoutFromGoogleDrive as logout, + login, +} from '@/handlers/cloudBackup'; +import { clearAllWalletsBackupStatus } from '@/redux/wallets'; import { showActionSheetWithOptions } from '@/utils'; import { IS_ANDROID } from '@/env'; import { RainbowError, logger } from '@/logger'; import * as i18n from '@/languages'; +import { backupsStore, CloudBackupState } from '@/state/backups/backups'; +import * as keychain from '@/keychain'; +import { authenticateWithPIN } from '@/handlers/authentication'; export default function useManageCloudBackups() { const dispatch = useDispatch(); @@ -48,10 +57,21 @@ export default function useManageCloudBackups() { await dispatch(clearAllWalletsBackupStatus()); }; + const logoutFromGoogleDrive = async () => { + await logout(); + backupsStore.setState({ + backupProvider: undefined, + backups: { files: [] }, + mostRecentBackup: undefined, + status: CloudBackupState.NotAvailable, + }); + }; + const loginToGoogleDrive = async () => { - await dispatch(updateWalletBackupStatusesBasedOnCloudUserData()); try { + await login(); const accountDetails = await getGoogleAccountUserData(); + backupsStore.getState().syncAndFetchBackups(); setAccountDetails(accountDetails ?? undefined); } catch (error) { logger.error(new RainbowError(`[useManageCloudBackups]: Logging into Google Drive failed.`), { @@ -78,14 +98,36 @@ export default function useManageCloudBackups() { }, async (buttonIndex: any) => { if (buttonIndex === 0) { - if (IS_ANDROID) { - logoutFromGoogleDrive(); - setAccountDetails(undefined); - } - removeBackupStateFromAllWallets(); + try { + let userPIN: string | undefined; + const hasBiometricsEnabled = await keychain.getSupportedBiometryType(); + if (IS_ANDROID && !hasBiometricsEnabled) { + try { + userPIN = (await authenticateWithPIN()) ?? undefined; + } catch (e) { + Alert.alert(i18n.t(i18n.l.back_up.wrong_pin)); + return; + } + } - await deleteAllBackups(); - Alert.alert(lang.t('back_up.backup_deleted_successfully')); + // Prompt for authentication before allowing them to delete backups + await keychain.getAllKeys(); + + if (IS_ANDROID) { + logoutFromGoogleDrive(); + setAccountDetails(undefined); + } + removeBackupStateFromAllWallets(); + + await deleteAllBackups(); + Alert.alert(lang.t('back_up.backup_deleted_successfully')); + } catch (e) { + logger.error(new RainbowError(`[useManageCloudBackups]: Error deleting all backups`), { + error: (e as Error).message, + }); + + Alert.alert(lang.t('back_up.errors.keychain_access')); + } } } ); @@ -94,7 +136,7 @@ export default function useManageCloudBackups() { if (_buttonIndex === 1 && IS_ANDROID) { logoutFromGoogleDrive(); setAccountDetails(undefined); - removeBackupStateFromAllWallets().then(() => loginToGoogleDrive()); + loginToGoogleDrive(); } } ); diff --git a/src/hooks/useUpdateEmoji.ts b/src/hooks/useUpdateEmoji.ts index d38f229ae20..7a6781788b0 100644 --- a/src/hooks/useUpdateEmoji.ts +++ b/src/hooks/useUpdateEmoji.ts @@ -17,11 +17,11 @@ export default function useUpdateEmoji() { const saveInfo = useCallback( async (name: string, color: number) => { const walletId = selectedWallet.id; - const newWallets: typeof wallets = { + const newWallets = { ...wallets, [walletId]: { ...wallets![walletId], - addresses: wallets![walletId].addresses.map((singleAddress: { address: string }) => + addresses: wallets![walletId].addresses.map(singleAddress => singleAddress.address.toLowerCase() === accountAddress.toLowerCase() ? { ...singleAddress, diff --git a/src/hooks/useWalletCloudBackup.ts b/src/hooks/useWalletCloudBackup.ts index 57b9caac681..cb5d6350a5e 100644 --- a/src/hooks/useWalletCloudBackup.ts +++ b/src/hooks/useWalletCloudBackup.ts @@ -1,16 +1,14 @@ -import { captureException } from '@sentry/react-native'; -import lang from 'i18n-js'; import { values } from 'lodash'; -import { useCallback, useMemo } from 'react'; +import { useCallback } from 'react'; import { Linking } from 'react-native'; import { useDispatch } from 'react-redux'; -import { addWalletToCloudBackup, backupWalletToCloud, findLatestBackUp } from '../model/backup'; +import { backupWalletToCloud } from '../model/backup'; import { setWalletBackedUp } from '../redux/wallets'; import { cloudPlatform } from '../utils/platform'; import useWallets from './useWallets'; import { WrappedAlert as Alert } from '@/helpers/alert'; import { analytics } from '@/analytics'; -import { CLOUD_BACKUP_ERRORS, isCloudBackupAvailable } from '@/handlers/cloudBackup'; +import { CLOUD_BACKUP_ERRORS, getGoogleAccountUserData, isCloudBackupAvailable, login } from '@/handlers/cloudBackup'; import WalletBackupTypes from '@/helpers/walletBackupTypes'; import { logger, RainbowError } from '@/logger'; import { getSupportedBiometryType } from '@/keychain'; @@ -41,7 +39,6 @@ export function getUserError(e: Error) { export default function useWalletCloudBackup() { const dispatch = useDispatch(); const { wallets } = useWallets(); - const latestBackup = useMemo(() => findLatestBackUp(wallets), [wallets]); const walletCloudBackup = useCallback( async ({ @@ -52,36 +49,63 @@ export default function useWalletCloudBackup() { }: { handleNoLatestBackup?: () => void; handlePasswordNotFound?: () => void; - onError?: (error: string) => void; - onSuccess?: () => void; + onError?: (error: string, isDamaged?: boolean) => void; + onSuccess?: (password: string) => void; password: string; walletId: string; }): Promise => { - const isAvailable = await isCloudBackupAvailable(); - if (!isAvailable) { - analytics.track('iCloud not enabled', { - category: 'backup', - }); - Alert.alert(lang.t('modal.back_up.alerts.cloud_not_enabled.label'), lang.t('modal.back_up.alerts.cloud_not_enabled.description'), [ - { - onPress: () => { - Linking.openURL('https://support.apple.com/en-us/HT204025'); - analytics.track('View how to Enable iCloud', { - category: 'backup', - }); - }, - text: lang.t('modal.back_up.alerts.cloud_not_enabled.show_me'), - }, - { - onPress: () => { - analytics.track('Ignore how to enable iCloud', { - category: 'backup', - }); - }, - style: 'cancel', - text: lang.t('modal.back_up.alerts.cloud_not_enabled.no_thanks'), - }, - ]); + if (IS_ANDROID) { + try { + await login(); + const userData = await getGoogleAccountUserData(); + if (!userData) { + Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); + return false; + } + } catch (e) { + logger.error(new RainbowError('[BackupSheetSectionNoProvider]: No account found'), { + error: e, + }); + Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); + return false; + } + } else { + const isAvailable = await isCloudBackupAvailable(); + if (!isAvailable) { + analytics.track('iCloud not enabled', { + category: 'backup', + }); + Alert.alert( + i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.label), + i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.description), + [ + { + onPress: () => { + Linking.openURL('https://support.apple.com/en-us/HT204025'); + analytics.track('View how to Enable iCloud', { + category: 'backup', + }); + }, + text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.show_me), + }, + { + onPress: () => { + analytics.track('Ignore how to enable iCloud', { + category: 'backup', + }); + }, + style: 'cancel', + text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.no_thanks), + }, + ] + ); + return false; + } + } + + const wallet = wallets?.[walletId]; + if (wallet?.damaged) { + onError?.(i18n.t(i18n.l.back_up.errors.damaged_wallet), true); return false; } @@ -101,23 +125,14 @@ export default function useWalletCloudBackup() { logger.debug('[useWalletCloudBackup]: password fetched correctly'); let updatedBackupFile = null; + try { - if (!latestBackup) { - logger.debug(`[useWalletCloudBackup]: backing up to ${cloudPlatform}: ${wallets![walletId]}`); - updatedBackupFile = await backupWalletToCloud({ - password, - wallet: wallets![walletId], - userPIN, - }); - } else { - logger.debug(`[useWalletCloudBackup]: adding wallet to ${cloudPlatform} backup: ${wallets![walletId]}`); - updatedBackupFile = await addWalletToCloudBackup({ - password, - wallet: wallets![walletId], - filename: latestBackup, - userPIN, - }); - } + logger.debug(`[useWalletCloudBackup]: backing up to ${cloudPlatform}: ${(wallets || {})[walletId]}`); + updatedBackupFile = await backupWalletToCloud({ + password, + wallet: (wallets || {})[walletId], + userPIN, + }); } catch (e: any) { const userError = getUserError(e); !!onError && onError(userError); @@ -134,7 +149,7 @@ export default function useWalletCloudBackup() { logger.debug('[useWalletCloudBackup]: backup completed!'); await dispatch(setWalletBackedUp(walletId, WalletBackupTypes.cloud, updatedBackupFile)); logger.debug('[useWalletCloudBackup]: backup saved everywhere!'); - !!onSuccess && onSuccess(); + !!onSuccess && onSuccess(password); return true; } catch (e) { logger.error(new RainbowError(`[useWalletCloudBackup]: error while trying to save wallet backup state: ${e}`)); @@ -148,7 +163,7 @@ export default function useWalletCloudBackup() { return false; }, - [dispatch, latestBackup, wallets] + [dispatch, wallets] ); return walletCloudBackup; diff --git a/src/hooks/useWallets.ts b/src/hooks/useWallets.ts index 38363886917..20de06f22a1 100644 --- a/src/hooks/useWallets.ts +++ b/src/hooks/useWallets.ts @@ -5,14 +5,12 @@ import { RainbowWallet } from '@/model/wallet'; import { AppState } from '@/redux/store'; const walletSelector = createSelector( - ({ wallets: { isWalletLoading, selected = {} as RainbowWallet, walletNames, wallets } }: AppState) => ({ - isWalletLoading, - selectedWallet: selected as any, + ({ wallets: { selected = {} as RainbowWallet, walletNames, wallets } }: AppState) => ({ + selectedWallet: selected, walletNames, wallets, }), - ({ isWalletLoading, selectedWallet, walletNames, wallets }) => ({ - isWalletLoading, + ({ selectedWallet, walletNames, wallets }) => ({ selectedWallet, walletNames, wallets, @@ -20,13 +18,12 @@ const walletSelector = createSelector( ); export default function useWallets() { - const { isWalletLoading, selectedWallet, walletNames, wallets } = useSelector(walletSelector); + const { selectedWallet, walletNames, wallets } = useSelector(walletSelector); return { isDamaged: selectedWallet?.damaged, isReadOnlyWallet: selectedWallet.type === WalletTypes.readOnly, isHardwareWallet: !!selectedWallet.deviceId, - isWalletLoading, selectedWallet, walletNames, wallets, diff --git a/src/languages/en_US.json b/src/languages/en_US.json index 040e9da9ab7..5df25761977 100644 --- a/src/languages/en_US.json +++ b/src/languages/en_US.json @@ -96,7 +96,8 @@ "generic": "Error while trying to backup. Error code: %{errorCodes}", "no_keys_found": "No keys found. Please try again.", "backup_not_found": "Backup not found. Please try again.", - "no_account_found": "Unable to retrieve backup files. Make sure you're logged in." + "no_account_found": "Unable to retrieve backup files. Make sure you're logged in.", + "damaged_wallet": "Unable to backup wallet. Missing keychain data." }, "wrong_pin": "The PIN code you entered was incorrect and we can't make a backup. Please try again with the correct code.", "already_backed_up": { @@ -115,6 +116,8 @@ "no_backups": "No backups found", "failed_to_fetch_backups": "Failed to fetch backups", "retry": "Retry", + "refresh": "Refresh", + "syncing_cloud_store": "Syncing to %{cloudPlatformName}", "fetching_backups": "Retrieving backups from %{cloudPlatformName}", "back_up_to_platform": "Back up to %{cloudPlatformName}", "restore_from_platform": "Restore from %{cloudPlatformName}", @@ -137,7 +140,7 @@ "choose_backup_cloud_description": "Securely back up your wallet to %{cloudPlatform} so you can restore it if you lose your device or get a new one.", "choose_backup_manual_description": "Back up your wallet manually by saving your secret phrase in a secure location.", "enable_cloud_backups_description": "If you prefer to back up your wallets manually, you can do so below.", - "latest_backup": "Last Backup: %{date}", + "latest_backup": "Latest Backup: %{date}", "back_up_all_wallets_to_cloud": "Back Up All Wallets to %{cloudPlatformName}", "most_recent_backup": "Most Recent Backup", "out_of_date": "Out of Date", @@ -145,6 +148,12 @@ "older_backups": "Older Backups", "no_older_backups": "No Older Backups", "older_backups_title": "%{date} at %{time}", + "statuses": { + "not_enabled": "Not Enabled", + "syncing": "Syncing", + "out_of_date": "Out of Date", + "up_to_date": "Up to Date" + }, "password": { "a_password_youll_remember_part_one": "This password is", "not": "not", @@ -1220,6 +1229,12 @@ "check_out_this_wallet": "Check out this wallet's collectibles on 🌈 Rainbow at %{showcaseUrl}" } }, + "loading": { + "backing_up": "Backing up...", + "creating_wallet": "Creating wallet...", + "importing_wallet": "Importing...", + "restoring": "Restoring..." + }, "message": { "click_to_copy_to_clipboard": "Click to copy to clipboard", "coming_soon": "Coming soon...", diff --git a/src/model/backup.ts b/src/model/backup.ts index 2eb50a7c297..c838796664d 100644 --- a/src/model/backup.ts +++ b/src/model/backup.ts @@ -1,15 +1,23 @@ import AsyncStorage from '@react-native-async-storage/async-storage'; -import { NativeModules } from 'react-native'; +import { NativeModules, Linking } from 'react-native'; import { captureException } from '@sentry/react-native'; import { endsWith } from 'lodash'; -import { CLOUD_BACKUP_ERRORS, encryptAndSaveDataToCloud, getDataFromCloud } from '@/handlers/cloudBackup'; +import { + CLOUD_BACKUP_ERRORS, + encryptAndSaveDataToCloud, + getDataFromCloud, + isCloudBackupAvailable, + getGoogleAccountUserData, + login, + logoutFromGoogleDrive, + normalizeAndroidBackupFilename, +} from '@/handlers/cloudBackup'; +import { Alert as NativeAlert } from '@/components/alerts'; import WalletBackupTypes from '../helpers/walletBackupTypes'; -import WalletTypes from '../helpers/walletTypes'; -import { Alert } from '@/components/alerts'; import { allWalletsKey, pinKey, privateKeyKey, seedPhraseKey, selectedWalletKey, identifierForVendorKey } from '@/utils/keychainConstants'; import * as keychain from '@/model/keychain'; import * as kc from '@/keychain'; -import { AllRainbowWallets, allWalletsVersion, createWallet, RainbowWallet } from './wallet'; +import { AllRainbowWallets, createWallet, RainbowWallet } from './wallet'; import { analytics } from '@/analytics'; import { logger, RainbowError } from '@/logger'; import { IS_ANDROID, IS_DEV } from '@/env'; @@ -24,16 +32,19 @@ import Routes from '@/navigation/routesNames'; import { clearAllStorages } from './mmkv'; import walletBackupStepTypes from '@/helpers/walletBackupStepTypes'; import { getRemoteConfig } from './remoteConfig'; +import { WrappedAlert as Alert } from '@/helpers/alert'; +import { AppDispatch } from '@/redux/store'; +import { backupsStore, CloudBackupState } from '@/state/backups/backups'; const { DeviceUUID } = NativeModules; const encryptor = new AesEncryptor(); const PIN_REGEX = /^\d{4}$/; export interface CloudBackups { - files: Backup[]; + files: BackupFile[]; } -export interface Backup { +export interface BackupFile { isDirectory: boolean; isFile: boolean; lastModified: string; @@ -44,8 +55,9 @@ export interface Backup { } export const parseTimestampFromFilename = (filename: string) => { + const name = normalizeAndroidBackupFilename(filename); return Number( - filename + name .replace('.backup_', '') .replace('backup_', '') .replace('.json', '') @@ -54,6 +66,27 @@ export const parseTimestampFromFilename = (filename: string) => { ); }; +/** + * Parse the timestamp from a backup file name + * @param filename - The name of the backup file backup_${now}.json + * @returns The timestamp as a number + */ +export const parseTimestampFromBackupFile = (filename: string | null): number | undefined => { + if (!filename) { + return; + } + const match = filename.match(/backup_(\d+)\.json/); + if (!match) { + return; + } + + if (Number.isNaN(Number(match[1]))) { + return; + } + + return Number(match[1]); +}; + type BackupPassword = string; interface BackedUpData { @@ -63,9 +96,72 @@ interface BackedUpData { export interface BackupUserData { wallets: AllRainbowWallets; } +type MaybePromise = T | Promise; + +export const executeFnIfCloudBackupAvailable = async ({ fn, logout = false }: { fn: () => MaybePromise; logout?: boolean }) => { + backupsStore.getState().setStatus(CloudBackupState.InProgress); + + if (IS_ANDROID) { + try { + if (logout) { + await logoutFromGoogleDrive(); + } + + const currentUser = await getGoogleAccountUserData(); + if (!currentUser) { + await login(); + await backupsStore.getState().syncAndFetchBackups(); + } + + const userData = await getGoogleAccountUserData(); + if (!userData) { + Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); + backupsStore.getState().setStatus(CloudBackupState.NotAvailable); + return; + } + // execute the function + + // NOTE: Set this back to ready in order to process the backup + backupsStore.getState().setStatus(CloudBackupState.Ready); + return await fn(); + } catch (e) { + logger.error(new RainbowError('[BackupSheetSectionNoProvider]: No account found'), { + error: e, + }); + Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); + backupsStore.getState().setStatus(CloudBackupState.NotAvailable); + } + } else { + const isAvailable = await isCloudBackupAvailable(); + if (!isAvailable) { + Alert.alert( + i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.label), + i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.description), + [ + { + onPress: () => { + Linking.openURL('https://support.apple.com/en-us/HT204025'); + }, + text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.show_me), + }, + { + style: 'cancel', + text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.no_thanks), + }, + ] + ); + backupsStore.getState().setStatus(CloudBackupState.NotAvailable); + return; + } + + // NOTE: Set this back to ready in order to process the backup + backupsStore.getState().setStatus(CloudBackupState.Ready); + return await fn(); + } +}; async function extractSecretsForWallet(wallet: RainbowWallet) { - const allKeys = await keychain.loadAllKeys(); + const allKeys = await kc.getAllKeys(); if (!allKeys) throw new Error(CLOUD_BACKUP_ERRORS.KEYCHAIN_ACCESS_ERROR); const secrets = {} as { [key: string]: string }; @@ -100,17 +196,15 @@ async function extractSecretsForWallet(wallet: RainbowWallet) { export async function backupAllWalletsToCloud({ wallets, password, - latestBackup, onError, onSuccess, dispatch, }: { wallets: AllRainbowWallets; password: BackupPassword; - latestBackup: string | null; onError?: (message: string) => void; - onSuccess?: () => void; - dispatch: any; + onSuccess?: (password: BackupPassword) => void; + dispatch: AppDispatch; }) { let userPIN: string | undefined; const hasBiometricsEnabled = await kc.getSupportedBiometryType(); @@ -126,11 +220,9 @@ export async function backupAllWalletsToCloud({ try { /** * Loop over all keys and decrypt if necessary for android - * if no latest backup, create first backup with all secrets - * if latest backup, update updatedAt and add new secrets to the backup */ - const allKeys = await keychain.loadAllKeys(); + const allKeys = await kc.getAllKeys(); if (!allKeys) { onError?.(i18n.t(i18n.l.back_up.errors.no_keys_found)); return; @@ -157,49 +249,21 @@ export async function backupAllWalletsToCloud({ label: cloudPlatform, }); - let updatedBackupFile: any = null; - if (!latestBackup) { - const data = { - createdAt: now, - secrets: {}, - }; - const promises = Object.entries(allSecrets).map(async ([username, password]) => { - const processedNewSecrets = await decryptAllPinEncryptedSecretsIfNeeded({ [username]: password }, userPIN); - - data.secrets = { - ...data.secrets, - ...processedNewSecrets, - }; - }); - - await Promise.all(promises); - updatedBackupFile = await encryptAndSaveDataToCloud(data, password, `backup_${now}.json`); - } else { - // if we have a latest backup file, we need to update the updatedAt and add new secrets to the backup file.. - const backup = await getDataFromCloud(password, latestBackup); - if (!backup) { - onError?.(i18n.t(i18n.l.back_up.errors.backup_not_found)); - return; - } + const data = { + createdAt: now, + secrets: {}, + }; + const promises = Object.entries(allSecrets).map(async ([username, password]) => { + const processedNewSecrets = await decryptAllPinEncryptedSecretsIfNeeded({ [username]: password }, userPIN); - const data = { - createdAt: backup.createdAt, - secrets: backup.secrets, + data.secrets = { + ...data.secrets, + ...processedNewSecrets, }; + }); - const promises = Object.entries(allSecrets).map(async ([username, password]) => { - const processedNewSecrets = await decryptAllPinEncryptedSecretsIfNeeded({ [username]: password }, userPIN); - - data.secrets = { - ...data.secrets, - ...processedNewSecrets, - }; - }); - - await Promise.all(promises); - updatedBackupFile = await encryptAndSaveDataToCloud(data, password, latestBackup); - } - + await Promise.all(promises); + const updatedBackupFile = await encryptAndSaveDataToCloud(data, password, `backup_${now}.json`); const walletIdsToUpdate = Object.keys(wallets); await dispatch(setAllWalletsWithIdsAsBackedUp(walletIdsToUpdate, WalletBackupTypes.cloud, updatedBackupFile)); @@ -209,16 +273,18 @@ export async function backupAllWalletsToCloud({ label: cloudPlatform, }); - onSuccess?.(); - } catch (error: any) { - const userError = getUserError(error); - onError?.(userError); - captureException(error); - analytics.track(`Error backing up all wallets to ${cloudPlatform}`, { - category: 'backup', - error: userError, - label: cloudPlatform, - }); + onSuccess?.(password); + } catch (error) { + if (error instanceof Error) { + const userError = getUserError(error); + onError?.(userError); + captureException(error); + analytics.track(`Error backing up all wallets to ${cloudPlatform}`, { + category: 'backup', + error: userError, + label: cloudPlatform, + }); + } } } @@ -251,9 +317,15 @@ export async function addWalletToCloudBackup({ wallet: RainbowWallet; filename: string; userPIN?: string; -}): Promise { - // @ts-ignore +}): Promise { const backup = await getDataFromCloud(password, filename); + if (!backup) { + logger.error(new RainbowError('[backup]: Unable to get backup data for filename'), { + filename, + }); + return null; + } + const now = Date.now(); const newSecretsToBeAddedToBackup = await extractSecretsForWallet(wallet); const processedNewSecrets = await decryptAllPinEncryptedSecretsIfNeeded(newSecretsToBeAddedToBackup, userPIN); @@ -321,25 +393,6 @@ export async function decryptAllPinEncryptedSecretsIfNeeded(secrets: Record { - // Check if there's a wallet backed up - if (wallet.backedUp && wallet.backupDate && wallet.backupFile && wallet.backupType === WalletBackupTypes.cloud) { - // If there is one, let's grab the latest backup - if (!latestBackup || Number(wallet.backupDate) > latestBackup) { - filename = wallet.backupFile; - latestBackup = Number(wallet.backupDate); - } - } - }); - } - return filename; -} - export const RestoreCloudBackupResultStates = { success: 'success', failedWhenRestoring: 'failedWhenRestoring', @@ -368,16 +421,14 @@ const sanitizeFilename = (filename: string) => { */ export async function restoreCloudBackup({ password, - userData, - nameOfSelectedBackupFile, + backupFilename, }: { password: BackupPassword; - userData: BackupUserData | undefined; - nameOfSelectedBackupFile: string; + backupFilename: string; }): Promise { try { // 1 - sanitize filename to remove extra things we don't care about - const filename = sanitizeFilename(nameOfSelectedBackupFile); + const filename = sanitizeFilename(backupFilename); if (!filename) { return RestoreCloudBackupResultStates.failedWhenRestoring; } @@ -402,26 +453,6 @@ export async function restoreCloudBackup({ } } - if (userData) { - // Restore only wallets that were backed up in cloud - // or wallets that are read-only - const walletsToRestore: AllRainbowWallets = {}; - Object.values(userData?.wallets ?? {}).forEach(wallet => { - if ( - (wallet.backedUp && wallet.backupDate && wallet.backupFile && wallet.backupType === WalletBackupTypes.cloud) || - wallet.type === WalletTypes.readOnly - ) { - walletsToRestore[wallet.id] = wallet; - } - }); - - // All wallets - dataToRestore[allWalletsKey] = { - version: allWalletsVersion, - wallets: walletsToRestore, - }; - } - const restoredSuccessfully = await restoreSpecificBackupIntoKeychain(dataToRestore, userPIN); return restoredSuccessfully ? RestoreCloudBackupResultStates.success : RestoreCloudBackupResultStates.failedWhenRestoring; } catch (error) { @@ -525,74 +556,6 @@ async function restoreSpecificBackupIntoKeychain(backedUpData: BackedUpData, use } } -async function restoreCurrentBackupIntoKeychain(backedUpData: BackedUpData, newPIN?: string): Promise { - try { - // Access control config per each type of key - const privateAccessControlOptions = await keychain.getPrivateAccessControlOptions(); - const encryptedBackupPinData = backedUpData[pinKey]; - const backupPIN = await decryptPIN(encryptedBackupPinData); - - await Promise.all( - Object.keys(backedUpData).map(async key => { - let value = backedUpData[key]; - const theKeyIsASeedPhrase = endsWith(key, seedPhraseKey); - const theKeyIsAPrivateKey = endsWith(key, privateKeyKey); - const accessControl: typeof kc.publicAccessControlOptions = - theKeyIsASeedPhrase || theKeyIsAPrivateKey ? privateAccessControlOptions : kc.publicAccessControlOptions; - - /* - * Backups that were saved encrypted with PIN to the cloud need to be - * decrypted with the backup PIN first, and then if we still need - * to store them as encrypted, - * we need to re-encrypt them with a new PIN - */ - if (theKeyIsASeedPhrase) { - const parsedValue = JSON.parse(value); - parsedValue.seedphrase = await decryptSecretFromBackupPin({ - secret: parsedValue.seedphrase, - backupPIN, - }); - value = JSON.stringify(parsedValue); - } else if (theKeyIsAPrivateKey) { - const parsedValue = JSON.parse(value); - parsedValue.privateKey = await decryptSecretFromBackupPin({ - secret: parsedValue.privateKey, - backupPIN, - }); - value = JSON.stringify(parsedValue); - } - - /* - * Since we're decrypting the data that was saved as PIN code encrypted, - * we will allow the user to create a new PIN code. - * We store the old PIN code in the backup, but we don't want to restore it, - * since it will override the new PIN code that we just saved to keychain. - */ - if (key === pinKey) { - return; - } - - if (typeof value === 'string') { - return kc.set(key, value, { - ...accessControl, - androidEncryptionPin: newPIN, - }); - } else { - return kc.setObject(key, value, { - ...accessControl, - androidEncryptionPin: newPIN, - }); - } - }) - ); - - return true; - } catch (e) { - logger.error(new RainbowError(`[backup]: Error restoring current backup into keychain: ${e}`)); - return false; - } -} - async function decryptSecretFromBackupPin({ secret, backupPIN }: { secret?: string; backupPIN?: string }) { let processedSecret = secret; @@ -638,13 +601,9 @@ export async function saveBackupPassword(password: BackupPassword): Promise { - const rainbowBackupPassword = await keychain.loadString('RainbowBackupPassword'); - if (typeof rainbowBackupPassword === 'number') { - return null; - } - - if (rainbowBackupPassword) { - return rainbowBackupPassword; + const { value } = await kc.get('RainbowBackupPassword'); + if (value) { + return value; } return await fetchBackupPassword(); @@ -653,7 +612,7 @@ export async function getLocalBackupPassword(): Promise { export async function saveLocalBackupPassword(password: string) { const privateAccessControlOptions = await keychain.getPrivateAccessControlOptions(); - await keychain.saveString('RainbowBackupPassword', password, privateAccessControlOptions); + await kc.set('RainbowBackupPassword', password, privateAccessControlOptions); saveBackupPassword(password); } @@ -666,7 +625,7 @@ export async function fetchBackupPassword(): Promise { try { const { value: results } = await kc.getSharedWebCredentials(); if (results) { - return results.password as BackupPassword; + return results.password; } return null; } catch (e) { @@ -695,7 +654,7 @@ export async function getDeviceUUID(): Promise { } const FailureAlert = () => - Alert({ + NativeAlert({ buttons: [ { style: 'cancel', diff --git a/src/navigation/HardwareWalletTxNavigator.tsx b/src/navigation/HardwareWalletTxNavigator.tsx index 28e290065dc..4b209dabe30 100644 --- a/src/navigation/HardwareWalletTxNavigator.tsx +++ b/src/navigation/HardwareWalletTxNavigator.tsx @@ -63,7 +63,7 @@ export const HardwareWalletTxNavigator = () => { const { navigate } = useNavigation(); - const deviceId = selectedWallet?.deviceId; + const deviceId = selectedWallet.deviceId ?? ''; const [isReady, setIsReady] = useRecoilState(LedgerIsReadyAtom); const [readyForPolling, setReadyForPolling] = useRecoilState(readyForPollingAtom); const [triggerPollerCleanup, setTriggerPollerCleanup] = useRecoilState(triggerPollerCleanupAtom); diff --git a/src/navigation/Routes.android.tsx b/src/navigation/Routes.android.tsx index 05b09059948..1e03c2d96a3 100644 --- a/src/navigation/Routes.android.tsx +++ b/src/navigation/Routes.android.tsx @@ -90,6 +90,8 @@ import { ControlPanel } from '@/components/DappBrowser/control-panel/ControlPane import { ClaimRewardsPanel } from '@/screens/points/claim-flow/ClaimRewardsPanel'; import { ClaimClaimablePanel } from '@/screens/claimables/ClaimPanel'; import { RootStackParamList } from './types'; +import WalletLoadingListener from '@/components/WalletLoadingListener'; +import { Portal as CMPortal } from '@/react-native-cool-modals/Portal'; import { NetworkSelector } from '@/components/NetworkSwitcher'; const Stack = createStackNavigator(); @@ -213,7 +215,7 @@ function BSNavigator() { step === walletBackupStepTypes.restore_from_backup ) { heightForStep = backupSheetSizes.long; - } else if (step === walletBackupStepTypes.no_provider) { + } else if (step === walletBackupStepTypes.backup_prompt) { heightForStep = backupSheetSizes.medium; } @@ -274,6 +276,10 @@ const AppContainerWithAnalytics = React.forwardRef + + {/* NOTE: Internally, these use some navigational checks */} + + )); diff --git a/src/navigation/Routes.ios.tsx b/src/navigation/Routes.ios.tsx index c07ef6294b5..201eb3aa374 100644 --- a/src/navigation/Routes.ios.tsx +++ b/src/navigation/Routes.ios.tsx @@ -103,6 +103,8 @@ import { ControlPanel } from '@/components/DappBrowser/control-panel/ControlPane import { ClaimRewardsPanel } from '@/screens/points/claim-flow/ClaimRewardsPanel'; import { ClaimClaimablePanel } from '@/screens/claimables/ClaimPanel'; import { RootStackParamList } from './types'; +import WalletLoadingListener from '@/components/WalletLoadingListener'; +import { Portal as CMPortal } from '@/react-native-cool-modals/Portal'; import { NetworkSelector } from '@/components/NetworkSwitcher'; const Stack = createStackNavigator(); @@ -289,6 +291,10 @@ const AppContainerWithAnalytics = React.forwardRef + + {/* NOTE: Internally, these use some navigational checks */} + + )); diff --git a/src/navigation/config.tsx b/src/navigation/config.tsx index 38b7a0032fe..9097c84e1d6 100644 --- a/src/navigation/config.tsx +++ b/src/navigation/config.tsx @@ -103,12 +103,10 @@ export const getHeightForStep = (step: string) => { case WalletBackupStepTypes.backup_manual: case WalletBackupStepTypes.restore_from_backup: return backupSheetSizes.long; - case WalletBackupStepTypes.no_provider: + case WalletBackupStepTypes.backup_prompt: return backupSheetSizes.medium; case WalletBackupStepTypes.check_identifier: return backupSheetSizes.check_identifier; - case WalletBackupStepTypes.backup_now_manually: - return backupSheetSizes.shorter; default: return backupSheetSizes.short; } diff --git a/src/react-native-cool-modals/Portal.js b/src/react-native-cool-modals/Portal.js deleted file mode 100644 index 5d03cdadeb8..00000000000 --- a/src/react-native-cool-modals/Portal.js +++ /dev/null @@ -1,50 +0,0 @@ -import React, { createContext, useCallback, useContext, useMemo, useState } from 'react'; -import { Platform, requireNativeComponent, StyleSheet, View } from 'react-native'; - -const NativePortalContext = createContext(); - -export function usePortal() { - return useContext(NativePortalContext); -} - -const NativePortal = Platform.OS === 'ios' ? requireNativeComponent('WindowPortal') : View; - -const Wrapper = Platform.OS === 'ios' ? ({ children }) => children : View; - -export function Portal({ children }) { - const [Component, setComponentState] = useState(null); - const [blockTouches, setBlockTouches] = useState(false); - - const hide = useCallback(() => { - setComponentState(); - setBlockTouches(false); - }, []); - - const setComponent = useCallback((value, blockTouches) => { - setComponentState(value); - setBlockTouches(blockTouches); - }, []); - - const contextValue = useMemo( - () => ({ - hide, - setComponent, - }), - [hide, setComponent] - ); - - return ( - - - {children} - - {Component} - - - - ); -} diff --git a/src/react-native-cool-modals/Portal.tsx b/src/react-native-cool-modals/Portal.tsx new file mode 100644 index 00000000000..dd2830ee0b4 --- /dev/null +++ b/src/react-native-cool-modals/Portal.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { IS_IOS } from '@/env'; +import { walletLoadingStore } from '@/state/walletLoading/walletLoading'; +import { requireNativeComponent, StyleSheet, View } from 'react-native'; +import Routes from '@/navigation/routesNames'; +import { useActiveRoute } from '@/hooks/useActiveRoute'; + +const NativePortal = IS_IOS ? requireNativeComponent('WindowPortal') : View; +const Wrapper = IS_IOS ? ({ children }: { children: React.ReactNode }) => children : View; + +export function Portal() { + const activeRoute = useActiveRoute(); + + const { blockTouches, Component } = walletLoadingStore(state => ({ + blockTouches: state.blockTouches, + Component: state.Component, + })); + + if (!Component || (activeRoute === Routes.PIN_AUTHENTICATION_SCREEN && !IS_IOS)) { + return null; + } + + console.log('blockTouches', blockTouches); + + return ( + + + {Component} + + + ); +} diff --git a/src/redux/wallets.ts b/src/redux/wallets.ts index deb49a5ea9b..d17f8b4c0d8 100644 --- a/src/redux/wallets.ts +++ b/src/redux/wallets.ts @@ -3,10 +3,8 @@ import { toChecksumAddress } from 'ethereumjs-util'; import { isEmpty, keys } from 'lodash'; import { Dispatch } from 'redux'; import { ThunkDispatch } from 'redux-thunk'; -import { backupUserDataIntoCloud, fetchUserDataFromCloud } from '../handlers/cloudBackup'; import { saveKeychainIntegrityState } from '../handlers/localstorage/globalSettings'; import { getWalletNames, saveWalletNames } from '../handlers/localstorage/walletNames'; -import WalletBackupTypes from '../helpers/walletBackupTypes'; import WalletTypes from '../helpers/walletTypes'; import { fetchENSAvatar } from '../hooks/useENSAvatar'; import { hasKey } from '../model/keychain'; @@ -30,6 +28,7 @@ import { AppGetState, AppState } from './store'; import { fetchReverseRecord } from '@/handlers/ens'; import { lightModeThemeColors } from '@/styles'; import { RainbowError, logger } from '@/logger'; +import { parseTimestampFromBackupFile } from '@/model/backup'; // -- Types ---------------------------------------- // @@ -37,11 +36,6 @@ import { RainbowError, logger } from '@/logger'; * The current state of the `wallets` reducer. */ interface WalletsState { - /** - * The current loading state of the wallet. - */ - isWalletLoading: any; - /** * The currently selected wallet. */ @@ -62,21 +56,12 @@ interface WalletsState { * An action for the `wallets` reducer. */ type WalletsAction = - | WalletsSetIsLoadingAction | WalletsSetSelectedAction | WalletsUpdateAction | WalletsUpdateNamesAction | WalletsLoadAction | WalletsAddedAccountAction; -/** - * An action that sets the wallet loading state. - */ -interface WalletsSetIsLoadingAction { - type: typeof WALLETS_SET_IS_LOADING; - payload: WalletsState['isWalletLoading']; -} - /** * An action that sets the selected wallet. */ @@ -130,90 +115,88 @@ const WALLETS_SET_SELECTED = 'wallets/SET_SELECTED'; /** * Loads wallet information from storage and updates state accordingly. */ -export const walletsLoadState = - (profilesEnabled = false) => - async (dispatch: ThunkDispatch, getState: AppGetState) => { - try { - const { accountAddress } = getState().settings; - let addressFromKeychain: string | null = accountAddress; - const allWalletsResult = await getAllWallets(); - const wallets = allWalletsResult?.wallets || {}; - if (isEmpty(wallets)) return; - const selected = await getSelectedWallet(); - // Prevent irrecoverable state (no selected wallet) - let selectedWallet = selected?.wallet; - // Check if the selected wallet is among all the wallets - if (selectedWallet && !wallets[selectedWallet.id]) { - // If not then we should clear it and default to the first one - const firstWalletKey = Object.keys(wallets)[0]; - selectedWallet = wallets[firstWalletKey]; - await setSelectedWallet(selectedWallet); - } +export const walletsLoadState = () => async (dispatch: ThunkDispatch, getState: AppGetState) => { + try { + const { accountAddress } = getState().settings; + let addressFromKeychain: string | null = accountAddress; + const allWalletsResult = await getAllWallets(); + const wallets = allWalletsResult?.wallets || {}; + if (isEmpty(wallets)) return; + const selected = await getSelectedWallet(); + // Prevent irrecoverable state (no selected wallet) + let selectedWallet = selected?.wallet; + // Check if the selected wallet is among all the wallets + if (selectedWallet && !wallets[selectedWallet.id]) { + // If not then we should clear it and default to the first one + const firstWalletKey = Object.keys(wallets)[0]; + selectedWallet = wallets[firstWalletKey]; + await setSelectedWallet(selectedWallet); + } - if (!selectedWallet) { - const address = await loadAddress(); - if (!address) { - selectedWallet = wallets[Object.keys(wallets)[0]]; - } else { - keys(wallets).some(key => { - const someWallet = wallets[key]; - const found = (someWallet.addresses || []).some(account => { - return toChecksumAddress(account.address) === toChecksumAddress(address!); - }); - if (found) { - selectedWallet = someWallet; - logger.debug('[redux/wallets]: Found selected wallet based on loadAddress result'); - } - return found; + if (!selectedWallet) { + const address = await loadAddress(); + if (!address) { + selectedWallet = wallets[Object.keys(wallets)[0]]; + } else { + keys(wallets).some(key => { + const someWallet = wallets[key]; + const found = (someWallet.addresses || []).some(account => { + return toChecksumAddress(account.address) === toChecksumAddress(address!); }); - } + if (found) { + selectedWallet = someWallet; + logger.debug('[redux/wallets]: Found selected wallet based on loadAddress result'); + } + return found; + }); } + } - // Recover from broken state (account address not in selected wallet) - if (!addressFromKeychain) { - addressFromKeychain = await loadAddress(); - logger.debug("[redux/wallets]: addressFromKeychain wasn't set on settings so it is being loaded from loadAddress"); - } + // Recover from broken state (account address not in selected wallet) + if (!addressFromKeychain) { + addressFromKeychain = await loadAddress(); + logger.debug("[redux/wallets]: addressFromKeychain wasn't set on settings so it is being loaded from loadAddress"); + } - const selectedAddress = selectedWallet?.addresses.find(a => { - return a.visible && a.address === addressFromKeychain; - }); + const selectedAddress = selectedWallet?.addresses.find(a => { + return a.visible && a.address === addressFromKeychain; + }); - // Let's select the first visible account if we don't have a selected address - if (!selectedAddress) { - const allWallets = Object.values(allWalletsResult?.wallets || {}); - let account = null; - for (const wallet of allWallets) { - for (const rainbowAccount of wallet.addresses || []) { - if (rainbowAccount.visible) { - account = rainbowAccount; - break; - } + // Let's select the first visible account if we don't have a selected address + if (!selectedAddress) { + const allWallets = Object.values(allWalletsResult?.wallets || {}); + let account = null; + for (const wallet of allWallets) { + for (const rainbowAccount of wallet.addresses || []) { + if (rainbowAccount.visible) { + account = rainbowAccount; + break; } } - if (!account) return; - await dispatch(settingsUpdateAccountAddress(account.address)); - await saveAddress(account.address); - logger.debug('[redux/wallets]: Selected the first visible address because there was not selected one'); } + if (!account) return; + await dispatch(settingsUpdateAccountAddress(account.address)); + await saveAddress(account.address); + logger.debug('[redux/wallets]: Selected the first visible address because there was not selected one'); + } - const walletNames = await getWalletNames(); - dispatch({ - payload: { - selected: selectedWallet, - walletNames, - wallets, - }, - type: WALLETS_LOAD, - }); + const walletNames = await getWalletNames(); + dispatch({ + payload: { + selected: selectedWallet, + walletNames, + wallets, + }, + type: WALLETS_LOAD, + }); - return wallets; - } catch (error) { - logger.error(new RainbowError('[redux/wallets]: Exception during walletsLoadState'), { - message: (error as Error)?.message, - }); - } - }; + return wallets; + } catch (error) { + logger.error(new RainbowError('[redux/wallets]: Exception during walletsLoadState'), { + message: (error as Error)?.message, + }); + } +}; /** * Saves new wallets to storage and updates state accordingly. @@ -252,21 +235,21 @@ export const walletsSetSelected = (wallet: RainbowWallet) => async (dispatch: Di * @param updateUserMetadata Whether to update user metadata. */ export const setAllWalletsWithIdsAsBackedUp = - ( - walletIds: RainbowWallet['id'][], - method: RainbowWallet['backupType'], - backupFile: RainbowWallet['backupFile'] = null, - updateUserMetadata = true - ) => + (walletIds: RainbowWallet['id'][], method: RainbowWallet['backupType'], backupFile: RainbowWallet['backupFile'] = null) => async (dispatch: ThunkDispatch, getState: AppGetState) => { const { wallets, selected } = getState().wallets; const newWallets = { ...wallets }; + let backupDate = Date.now(); + if (backupFile) { + backupDate = parseTimestampFromBackupFile(backupFile) ?? Date.now(); + } + walletIds.forEach(walletId => { newWallets[walletId] = { ...newWallets[walletId], backedUp: true, - backupDate: Date.now(), + backupDate, backupFile, backupType: method, }; @@ -276,17 +259,6 @@ export const setAllWalletsWithIdsAsBackedUp = if (selected?.id && walletIds.includes(selected?.id)) { await dispatch(walletsSetSelected(newWallets[selected.id])); } - - if (method === WalletBackupTypes.cloud && updateUserMetadata) { - try { - await backupUserDataIntoCloud({ wallets: newWallets }); - } catch (e) { - logger.error(new RainbowError('[redux/wallets]: Saving multiple wallets UserData to cloud failed.'), { - message: (e as Error)?.message, - }); - throw e; - } - } }; /** @@ -296,122 +268,28 @@ export const setAllWalletsWithIdsAsBackedUp = * @param walletId The ID of the wallet to modify. * @param method The backup type used. * @param backupFile The backup file, if present. - * @param updateUserMetadata Whether to update user metadata. */ export const setWalletBackedUp = - ( - walletId: RainbowWallet['id'], - method: RainbowWallet['backupType'], - backupFile: RainbowWallet['backupFile'] = null, - updateUserMetadata = true - ) => + (walletId: RainbowWallet['id'], method: RainbowWallet['backupType'], backupFile: RainbowWallet['backupFile'] = null) => async (dispatch: ThunkDispatch, getState: AppGetState) => { const { wallets, selected } = getState().wallets; const newWallets = { ...wallets }; + let backupDate = Date.now(); + if (backupFile) { + backupDate = parseTimestampFromBackupFile(backupFile) ?? Date.now(); + } newWallets[walletId] = { ...newWallets[walletId], backedUp: true, - backupDate: Date.now(), + backupDate, backupFile, backupType: method, }; await dispatch(walletsUpdate(newWallets)); - if (selected!.id === walletId) { + if (selected?.id === walletId) { await dispatch(walletsSetSelected(newWallets[walletId])); } - - if (method === WalletBackupTypes.cloud && updateUserMetadata) { - try { - await backupUserDataIntoCloud({ wallets: newWallets }); - } catch (e) { - logger.error(new RainbowError('[redux/wallets]: Saving wallet UserData to cloud failed.'), { - message: (e as Error)?.message, - }); - throw e; - } - } - }; - -/** - * Grabs user data stored in the cloud and based on this data marks wallets - * as backed up or not - */ -export const updateWalletBackupStatusesBasedOnCloudUserData = - () => async (dispatch: ThunkDispatch, getState: AppGetState) => { - const { wallets, selected } = getState().wallets; - const newWallets = { ...wallets }; - - let currentUserData: { wallets: { [p: string]: RainbowWallet } } | undefined; - try { - currentUserData = await fetchUserDataFromCloud(); - } catch (error) { - logger.error(new RainbowError('[redux/wallets]: There was an error when trying to update wallet backup statuses'), { - error: (error as Error).message, - }); - return; - } - if (currentUserData === undefined) { - return; - } - - // build hashmap of address to wallet based on backup metadata - const addressToWalletLookup = new Map(); - Object.values(currentUserData.wallets).forEach(wallet => { - wallet.addresses?.forEach(account => { - addressToWalletLookup.set(account.address, wallet); - }); - }); - - /* - marking wallet as already backed up if all addresses are backed up properly - and linked to the same wallet - - we assume it's not backed up if: - * we don't have an address in the backup metadata - * we have an address in the backup metadata, but it's linked to multiple - wallet ids (should never happen, but that's a sanity check) - */ - Object.values(newWallets).forEach(wallet => { - const localWalletId = wallet.id; - - let relatedCloudWalletId: string | null = null; - for (const account of wallet.addresses || []) { - const walletDataForCurrentAddress = addressToWalletLookup.get(account.address); - if (!walletDataForCurrentAddress) { - return; - } - if (relatedCloudWalletId === null) { - relatedCloudWalletId = walletDataForCurrentAddress.id; - } else if (relatedCloudWalletId !== walletDataForCurrentAddress.id) { - logger.warn( - '[redux/wallets]: Wallet address is linked to multiple or different accounts in the cloud backup metadata. It could mean that there is an issue with the cloud backup metadata.' - ); - return; - } - } - - if (relatedCloudWalletId === null) { - return; - } - - // update only if we checked the wallet is actually backed up - const cloudBackupData = currentUserData?.wallets[relatedCloudWalletId]; - if (cloudBackupData) { - newWallets[localWalletId] = { - ...newWallets[localWalletId], - backedUp: cloudBackupData.backedUp, - backupDate: cloudBackupData.backupDate, - backupFile: cloudBackupData.backupFile, - backupType: cloudBackupData.backupType, - }; - } - }); - - await dispatch(walletsUpdate(newWallets)); - if (selected?.id) { - await dispatch(walletsSetSelected(newWallets[selected.id])); - } }; /** @@ -706,7 +584,6 @@ export const checkKeychainIntegrity = () => async (dispatch: ThunkDispatch { switch (action.type) { - case WALLETS_SET_IS_LOADING: - return { ...state, isWalletLoading: action.payload }; case WALLETS_SET_SELECTED: return { ...state, selected: action.payload }; case WALLETS_UPDATE: diff --git a/src/resources/transactions/consolidatedTransactions.ts b/src/resources/transactions/consolidatedTransactions.ts index a749e2f72d0..26db739a248 100644 --- a/src/resources/transactions/consolidatedTransactions.ts +++ b/src/resources/transactions/consolidatedTransactions.ts @@ -135,6 +135,7 @@ export function useConsolidatedTransactions( keepPreviousData: true, getNextPageParam: lastPage => lastPage?.nextPage, refetchInterval: CONSOLIDATED_TRANSACTIONS_INTERVAL, + enabled: !!address, retry: 3, } ); diff --git a/src/screens/AddWalletSheet.tsx b/src/screens/AddWalletSheet.tsx index 4b010ff3f16..92712d4241d 100644 --- a/src/screens/AddWalletSheet.tsx +++ b/src/screens/AddWalletSheet.tsx @@ -5,11 +5,10 @@ import { useNavigation } from '@/navigation'; import Routes from '@/navigation/routesNames'; import React, { useRef } from 'react'; import * as i18n from '@/languages'; -import { HARDWARE_WALLETS, PROFILES, useExperimentalFlag } from '@/config'; +import { HARDWARE_WALLETS, useExperimentalFlag } from '@/config'; import { analytics, analyticsV2 } from '@/analytics'; -import { InteractionManager, Linking } from 'react-native'; +import { InteractionManager } from 'react-native'; import { createAccountForWallet, walletsLoadState } from '@/redux/wallets'; -import WalletBackupTypes from '@/helpers/walletBackupTypes'; import { createWallet } from '@/model/wallet'; import WalletTypes from '@/helpers/walletTypes'; import { logger, RainbowError } from '@/logger'; @@ -19,20 +18,13 @@ import PairHairwareWallet from '@/assets/PairHardwareWallet.png'; import ImportSecretPhraseOrPrivateKey from '@/assets/ImportSecretPhraseOrPrivateKey.png'; import WatchWalletIcon from '@/assets/watchWallet.png'; import { useDispatch } from 'react-redux'; -import { - backupUserDataIntoCloud, - getGoogleAccountUserData, - GoogleDriveUserData, - isCloudBackupAvailable, - login, - logoutFromGoogleDrive, -} from '@/handlers/cloudBackup'; import showWalletErrorAlert from '@/helpers/support'; import { cloudPlatform } from '@/utils/platform'; -import { IS_ANDROID } from '@/env'; import { RouteProp, useRoute } from '@react-navigation/native'; -import { WrappedAlert as Alert } from '@/helpers/alert'; import { useInitializeWallet, useWallets } from '@/hooks'; +import { WalletLoadingStates } from '@/helpers/walletLoadingStates'; +import { executeFnIfCloudBackupAvailable } from '@/model/backup'; +import { walletLoadingStore } from '@/state/walletLoading/walletLoading'; const TRANSLATIONS = i18n.l.wallet.new.add_wallet_sheet; @@ -52,7 +44,6 @@ export const AddWalletSheet = () => { const { goBack, navigate } = useNavigation(); const hardwareWalletsEnabled = useExperimentalFlag(HARDWARE_WALLETS); - const profilesEnabled = useExperimentalFlag(PROFILES); const dispatch = useDispatch(); const initializeWallet = useInitializeWallet(); const creatingWallet = useRef(); @@ -83,6 +74,10 @@ export const AddWalletSheet = () => { }, onCloseModal: async (args: any) => { if (args) { + walletLoadingStore.setState({ + loadingState: WalletLoadingStates.CREATING_WALLET, + }); + const name = args?.name ?? ''; const color = args?.color ?? null; // Check if the selected wallet is the primary @@ -113,31 +108,18 @@ export const AddWalletSheet = () => { try { // If we found it and it's not damaged use it to create the new account if (primaryWalletKey && !wallets?.[primaryWalletKey].damaged) { - const newWallets = await dispatch(createAccountForWallet(primaryWalletKey, color, name)); + await dispatch(createAccountForWallet(primaryWalletKey, color, name)); // @ts-ignore await initializeWallet(); - // If this wallet was previously backed up to the cloud - // We need to update userData backup so it can be restored too - if (wallets?.[primaryWalletKey].backedUp && wallets[primaryWalletKey].backupType === WalletBackupTypes.cloud) { - try { - await backupUserDataIntoCloud({ wallets: newWallets }); - } catch (e) { - logger.error(new RainbowError('[AddWalletSheet]: Updating wallet userdata failed after new account creation'), { - error: e, - }); - throw e; - } - } - - // If doesn't exist, we need to create a new wallet } else { + // If doesn't exist, we need to create a new wallet await createWallet({ color, name, clearCallbackOnStartCreation: true, }); - await dispatch(walletsLoadState(profilesEnabled)); - // @ts-ignore + await dispatch(walletsLoadState()); + // @ts-expect-error - needs refactor to object params await initializeWallet(); } } catch (e) { @@ -149,6 +131,10 @@ export const AddWalletSheet = () => { showWalletErrorAlert(); }, 1000); } + } finally { + walletLoadingStore.setState({ + loadingState: null, + }); } } creatingWallet.current = false; @@ -197,47 +183,11 @@ export const AddWalletSheet = () => { isFirstWallet, type: 'seed', }); - if (IS_ANDROID) { - try { - await logoutFromGoogleDrive(); - await login(); - - getGoogleAccountUserData().then((accountDetails: GoogleDriveUserData | undefined) => { - if (accountDetails) { - return navigate(Routes.RESTORE_SHEET); - } - Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); - }); - } catch (e) { - Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); - logger.error(new RainbowError('[AddWalletSheet]: Error while trying to restore from cloud'), { - error: e, - }); - } - } else { - const isAvailable = await isCloudBackupAvailable(); - if (!isAvailable) { - Alert.alert( - i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.label), - i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.description), - [ - { - onPress: () => { - Linking.openURL('https://support.apple.com/en-us/HT204025'); - }, - text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.show_me), - }, - { - style: 'cancel', - text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.no_thanks), - }, - ] - ); - return; - } - navigate(Routes.RESTORE_SHEET); - } + executeFnIfCloudBackupAvailable({ + fn: () => navigate(Routes.RESTORE_SHEET), + logout: true, + }); }; const restoreFromCloudDescription = i18n.t(TRANSLATIONS.options.cloud.description_restore_sheet, { diff --git a/src/screens/RestoreSheet.tsx b/src/screens/RestoreSheet.tsx index 4a3e324bb65..f8186c86341 100644 --- a/src/screens/RestoreSheet.tsx +++ b/src/screens/RestoreSheet.tsx @@ -1,5 +1,5 @@ import { RouteProp, useRoute } from '@react-navigation/native'; -import React, { useMemo } from 'react'; +import React, { useCallback, useMemo } from 'react'; import RestoreCloudStep from '../components/backup/RestoreCloudStep'; import ChooseBackupStep from '@/components/backup/ChooseBackupStep'; import Routes from '@/navigation/routesNames'; diff --git a/src/screens/SendSheet.tsx b/src/screens/SendSheet.tsx index f7f71b7173f..c634befe7b0 100644 --- a/src/screens/SendSheet.tsx +++ b/src/screens/SendSheet.tsx @@ -50,7 +50,7 @@ import Routes from '@/navigation/routesNames'; import styled from '@/styled-thing'; import { borders } from '@/styles'; import { convertAmountAndPriceToNativeDisplay, convertAmountFromNativeValue, formatInputDecimals, lessThan } from '@/helpers/utilities'; -import { deviceUtils, ethereumUtils, getUniqueTokenType, safeAreaInsetValues } from '@/utils'; +import { deviceUtils, ethereumUtils, getUniqueTokenType, isLowerCaseMatch, safeAreaInsetValues } from '@/utils'; import { logger, RainbowError } from '@/logger'; import { IS_ANDROID, IS_IOS } from '@/env'; import { NoResults } from '@/components/list'; @@ -62,13 +62,14 @@ import { getNextNonce } from '@/state/nonces'; import { usePersistentDominantColorFromImage } from '@/hooks/usePersistentDominantColorFromImage'; import { performanceTracking, Screens, TimeToSignOperation } from '@/state/performance/performance'; import { REGISTRATION_STEPS } from '@/helpers/ens'; -import { useUserAssetsStore } from '@/state/assets/userAssets'; import { ChainId } from '@/state/backendNetworks/types'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; import { RootStackParamList } from '@/navigation/types'; import { ThemeContextProps, useTheme } from '@/theme'; import { StaticJsonRpcProvider } from '@ethersproject/providers'; import { Contact } from '@/redux/contacts'; +import { useUserAssetsStore } from '@/state/assets/userAssets'; +import store from '@/redux/store'; const sheetHeight = deviceUtils.dimensions.height - (IS_ANDROID ? 30 : 10); const statusBarHeight = IS_IOS ? safeAreaInsetValues.top : StatusBar.currentHeight; @@ -95,6 +96,17 @@ const SheetContainer = styled(Column).attrs({ }); const validateRecipient = (toAddress?: string, tokenAddress?: string) => { + const { wallets } = store.getState().wallets; + // check for if the recipient is in a damaged wallet state and prevent + if (wallets) { + const internalWallet = Object.values(wallets).find(wallet => + wallet.addresses.some(address => isLowerCaseMatch(address.address, toAddress)) + ); + if (internalWallet?.damaged) { + return false; + } + } + if (!toAddress || toAddress?.toLowerCase() === tokenAddress?.toLowerCase()) { return false; } diff --git a/src/screens/SettingsSheet/SettingsSheet.tsx b/src/screens/SettingsSheet/SettingsSheet.tsx index 7a68ad83d86..094cdc17456 100644 --- a/src/screens/SettingsSheet/SettingsSheet.tsx +++ b/src/screens/SettingsSheet/SettingsSheet.tsx @@ -21,7 +21,6 @@ import { useDimensions } from '@/hooks'; import { SETTINGS_BACKUP_ROUTES } from './components/Backups/routes'; import { IS_ANDROID } from '@/env'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; -import { CloudBackupProvider } from '@/components/backup/CloudBackupProvider'; const Stack = createStackNavigator(); @@ -52,102 +51,100 @@ export function SettingsSheet() { const memoSettingsOptions = useMemo(() => settingsOptions(colors), [colors]); return ( - - - {({ backgroundColor }) => ( - + {({ backgroundColor }) => ( + + - - - {() => ( - - )} - - {Object.values(SettingsPages).map( - ({ component, getTitle, key }) => - component && ( - - ) + {() => ( + )} - ({ - cardStyleInterpolator: settingsCardStyleInterpolator, - title: route.params?.title, - })} - /> - ({ - cardStyleInterpolator: settingsCardStyleInterpolator, - title: route.params?.title, - })} - /> - ({ - cardStyleInterpolator: settingsCardStyleInterpolator, - title: route.params?.title, - })} - /> - ({ - cardStyleInterpolator: settingsCardStyleInterpolator, - title: route.params?.title, - })} - /> - ({ - cardStyleInterpolator: settingsCardStyleInterpolator, - title: route.params?.title, - })} - /> - - - )} - - + + {Object.values(SettingsPages).map( + ({ component, getTitle, key }) => + component && ( + + ) + )} + ({ + cardStyleInterpolator: settingsCardStyleInterpolator, + title: route.params?.title, + })} + /> + ({ + cardStyleInterpolator: settingsCardStyleInterpolator, + title: route.params?.title, + })} + /> + ({ + cardStyleInterpolator: settingsCardStyleInterpolator, + title: route.params?.title, + })} + /> + ({ + cardStyleInterpolator: settingsCardStyleInterpolator, + title: route.params?.title, + })} + /> + ({ + cardStyleInterpolator: settingsCardStyleInterpolator, + title: route.params?.title, + })} + /> + + + )} + ); } diff --git a/src/screens/SettingsSheet/components/Backups/BackUpMenuButton.tsx b/src/screens/SettingsSheet/components/Backups/BackUpMenuButton.tsx index 1b2f4334e8e..ba33ae5da99 100644 --- a/src/screens/SettingsSheet/components/Backups/BackUpMenuButton.tsx +++ b/src/screens/SettingsSheet/components/Backups/BackUpMenuButton.tsx @@ -1,4 +1,3 @@ -import { useCreateBackupStateType } from '@/components/backup/useCreateBackup'; import { useTheme } from '@/theme'; import React, { useState, useMemo, useEffect } from 'react'; import * as i18n from '@/languages'; @@ -6,102 +5,103 @@ import MenuItem from '../MenuItem'; import Spinner from '@/components/Spinner'; import { FloatingEmojis } from '@/components/floating-emojis'; import { useDimensions } from '@/hooks'; +import { CloudBackupState } from '@/state/backups/backups'; export const BackUpMenuItem = ({ icon = '􀊯', - loading, + backupState, onPress, title, + disabled, }: { icon?: string; - loading: useCreateBackupStateType; + backupState: CloudBackupState; title: string; onPress: () => void; + disabled?: boolean; }) => { const { colors } = useTheme(); const { width: deviceWidth } = useDimensions(); const [emojiTrigger, setEmojiTrigger] = useState void)>(null); useEffect(() => { - if (loading === 'success') { + if (backupState === CloudBackupState.Success) { for (let i = 0; i < 20; i++) { setTimeout(() => { emojiTrigger?.(); }, 100 * i); } } - }, [emojiTrigger, loading]); + }, [emojiTrigger, backupState]); const accentColor = useMemo(() => { - switch (loading) { - case 'success': + switch (backupState) { + case CloudBackupState.Success: return colors.green; - case 'error': + case CloudBackupState.Error: return colors.red; default: return undefined; } - }, [colors, loading]); + }, [colors, backupState]); const titleText = useMemo(() => { - switch (loading) { - case 'loading': + switch (backupState) { + case CloudBackupState.InProgress: return i18n.t(i18n.l.back_up.cloud.backing_up); - case 'success': + case CloudBackupState.Success: return i18n.t(i18n.l.back_up.cloud.backup_success); - case 'error': + case CloudBackupState.Error: return i18n.t(i18n.l.back_up.cloud.backup_failed); default: return title; } - }, [loading, title]); + }, [backupState, title]); const localIcon = useMemo(() => { - switch (loading) { - case 'success': + switch (backupState) { + case CloudBackupState.Success: return '􀁢'; - case 'error': + case CloudBackupState.Error: return '􀀲'; default: return icon; } - }, [icon, loading]); + }, [icon, backupState]); return ( - <> - {/* @ts-ignore js */} - - {({ onNewEmoji }: { onNewEmoji: () => void }) => ( - - ) : ( - - ) - } - onPress={() => { - setEmojiTrigger(() => onNewEmoji); - onPress(); - }} - size={52} - titleComponent={} - /> - )} - - + + {({ onNewEmoji }) => ( + + ) : ( + + ) + } + onPress={() => { + setEmojiTrigger(() => onNewEmoji); + onPress(); + }} + size={52} + titleComponent={} + /> + )} + ); }; diff --git a/src/screens/SettingsSheet/components/Backups/ViewCloudBackups.tsx b/src/screens/SettingsSheet/components/Backups/ViewCloudBackups.tsx index 1842d3fae2a..90cbdddeff3 100644 --- a/src/screens/SettingsSheet/components/Backups/ViewCloudBackups.tsx +++ b/src/screens/SettingsSheet/components/Backups/ViewCloudBackups.tsx @@ -5,19 +5,18 @@ import { Text as RNText } from '@/components/text'; import Menu from '../Menu'; import MenuContainer from '../MenuContainer'; import MenuItem from '../MenuItem'; -import { Backup, parseTimestampFromFilename } from '@/model/backup'; +import { BackupFile, parseTimestampFromFilename } from '@/model/backup'; import { format } from 'date-fns'; -import { Stack } from '@/design-system'; import { useNavigation } from '@/navigation'; import Routes from '@/navigation/routesNames'; -import { IS_ANDROID } from '@/env'; import walletBackupStepTypes from '@/helpers/walletBackupStepTypes'; -import { useCloudBackups } from '@/components/backup/CloudBackupProvider'; -import { Centered } from '@/components/layout'; +import { Page } from '@/components/layout'; import Spinner from '@/components/Spinner'; import ActivityIndicator from '@/components/ActivityIndicator'; -import { cloudPlatform } from '@/utils/platform'; import { useTheme } from '@/theme'; +import { CloudBackupState, LoadingStates, backupsStore } from '@/state/backups/backups'; +import { titleForBackupState } from '../../utils'; +import { Box } from '@/design-system'; const LoadingText = styled(RNText).attrs(({ theme: { colors } }: any) => ({ color: colors.blueGreyDark, @@ -32,43 +31,14 @@ const ViewCloudBackups = () => { const { navigate } = useNavigation(); const { colors } = useTheme(); - const { isFetching, backups } = useCloudBackups(); - - const cloudBackups = backups.files - .filter(backup => { - if (IS_ANDROID) { - return !backup.name.match(/UserData/i); - } - - return backup.isFile && backup.size > 0 && !backup.name.match(/UserData/i); - }) - .sort((a, b) => { - return parseTimestampFromFilename(b.name) - parseTimestampFromFilename(a.name); - }); - - const mostRecentBackup = cloudBackups.reduce( - (prev, current) => { - if (!current) { - return prev; - } - - if (!prev) { - return current; - } - - const prevTimestamp = new Date(prev.lastModified).getTime(); - const currentTimestamp = new Date(current.lastModified).getTime(); - if (currentTimestamp > prevTimestamp) { - return current; - } - - return prev; - }, - undefined as Backup | undefined - ); + const { status, backups, mostRecentBackup } = backupsStore(state => ({ + status: state.status, + backups: state.backups, + mostRecentBackup: state.mostRecentBackup, + })); const onSelectCloudBackup = useCallback( - async (selectedBackup: Backup) => { + async (selectedBackup: BackupFile) => { navigate(Routes.BACKUP_SHEET, { step: walletBackupStepTypes.restore_from_backup, selectedBackup, @@ -77,80 +47,110 @@ const ViewCloudBackups = () => { [navigate] ); - return ( - - - {!isFetching && !cloudBackups.length && ( - - } /> - - )} + const renderNoBackupsState = () => ( + <> + + } /> + + + ); + + const renderMostRecentBackup = () => { + if (!mostRecentBackup) { + return null; + } + + return ( + + + } + onPress={() => onSelectCloudBackup(mostRecentBackup)} + size={52} + width="full" + titleComponent={} + /> + + + ); + }; + + const renderOlderBackups = () => ( + <> + + + {backups.files + .filter(backup => backup.name !== mostRecentBackup?.name) + .sort((a, b) => { + const timestampA = new Date(parseTimestampFromFilename(a.name)).getTime(); + const timestampB = new Date(parseTimestampFromFilename(b.name)).getTime(); + return timestampB - timestampA; + }) + .map(backup => ( + onSelectCloudBackup(backup)} + size={52} + width="full" + titleComponent={ + + } + /> + ))} + {backups.files.length === 1 && ( + } + /> + )} + + + + + backupsStore.getState().syncAndFetchBackups()} + titleComponent={} + /> + + + ); - {!isFetching && cloudBackups.length && ( - <> - {mostRecentBackup && ( - - } - onPress={() => onSelectCloudBackup(mostRecentBackup)} - size={52} - width="full" - titleComponent={} - /> - - )} + const renderBackupsList = () => ( + <> + {renderMostRecentBackup()} + {renderOlderBackups()} + + ); - - {cloudBackups.map( - backup => - backup.name !== mostRecentBackup?.name && ( - onSelectCloudBackup(backup)} - size={52} - width="full" - titleComponent={ - - } - /> - ) - )} + const isLoading = LoadingStates.includes(status); - {cloudBackups.length === 1 && ( - } - /> - )} - - - )} + if (isLoading) { + return ( + + {android ? : } + {titleForBackupState[status]} + + ); + } - {isFetching && ( - - {android ? : } - { - - {i18n.t(i18n.l.back_up.cloud.fetching_backups, { - cloudPlatformName: cloudPlatform, - })} - - } - - )} - + return ( + + {status === CloudBackupState.Ready && !backups.files.length && renderNoBackupsState()} + {status === CloudBackupState.Ready && backups.files.length > 0 && renderBackupsList()} ); }; diff --git a/src/screens/SettingsSheet/components/Backups/ViewWalletBackup.tsx b/src/screens/SettingsSheet/components/Backups/ViewWalletBackup.tsx index d085c3f62fd..9fddd15964d 100644 --- a/src/screens/SettingsSheet/components/Backups/ViewWalletBackup.tsx +++ b/src/screens/SettingsSheet/components/Backups/ViewWalletBackup.tsx @@ -29,31 +29,23 @@ import Routes from '@/navigation/routesNames'; import walletBackupTypes from '@/helpers/walletBackupTypes'; import { SETTINGS_BACKUP_ROUTES } from './routes'; import { analyticsV2 } from '@/analytics'; -import { InteractionManager, Linking } from 'react-native'; +import { InteractionManager } from 'react-native'; import { useDispatch } from 'react-redux'; -import { createAccountForWallet, walletsLoadState } from '@/redux/wallets'; -import { - GoogleDriveUserData, - backupUserDataIntoCloud, - getGoogleAccountUserData, - isCloudBackupAvailable, - login, -} from '@/handlers/cloudBackup'; +import { createAccountForWallet } from '@/redux/wallets'; import { logger, RainbowError } from '@/logger'; -import { RainbowAccount, createWallet } from '@/model/wallet'; -import { PROFILES, useExperimentalFlag } from '@/config'; +import { RainbowAccount } from '@/model/wallet'; import showWalletErrorAlert from '@/helpers/support'; -import { IS_ANDROID, IS_IOS } from '@/env'; +import { IS_IOS } from '@/env'; import ImageAvatar from '@/components/contacts/ImageAvatar'; -import { useCreateBackup } from '@/components/backup/useCreateBackup'; import { BackUpMenuItem } from './BackUpMenuButton'; -import { checkWalletsForBackupStatus } from '../../utils'; -import { useCloudBackups } from '@/components/backup/CloudBackupProvider'; -import { WalletCountPerType, useVisibleWallets } from '../../useVisibleWallets'; import { format } from 'date-fns'; import { removeFirstEmojiFromString } from '@/helpers/emojiHandler'; -import { Backup, parseTimestampFromFilename } from '@/model/backup'; -import { WrappedAlert as Alert } from '@/helpers/alert'; +import { useCreateBackup } from '@/components/backup/useCreateBackup'; +import { backupsStore } from '@/state/backups/backups'; +import { WalletLoadingStates } from '@/helpers/walletLoadingStates'; +import { executeFnIfCloudBackupAvailable } from '@/model/backup'; +import { isWalletBackedUpForCurrentAccount } from '../../utils'; +import { walletLoadingStore } from '@/state/walletLoading/walletLoading'; type ViewWalletBackupParams = { ViewWalletBackup: { walletId: string; title: string; imported?: boolean }; @@ -126,107 +118,38 @@ const ContextMenuWrapper = ({ children, account, menuConfig, onPressMenuItem }: const ViewWalletBackup = () => { const { params } = useRoute>(); - const { backups } = useCloudBackups(); + const createBackup = useCreateBackup(); + const { status, backupProvider, mostRecentBackup } = backupsStore(state => ({ + status: state.status, + backupProvider: state.backupProvider, + mostRecentBackup: state.mostRecentBackup, + })); const { walletId, title: incomingTitle } = params; const creatingWallet = useRef(); const { isDamaged, wallets } = useWallets(); const wallet = wallets?.[walletId]; const dispatch = useDispatch(); const initializeWallet = useInitializeWallet(); - const profilesEnabled = useExperimentalFlag(PROFILES); - - const walletTypeCount: WalletCountPerType = { - phrase: 0, - privateKey: 0, - }; - - const { lastBackupDate } = useVisibleWallets({ wallets, walletTypeCount }); - - const cloudBackups = backups.files - .filter(backup => { - if (IS_ANDROID) { - return !backup.name.match(/UserData/i); - } - - return backup.isFile && backup.size > 0 && !backup.name.match(/UserData/i); - }) - .sort((a, b) => { - return parseTimestampFromFilename(b.name) - parseTimestampFromFilename(a.name); - }); - - const mostRecentBackup = cloudBackups.reduce( - (prev, current) => { - if (!current) { - return prev; - } - - if (!prev) { - return current; - } - - const prevTimestamp = new Date(prev.lastModified).getTime(); - const currentTimestamp = new Date(current.lastModified).getTime(); - if (currentTimestamp > prevTimestamp) { - return current; - } - - return prev; - }, - undefined as Backup | undefined - ); - - const { backupProvider } = useMemo(() => checkWalletsForBackupStatus(wallets), [wallets]); const isSecretPhrase = WalletTypes.mnemonic === wallet?.type; - const title = wallet?.type === WalletTypes.privateKey ? wallet?.addresses[0].label : incomingTitle; + const isBackedUp = isWalletBackedUpForCurrentAccount({ + backupType: wallet?.backupType, + backedUp: wallet?.backedUp, + backupFile: wallet?.backupFile, + }); const { navigate } = useNavigation(); const [isToastActive, setToastActive] = useRecoilState(addressCopiedToastAtom); - const { onSubmit, loading } = useCreateBackup({ - walletId, - }); const backupWalletsToCloud = useCallback(async () => { - if (IS_ANDROID) { - try { - await login(); - - getGoogleAccountUserData().then((accountDetails: GoogleDriveUserData | undefined) => { - if (accountDetails) { - return onSubmit({}); - } - Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); - }); - } catch (e) { - Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); - logger.error(new RainbowError(`[ViewWalletBackup]: Logging into Google Drive failed`), { error: e }); - } - } else { - const isAvailable = await isCloudBackupAvailable(); - if (!isAvailable) { - Alert.alert( - i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.label), - i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.description), - [ - { - onPress: () => { - Linking.openURL('https://support.apple.com/en-us/HT204025'); - }, - text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.show_me), - }, - { - style: 'cancel', - text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.no_thanks), - }, - ] - ); - return; - } - } - - onSubmit({}); - }, [onSubmit]); + executeFnIfCloudBackupAvailable({ + fn: () => + createBackup({ + walletId, + }), + }); + }, [createBackup, walletId]); const onNavigateToSecretWarning = useCallback(() => { navigate(SETTINGS_BACKUP_ROUTES.SECRET_WARNING, { @@ -265,36 +188,17 @@ const ViewWalletBackup = () => { }, onCloseModal: async (args: any) => { if (args) { + walletLoadingStore.setState({ + loadingState: WalletLoadingStates.CREATING_WALLET, + }); + const name = args?.name ?? ''; const color = args?.color ?? null; // Check if the selected wallet is the primary try { // If we found it and it's not damaged use it to create the new account if (wallet && !wallet.damaged) { - const newWallets = await dispatch(createAccountForWallet(wallet.id, color, name)); - // @ts-expect-error - no params - await initializeWallet(); - // If this wallet was previously backed up to the cloud - // We need to update userData backup so it can be restored too - if (wallet.backedUp && wallet.backupType === walletBackupTypes.cloud) { - try { - await backupUserDataIntoCloud({ wallets: newWallets }); - } catch (e) { - logger.error(new RainbowError(`[ViewWalletBackup]: Updating wallet userdata failed after new account creation`), { - error: e, - }); - throw e; - } - } - - // If doesn't exist, we need to create a new wallet - } else { - await createWallet({ - color, - name, - clearCallbackOnStartCreation: true, - }); - await dispatch(walletsLoadState(profilesEnabled)); + await dispatch(createAccountForWallet(wallet.id, color, name)); // @ts-expect-error - no params await initializeWallet(); } @@ -307,6 +211,10 @@ const ViewWalletBackup = () => { showWalletErrorAlert(); }, 1000); } + } finally { + walletLoadingStore.setState({ + loadingState: null, + }); } } creatingWallet.current = false; @@ -324,7 +232,7 @@ const ViewWalletBackup = () => { error: e, }); } - }, [creatingWallet, dispatch, isDamaged, navigate, initializeWallet, profilesEnabled, wallet]); + }, [creatingWallet, dispatch, isDamaged, navigate, initializeWallet, wallet]); const handleCopyAddress = React.useCallback( (address: string) => { @@ -386,7 +294,7 @@ const ViewWalletBackup = () => { return ( - {!wallet?.backedUp && ( + {!isBackedUp && ( <> { /> - {backupProvider === walletBackupTypes.cloud && ( + { title={i18n.t(i18n.l.back_up.cloud.back_up_all_wallets_to_cloud, { cloudPlatformName: cloudPlatform, })} - loading={loading} + backupState={status} onPress={backupWalletsToCloud} /> - - )} - - {backupProvider !== walletBackupTypes.cloud && ( - } @@ -456,20 +355,12 @@ const ViewWalletBackup = () => { titleComponent={} testID={'back-up-manually'} /> - - )} + )} - {wallet?.backedUp && ( + {isBackedUp && ( <> { paddingBottom={{ custom: 24 }} iconComponent={ } titleComponent={ { { )} - - } - onPress={onNavigateToSecretWarning} - size={52} - titleComponent={ - + + - } - /> - + + + )} + + + + } + onPress={onNavigateToSecretWarning} + size={52} + titleComponent={ + + } + /> + + {wallet?.addresses .filter(a => a.visible) - .map((account: RainbowAccount) => ( - - } - labelComponent={ - account.label.endsWith('.eth') || account.label !== '' ? ( - - ) : null - } - titleComponent={ - - } - rightComponent={} - /> - - ))} + .map((account: RainbowAccount) => { + const isNamedOrEns = account.label.endsWith('.eth') || removeFirstEmojiFromString(account.label) !== ''; + const label = isNamedOrEns ? abbreviations.address(account.address, 3, 5) : undefined; + const title = isNamedOrEns + ? abbreviations.abbreviateEnsForDisplay(removeFirstEmojiFromString(account.label), 20) ?? '' + : abbreviations.address(account.address, 3, 5) ?? ''; + + return ( + + } + labelComponent={label ? : null} + titleComponent={} + rightComponent={} + /> + + ); + })} {wallet?.type !== WalletTypes.privateKey && ( - - } - onPress={onCreateNewWallet} - size={52} - titleComponent={} - /> - + + + } + onPress={onCreateNewWallet} + size={52} + titleComponent={} + /> + + )} diff --git a/src/screens/SettingsSheet/components/Backups/WalletsAndBackup.tsx b/src/screens/SettingsSheet/components/Backups/WalletsAndBackup.tsx index 9823fd2555f..74ec4a4e969 100644 --- a/src/screens/SettingsSheet/components/Backups/WalletsAndBackup.tsx +++ b/src/screens/SettingsSheet/components/Backups/WalletsAndBackup.tsx @@ -1,5 +1,4 @@ -/* eslint-disable no-nested-ternary */ -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useMemo, useRef } from 'react'; import { cloudPlatform } from '@/utils/platform'; import Menu from '../Menu'; import MenuContainer from '../MenuContainer'; @@ -12,11 +11,11 @@ import WalletTypes, { EthereumWalletType } from '@/helpers/walletTypes'; import ImageAvatar from '@/components/contacts/ImageAvatar'; import { useENSAvatar, useInitializeWallet, useManageCloudBackups, useWallets } from '@/hooks'; import { useNavigation } from '@/navigation'; -import { abbreviations } from '@/utils'; +import { abbreviations, deviceUtils } from '@/utils'; import { addressHashedEmoji } from '@/utils/profileUtils'; import * as i18n from '@/languages'; -import MenuHeader from '../MenuHeader'; -import { checkWalletsForBackupStatus } from '../../utils'; +import MenuHeader, { StatusType } from '../MenuHeader'; +import { checkLocalWalletsForBackupStatus, isWalletBackedUpForCurrentAccount } from '../../utils'; import { Inline, Text, Box, Stack } from '@/design-system'; import { ContactAvatar } from '@/components/contacts'; import { useTheme } from '@/theme'; @@ -25,26 +24,40 @@ import { backupsCard } from '@/components/cards/utils/constants'; import { WalletCountPerType, useVisibleWallets } from '../../useVisibleWallets'; import { SETTINGS_BACKUP_ROUTES } from './routes'; import { RainbowAccount, createWallet } from '@/model/wallet'; -import { PROFILES, useExperimentalFlag } from '@/config'; import { useDispatch } from 'react-redux'; import { walletsLoadState } from '@/redux/wallets'; import { RainbowError, logger } from '@/logger'; import { IS_ANDROID, IS_IOS } from '@/env'; -import { BackupTypes, useCreateBackup } from '@/components/backup/useCreateBackup'; +import { useCreateBackup } from '@/components/backup/useCreateBackup'; import { BackUpMenuItem } from './BackUpMenuButton'; import { format } from 'date-fns'; import { removeFirstEmojiFromString } from '@/helpers/emojiHandler'; -import { Backup, parseTimestampFromFilename } from '@/model/backup'; -import { useCloudBackups } from '@/components/backup/CloudBackupProvider'; -import { GoogleDriveUserData, getGoogleAccountUserData, isCloudBackupAvailable, login } from '@/handlers/cloudBackup'; -import { WrappedAlert as Alert } from '@/helpers/alert'; -import { Linking } from 'react-native'; -import { noop } from 'lodash'; +import { backupsStore, CloudBackupState } from '@/state/backups/backups'; +import { WalletLoadingStates } from '@/helpers/walletLoadingStates'; +import { executeFnIfCloudBackupAvailable } from '@/model/backup'; +import { walletLoadingStore } from '@/state/walletLoading/walletLoading'; +import { AbsolutePortalRoot } from '@/components/AbsolutePortal'; +import { FlatList, ScrollView } from 'react-native'; type WalletPillProps = { account: RainbowAccount; }; +// constants for the account section +const menuContainerPadding = 19.5; // 19px is the padding on the left and right of the container but we need 1px more to account for the shadows on each container +const accountsContainerWidth = deviceUtils.dimensions.width - menuContainerPadding * 4; +const spaceBetweenAccounts = 4; +const accountsItemWidth = accountsContainerWidth / 3; +const basePadding = 16; +const rowHeight = 36; + +const getAccountSectionHeight = (numAccounts: number) => { + const rows = Math.ceil(Math.max(1, numAccounts) / 3); + const paddingBetween = (rows - 1) * 4; + + return basePadding + rows * rowHeight - paddingBetween; +}; + const WalletPill = ({ account }: WalletPillProps) => { const label = useMemo(() => removeFirstEmojiFromString(account.label), [account.label]); @@ -58,7 +71,7 @@ const WalletPill = ({ account }: WalletPillProps) => { key={account.address} flexDirection="row" alignItems="center" - backgroundColor={colors.alpha(colors.grey, 0.4)} + backgroundColor={colors.alpha(colors.grey, 0.24)} borderRadius={23} shadowColor={isDarkMode ? colors.shadow : colors.alpha(colors.blueGreyDark, 0.1)} elevation={12} @@ -67,6 +80,7 @@ const WalletPill = ({ account }: WalletPillProps) => { paddingLeft={{ custom: 4 }} paddingRight={{ custom: 8 }} padding={{ custom: 4 }} + width={{ custom: accountsItemWidth }} > {ENSAvatar?.imageUrl ? ( @@ -82,27 +96,22 @@ const WalletPill = ({ account }: WalletPillProps) => { ); }; -const getAccountSectionHeight = (numAccounts: number) => { - const basePadding = 16; - const rowHeight = 36; - const rows = Math.ceil(Math.max(1, numAccounts) / 3); - const paddingBetween = (rows - 1) * 4; - - return basePadding + rows * rowHeight - paddingBetween; -}; - export const WalletsAndBackup = () => { const { navigate } = useNavigation(); const { wallets } = useWallets(); - const profilesEnabled = useExperimentalFlag(PROFILES); - const { backups } = useCloudBackups(); const dispatch = useDispatch(); - const initializeWallet = useInitializeWallet(); + const scrollviewRef = useRef(null); - const { onSubmit, loading } = useCreateBackup({ - walletId: undefined, // NOTE: This is not used when backing up All wallets - }); + const createBackup = useCreateBackup(); + const { status, backupProvider, backups, mostRecentBackup } = backupsStore(state => ({ + status: state.status, + backupProvider: state.backupProvider, + backups: state.backups, + mostRecentBackup: state.mostRecentBackup, + })); + + const initializeWallet = useInitializeWallet(); const { manageCloudBackups } = useManageCloudBackups(); @@ -111,52 +120,15 @@ export const WalletsAndBackup = () => { privateKey: 0, }; - const { allBackedUp, backupProvider } = useMemo(() => checkWalletsForBackupStatus(wallets), [wallets]); + const { allBackedUp } = useMemo(() => checkLocalWalletsForBackupStatus(wallets, backups), [wallets, backups]); - const { visibleWallets, lastBackupDate } = useVisibleWallets({ wallets, walletTypeCount }); - - const cloudBackups = backups.files - .filter(backup => { - if (IS_ANDROID) { - return !backup.name.match(/UserData/i); - } - - return backup.isFile && backup.size > 0 && !backup.name.match(/UserData/i); - }) - .sort((a, b) => { - return parseTimestampFromFilename(b.name) - parseTimestampFromFilename(a.name); - }); - - const mostRecentBackup = cloudBackups.reduce( - (prev, current) => { - if (!current) { - return prev; - } - - if (!prev) { - return current; - } - - const prevTimestamp = new Date(prev.lastModified).getTime(); - const currentTimestamp = new Date(current.lastModified).getTime(); - if (currentTimestamp > prevTimestamp) { - return current; - } - - return prev; - }, - undefined as Backup | undefined - ); + const visibleWallets = useVisibleWallets({ wallets, walletTypeCount }); const sortedWallets = useMemo(() => { - const notBackedUpSecretPhraseWallets = visibleWallets.filter( - wallet => !wallet.isBackedUp && wallet.type === EthereumWalletType.mnemonic - ); - const notBackedUpPrivateKeyWallets = visibleWallets.filter( - wallet => !wallet.isBackedUp && wallet.type === EthereumWalletType.privateKey - ); - const backedUpSecretPhraseWallets = visibleWallets.filter(wallet => wallet.isBackedUp && wallet.type === EthereumWalletType.mnemonic); - const backedUpPrivateKeyWallets = visibleWallets.filter(wallet => wallet.isBackedUp && wallet.type === EthereumWalletType.privateKey); + const notBackedUpSecretPhraseWallets = visibleWallets.filter(wallet => !wallet.backedUp && wallet.type === EthereumWalletType.mnemonic); + const notBackedUpPrivateKeyWallets = visibleWallets.filter(wallet => !wallet.backedUp && wallet.type === EthereumWalletType.privateKey); + const backedUpSecretPhraseWallets = visibleWallets.filter(wallet => wallet.backedUp && wallet.type === EthereumWalletType.mnemonic); + const backedUpPrivateKeyWallets = visibleWallets.filter(wallet => wallet.backedUp && wallet.type === EthereumWalletType.privateKey); return [ ...notBackedUpSecretPhraseWallets, @@ -166,48 +138,28 @@ export const WalletsAndBackup = () => { ]; }, [visibleWallets]); - const backupAllNonBackedUpWalletsTocloud = useCallback(async () => { - if (IS_ANDROID) { - try { - await login(); - - getGoogleAccountUserData().then((accountDetails: GoogleDriveUserData | undefined) => { - if (accountDetails) { - return onSubmit({ type: BackupTypes.All }); + const backupAllNonBackedUpWalletsTocloud = useCallback(() => { + executeFnIfCloudBackupAvailable({ + fn: () => createBackup({}), + }); + }, [createBackup]); + + const enableCloudBackups = useCallback(() => { + executeFnIfCloudBackupAvailable({ + fn: async () => { + // NOTE: For Android we could be coming from a not-logged-in state, so we + // need to check if we have any wallets to back up first. + if (IS_ANDROID) { + const currentBackups = backupsStore.getState().backups; + if (checkLocalWalletsForBackupStatus(wallets, currentBackups).allBackedUp) { + return; } - Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); - }); - } catch (e) { - Alert.alert(i18n.t(i18n.l.back_up.errors.no_account_found)); - logger.error(new RainbowError(`[WalletsAndBackup]: Logging into Google Drive failed`), { - error: e, - }); - } - } else { - const isAvailable = await isCloudBackupAvailable(); - if (!isAvailable) { - Alert.alert( - i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.label), - i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.description), - [ - { - onPress: () => { - Linking.openURL('https://support.apple.com/en-us/HT204025'); - }, - text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.show_me), - }, - { - style: 'cancel', - text: i18n.t(i18n.l.modal.back_up.alerts.cloud_not_enabled.no_thanks), - }, - ] - ); - return; - } - } - - onSubmit({ type: BackupTypes.All }); - }, [onSubmit]); + } + return createBackup({}); + }, + logout: true, + }); + }, [createBackup, wallets]); const onViewCloudBackups = useCallback(async () => { navigate(SETTINGS_BACKUP_ROUTES.VIEW_CLOUD_BACKUPS, { @@ -223,13 +175,17 @@ export const WalletsAndBackup = () => { onCloseModal: async ({ name }: { name: string }) => { const nameValue = name.trim() !== '' ? name.trim() : ''; try { + walletLoadingStore.setState({ + loadingState: WalletLoadingStates.CREATING_WALLET, + }); + await createWallet({ color: null, name: nameValue, clearCallbackOnStartCreation: true, }); - await dispatch(walletsLoadState(profilesEnabled)); + await dispatch(walletsLoadState()); // @ts-expect-error - no params await initializeWallet(); @@ -237,10 +193,15 @@ export const WalletsAndBackup = () => { logger.error(new RainbowError(`[WalletsAndBackup]: Failed to create new secret phrase`), { error: err, }); + } finally { + walletLoadingStore.setState({ + loadingState: null, + }); + scrollviewRef.current?.scrollTo({ y: 0, animated: true }); } }, }); - }, [dispatch, initializeWallet, navigate, profilesEnabled, walletTypeCount.phrase]); + }, [dispatch, initializeWallet, navigate, walletTypeCount.phrase]); const onPressLearnMoreAboutCloudBackups = useCallback(() => { navigate(Routes.LEARN_WEB_VIEW_SCREEN, { @@ -263,6 +224,66 @@ export const WalletsAndBackup = () => { [navigate, wallets] ); + const { status: iconStatusType, text } = useMemo<{ status: StatusType; text: string }>(() => { + if (!backupProvider) { + if (status === CloudBackupState.FailedToInitialize || status === CloudBackupState.NotAvailable) { + return { + status: 'not-enabled', + text: i18n.t(i18n.l.back_up.cloud.statuses.not_enabled), + }; + } + + if (status !== CloudBackupState.Ready) { + return { + status: 'out-of-sync', + text: i18n.t(i18n.l.back_up.cloud.statuses.syncing), + }; + } + + if (!allBackedUp) { + return { + status: 'out-of-date', + text: i18n.t(i18n.l.back_up.cloud.statuses.out_of_date), + }; + } + + return { + status: 'up-to-date', + text: i18n.t(i18n.l.back_up.cloud.statuses.up_to_date), + }; + } + + if (status === CloudBackupState.FailedToInitialize || status === CloudBackupState.NotAvailable) { + return { + status: 'not-enabled', + text: i18n.t(i18n.l.back_up.cloud.statuses.not_enabled), + }; + } + + if (status !== CloudBackupState.Ready) { + return { + status: 'out-of-sync', + text: i18n.t(i18n.l.back_up.cloud.statuses.syncing), + }; + } + + if (!allBackedUp) { + return { + status: 'out-of-date', + text: i18n.t(i18n.l.back_up.cloud.statuses.out_of_date), + }; + } + + return { + status: 'up-to-date', + text: i18n.t(i18n.l.back_up.cloud.statuses.up_to_date), + }; + }, [backupProvider, status, allBackedUp]); + + const isCloudBackupDisabled = useMemo(() => { + return status !== CloudBackupState.Ready && status !== CloudBackupState.NotAvailable; + }, [status]); + const renderView = useCallback(() => { switch (backupProvider) { default: @@ -275,7 +296,7 @@ export const WalletsAndBackup = () => { paddingTop={{ custom: 8 }} iconComponent={} titleComponent={} - statusComponent={} + statusComponent={} labelComponent={ { /> - - - + + + + + - {sortedWallets.map(({ name, isBackedUp, accounts, key, numAccounts, backedUp, imported }) => { + {sortedWallets.map(({ id, name, backedUp, backupFile, backupType, imported, addresses }) => { + const isBackedUp = isWalletBackedUpForCurrentAccount({ backedUp, backupFile, backupType }); + return ( - + { } > - {!backedUp && ( + {!isBackedUp && ( @@ -330,37 +356,43 @@ export const WalletsAndBackup = () => { {imported && } 1 + addresses.length > 1 ? i18n.t(i18n.l.wallet.back_ups.wallet_count_gt_one, { - numAccounts, + numAccounts: addresses.length, }) : i18n.t(i18n.l.wallet.back_ups.wallet_count, { - numAccounts, + numAccounts: addresses.length, }) } /> } leftComponent={} - onPress={() => onNavigateToWalletView(key, name)} + onPress={() => onNavigateToWalletView(id, name)} size={60} titleComponent={} /> - {accounts.map(account => ( - - ))} - + } + keyExtractor={item => item.address} + numColumns={3} + scrollEnabled={false} + /> } /> ); })} + { titleComponent={} /> - - - } - onPress={onViewCloudBackups} - size={52} - titleComponent={ - - } - /> - } - onPress={manageCloudBackups} - size={52} - titleComponent={ - - } - /> - ); @@ -416,12 +417,7 @@ export const WalletsAndBackup = () => { paddingTop={{ custom: 8 }} iconComponent={} titleComponent={} - statusComponent={ - - } + statusComponent={} labelComponent={ allBackedUp ? ( { /> - + - - + } + > + + + - {sortedWallets.map(({ name, isBackedUp, accounts, key, numAccounts, backedUp, imported }) => { + {sortedWallets.map(({ id, name, backedUp, backupFile, backupType, imported, addresses }) => { + const isBackedUp = isWalletBackedUpForCurrentAccount({ backedUp, backupFile, backupType }); + return ( - + { } > - {!backedUp && } + {!isBackedUp && ( + + )} {imported && } 1 + addresses.length > 1 ? i18n.t(i18n.l.wallet.back_ups.wallet_count_gt_one, { - numAccounts, + numAccounts: addresses.length, }) : i18n.t(i18n.l.wallet.back_ups.wallet_count, { - numAccounts, + numAccounts: addresses.length, }) } /> } leftComponent={} - onPress={() => onNavigateToWalletView(key, name)} + onPress={() => onNavigateToWalletView(id, name)} size={60} titleComponent={} /> - {accounts.map(account => ( - - ))} - + } + keyExtractor={item => item.address} + numColumns={3} + scrollEnabled={false} + /> } /> @@ -581,12 +588,13 @@ export const WalletsAndBackup = () => { case WalletBackupTypes.manual: { return ( - {sortedWallets.map(({ name, isBackedUp, accounts, key, numAccounts, backedUp, imported }) => { + {sortedWallets.map(({ id, name, backedUp, backupType, backupFile, imported, addresses }) => { + const isBackedUp = isWalletBackedUpForCurrentAccount({ backedUp, backupType, backupFile }); return ( - + { } > - {!backedUp && } + {!isBackedUp && ( + + )} {imported && } 1 + addresses.length > 1 ? i18n.t(i18n.l.wallet.back_ups.wallet_count_gt_one, { - numAccounts, + numAccounts: addresses.length, }) : i18n.t(i18n.l.wallet.back_ups.wallet_count, { - numAccounts, + numAccounts: addresses.length, }) } /> } leftComponent={} - onPress={() => onNavigateToWalletView(key, name)} + onPress={() => onNavigateToWalletView(id, name)} size={60} titleComponent={} /> - {accounts.map(account => ( - - ))} - + } + keyExtractor={item => item.address} + numColumns={3} + scrollEnabled={false} + /> } /> @@ -645,26 +664,29 @@ export const WalletsAndBackup = () => { /> - - {i18n.t(i18n.l.wallet.back_ups.cloud_backup_description, { - cloudPlatform, - })} + + + {i18n.t(i18n.l.wallet.back_ups.cloud_backup_description, { + cloudPlatform, + })} - - {' '} - {i18n.t(i18n.l.wallet.back_ups.cloud_backup_link)} + + {' '} + {i18n.t(i18n.l.wallet.back_ups.cloud_backup_link)} + - - } - > - - + } + > + + + ); @@ -672,21 +694,29 @@ export const WalletsAndBackup = () => { } }, [ backupProvider, - loading, - backupAllNonBackedUpWalletsTocloud, + iconStatusType, + text, + status, + isCloudBackupDisabled, + enableCloudBackups, sortedWallets, onCreateNewSecretPhrase, - onViewCloudBackups, - manageCloudBackups, navigate, onNavigateToWalletView, allBackedUp, mostRecentBackup, - lastBackupDate, + backupAllNonBackedUpWalletsTocloud, + onViewCloudBackups, + manageCloudBackups, onPressLearnMoreAboutCloudBackups, ]); - return {renderView()}; + return ( + + + {renderView()} + + ); }; export default WalletsAndBackup; diff --git a/src/screens/SettingsSheet/components/GoogleAccountSection.tsx b/src/screens/SettingsSheet/components/GoogleAccountSection.tsx index b415e1d4d30..10e28e6ebc6 100644 --- a/src/screens/SettingsSheet/components/GoogleAccountSection.tsx +++ b/src/screens/SettingsSheet/components/GoogleAccountSection.tsx @@ -3,14 +3,12 @@ import { getGoogleAccountUserData, GoogleDriveUserData, logoutFromGoogleDrive } import ImageAvatar from '@/components/contacts/ImageAvatar'; import { showActionSheetWithOptions } from '@/utils'; import * as i18n from '@/languages'; -import { clearAllWalletsBackupStatus, updateWalletBackupStatusesBasedOnCloudUserData } from '@/redux/wallets'; -import { useDispatch } from 'react-redux'; import Menu from './Menu'; import MenuItem from './MenuItem'; import { logger, RainbowError } from '@/logger'; +import { backupsStore } from '@/state/backups/backups'; export const GoogleAccountSection: React.FC = () => { - const dispatch = useDispatch(); const [accountDetails, setAccountDetails] = useState(undefined); const [loading, setLoading] = useState(true); @@ -29,12 +27,6 @@ export const GoogleAccountSection: React.FC = () => { }); }, []); - const removeBackupStateFromAllWallets = async () => { - setLoading(true); - await dispatch(clearAllWalletsBackupStatus()); - setLoading(false); - }; - const onGoogleAccountPress = () => { showActionSheetWithOptions( { @@ -49,11 +41,10 @@ export const GoogleAccountSection: React.FC = () => { if (buttonIndex === 0) { logoutFromGoogleDrive(); setAccountDetails(undefined); - removeBackupStateFromAllWallets().then(() => loginToGoogleDrive()); + loginToGoogleDrive(); } else if (buttonIndex === 1) { logoutFromGoogleDrive(); setAccountDetails(undefined); - removeBackupStateFromAllWallets(); } } ); @@ -61,10 +52,10 @@ export const GoogleAccountSection: React.FC = () => { const loginToGoogleDrive = async () => { setLoading(true); - await dispatch(updateWalletBackupStatusesBasedOnCloudUserData()); try { const accountDetails = await getGoogleAccountUserData(); setAccountDetails(accountDetails ?? undefined); + backupsStore.getState().syncAndFetchBackups(); } catch (error) { logger.error(new RainbowError(`[GoogleAccountSection]: Logging into Google Drive failed`), { error: (error as Error).message, diff --git a/src/screens/SettingsSheet/components/MenuContainer.tsx b/src/screens/SettingsSheet/components/MenuContainer.tsx index 500960c55a5..cabb0157fb7 100644 --- a/src/screens/SettingsSheet/components/MenuContainer.tsx +++ b/src/screens/SettingsSheet/components/MenuContainer.tsx @@ -3,13 +3,14 @@ import { ScrollView } from 'react-native'; import { Box, Inset, Space, Stack } from '@/design-system'; interface MenuContainerProps { + scrollviewRef?: React.RefObject; children: React.ReactNode; Footer?: React.ReactNode; testID?: string; space?: Space; } -const MenuContainer = ({ children, testID, Footer, space = '36px' }: MenuContainerProps) => { +const MenuContainer = ({ scrollviewRef, children, testID, Footer, space = '36px' }: MenuContainerProps) => { return ( // ios scroll fix ( ); -type StatusType = 'not-enabled' | 'out-of-date' | 'up-to-date'; +export type StatusType = 'not-enabled' | 'out-of-date' | 'up-to-date' | 'out-of-sync'; interface StatusIconProps { status: StatusType; @@ -87,6 +87,10 @@ const StatusIcon = ({ status, text }: StatusIconProps) => { backgroundColor: isDarkMode ? colors.alpha(colors.blueGreyDark, 0.1) : colors.alpha(colors.blueGreyDark, 0.1), color: isDarkMode ? colors.alpha(colors.blueGreyDark, 0.6) : colors.alpha(colors.blueGreyDark, 0.8), }, + 'out-of-sync': { + backgroundColor: colors.alpha(colors.yellow, 0.2), + color: colors.yellow, + }, 'out-of-date': { backgroundColor: colors.alpha(colors.brightRed, 0.2), color: colors.brightRed, diff --git a/src/screens/SettingsSheet/components/SettingsSection.tsx b/src/screens/SettingsSheet/components/SettingsSection.tsx index 9fae44a89eb..095b88cbb85 100644 --- a/src/screens/SettingsSheet/components/SettingsSection.tsx +++ b/src/screens/SettingsSheet/components/SettingsSection.tsx @@ -28,9 +28,11 @@ import { showActionSheetWithOptions } from '@/utils'; import { handleReviewPromptAction } from '@/utils/reviewAlert'; import { ReviewPromptAction } from '@/storage/schema'; import { SettingsExternalURLs } from '../constants'; -import { capitalizeFirstLetter, checkWalletsForBackupStatus } from '../utils'; +import { checkLocalWalletsForBackupStatus } from '../utils'; import walletBackupTypes from '@/helpers/walletBackupTypes'; import { Box } from '@/design-system'; +import { capitalize } from 'lodash'; +import { backupsStore } from '@/state/backups/backups'; interface SettingsSectionProps { onCloseModal: () => void; @@ -59,10 +61,14 @@ const SettingsSection = ({ const isLanguageSelectionEnabled = useExperimentalFlag(LANGUAGE_SETTINGS); const isNotificationsEnabled = useExperimentalFlag(NOTIFICATIONS); + const { backupProvider, backups } = backupsStore(state => ({ + backupProvider: state.backupProvider, + backups: state.backups, + })); + const { isDarkMode, setTheme, colorScheme } = useTheme(); const onSendFeedback = useSendFeedback(); - const { backupProvider } = useMemo(() => checkWalletsForBackupStatus(wallets), [wallets]); const onPressReview = useCallback(async () => { if (ios) { @@ -85,7 +91,7 @@ const SettingsSection = ({ const onPressLearn = useCallback(() => Linking.openURL(SettingsExternalURLs.rainbowLearn), []); - const { allBackedUp, canBeBackedUp } = useMemo(() => checkWalletsForBackupStatus(wallets), [wallets]); + const { allBackedUp } = useMemo(() => checkLocalWalletsForBackupStatus(wallets, backups), [wallets, backups]); const themeMenuConfig = useMemo(() => { return { @@ -170,21 +176,19 @@ const SettingsSection = ({ return ( }> - {canBeBackedUp && ( - } - onPress={onPressBackup} - rightComponent={ - - - - } - size={60} - testID={'backup-section'} - titleComponent={} - /> - )} + } + onPress={onPressBackup} + rightComponent={ + + + + } + size={60} + testID={'backup-section'} + titleComponent={} + /> {isNotificationsEnabled && ( } - rightComponent={{colorScheme ? capitalizeFirstLetter(colorScheme) : ''}} + rightComponent={{colorScheme ? capitalize(colorScheme) : ''}} size={60} testID={`theme-section-${isDarkMode ? 'dark' : 'light'}`} titleComponent={} diff --git a/src/screens/SettingsSheet/useVisibleWallets.ts b/src/screens/SettingsSheet/useVisibleWallets.ts index 64e73aa0929..c677dd738db 100644 --- a/src/screens/SettingsSheet/useVisibleWallets.ts +++ b/src/screens/SettingsSheet/useVisibleWallets.ts @@ -1,9 +1,7 @@ -import { useState } from 'react'; import * as i18n from '@/languages'; import WalletTypes, { EthereumWalletType } from '@/helpers/walletTypes'; -import { DEFAULT_WALLET_NAME, RainbowAccount, RainbowWallet } from '@/model/wallet'; -import walletBackupTypes from '@/helpers/walletBackupTypes'; +import { RainbowWallet } from '@/model/wallet'; type WalletByKey = { [key: string]: RainbowWallet; @@ -19,20 +17,6 @@ export type WalletCountPerType = { privateKey: number; }; -export type AmendedRainbowWallet = RainbowWallet & { - name: string; - isBackedUp: boolean | undefined; - accounts: RainbowAccount[]; - key: string; - label: string; - numAccounts: number; -}; - -type UseVisibleWalletReturnType = { - visibleWallets: AmendedRainbowWallet[]; - lastBackupDate: number | undefined; -}; - export const getTitleForWalletType = (type: EthereumWalletType, walletTypeCount: WalletCountPerType) => { switch (type) { case EthereumWalletType.mnemonic: @@ -48,51 +32,26 @@ export const getTitleForWalletType = (type: EthereumWalletType, walletTypeCount: } }; -const isWalletGroupNamed = (wallet: RainbowWallet) => wallet.name && wallet.name.trim() !== '' && wallet.name !== DEFAULT_WALLET_NAME; - -export const useVisibleWallets = ({ wallets, walletTypeCount }: UseVisibleWalletProps): UseVisibleWalletReturnType => { - const [lastBackupDate, setLastBackupDate] = useState(undefined); - +export const useVisibleWallets = ({ wallets, walletTypeCount }: UseVisibleWalletProps): RainbowWallet[] => { if (!wallets) { - return { - visibleWallets: [], - lastBackupDate, - }; + return []; } - return { - visibleWallets: Object.keys(wallets) - .filter(key => wallets[key].type !== WalletTypes.readOnly && wallets[key].type !== WalletTypes.bluetooth) - .map(key => { - const wallet = wallets[key]; - const visibleAccounts = (wallet.addresses || []).filter(a => a.visible); - const totalAccounts = visibleAccounts.length; - - if ( - wallet.backedUp && - wallet.backupDate && - wallet.backupType === walletBackupTypes.cloud && - (!lastBackupDate || Number(wallet.backupDate) > lastBackupDate) - ) { - setLastBackupDate(Number(wallet.backupDate)); - } - - if (wallet.type === WalletTypes.mnemonic) { - walletTypeCount.phrase += 1; - } else if (wallet.type === WalletTypes.privateKey) { - walletTypeCount.privateKey += 1; - } - - return { - ...wallet, - name: isWalletGroupNamed(wallet) ? wallet.name : getTitleForWalletType(wallet.type, walletTypeCount), - isBackedUp: wallet.backedUp, - accounts: visibleAccounts, - key, - label: wallet.name, - numAccounts: totalAccounts, - }; - }), - lastBackupDate, - }; + return Object.keys(wallets) + .filter(key => wallets[key].type !== WalletTypes.readOnly && wallets[key].type !== WalletTypes.bluetooth) + .map(key => { + const wallet = wallets[key]; + + if (wallet.type === WalletTypes.mnemonic) { + walletTypeCount.phrase += 1; + } else if (wallet.type === WalletTypes.privateKey) { + walletTypeCount.privateKey += 1; + } + + return { + ...wallet, + name: getTitleForWalletType(wallet.type, walletTypeCount), + addresses: Object.values(wallet.addresses).filter(address => address.visible), + }; + }); }; diff --git a/src/screens/SettingsSheet/utils.ts b/src/screens/SettingsSheet/utils.ts index 08fa3e03e22..0fb1d26faff 100644 --- a/src/screens/SettingsSheet/utils.ts +++ b/src/screens/SettingsSheet/utils.ts @@ -1,118 +1,121 @@ import WalletBackupTypes from '@/helpers/walletBackupTypes'; import WalletTypes from '@/helpers/walletTypes'; +import { useWallets } from '@/hooks'; +import { isEmpty } from 'lodash'; +import { BackupFile, CloudBackups, parseTimestampFromFilename } from '@/model/backup'; +import * as i18n from '@/languages'; +import { cloudPlatform } from '@/utils/platform'; +import { backupsStore, CloudBackupState } from '@/state/backups/backups'; import { RainbowWallet } from '@/model/wallet'; -import { Navigation } from '@/navigation'; -import { BackupUserData, getLocalBackupPassword } from '@/model/backup'; -import Routes from '@/navigation/routesNames'; -import WalletBackupStepTypes from '@/helpers/walletBackupStepTypes'; - -type WalletsByKey = { - [key: string]: RainbowWallet; -}; +import { IS_ANDROID, IS_IOS } from '@/env'; +import { normalizeAndroidBackupFilename } from '@/handlers/cloudBackup'; type WalletBackupStatus = { allBackedUp: boolean; areBackedUp: boolean; canBeBackedUp: boolean; - backupProvider: string | undefined; }; -export const capitalizeFirstLetter = (str: string) => { - return str.charAt(0).toUpperCase() + str.slice(1); +export const hasManuallyBackedUpWallet = (wallets: ReturnType['wallets']) => { + if (!wallets) return false; + return Object.values(wallets).some(wallet => wallet.backupType === WalletBackupTypes.manual); }; -export const checkUserDataForBackupProvider = (userData?: BackupUserData): { backupProvider: string | undefined } => { - let backupProvider: string | undefined = undefined; - - if (!userData?.wallets) return { backupProvider }; - - Object.values(userData.wallets).forEach(wallet => { - if (wallet.backedUp && wallet.type !== WalletTypes.readOnly) { - if (wallet.backupType === WalletBackupTypes.cloud) { - backupProvider = WalletBackupTypes.cloud; - } else if (backupProvider !== WalletBackupTypes.cloud && wallet.backupType === WalletBackupTypes.manual) { - backupProvider = WalletBackupTypes.manual; - } - } - }); - - return { backupProvider }; -}; - -export const checkWalletsForBackupStatus = (wallets: WalletsByKey | null): WalletBackupStatus => { - if (!wallets) +export const checkLocalWalletsForBackupStatus = ( + wallets: ReturnType['wallets'], + backups: CloudBackups +): WalletBackupStatus => { + if (!wallets || isEmpty(wallets)) { return { allBackedUp: false, areBackedUp: false, canBeBackedUp: false, - backupProvider: undefined, }; + } + + // FOR ANDROID, we need to check if the current google account also has the backup file + if (IS_ANDROID) { + return Object.values(wallets).reduce( + (acc, wallet) => { + const isBackupEligible = wallet.type !== WalletTypes.readOnly && wallet.type !== WalletTypes.bluetooth; + const hasBackupFile = backups.files.some( + file => normalizeAndroidBackupFilename(file.name) === normalizeAndroidBackupFilename(wallet.backupFile ?? '') + ); + + return { + allBackedUp: acc.allBackedUp && hasBackupFile && (wallet.backedUp || !isBackupEligible), + areBackedUp: acc.areBackedUp && hasBackupFile && (wallet.backedUp || !isBackupEligible), + canBeBackedUp: acc.canBeBackedUp && isBackupEligible, + }; + }, + { allBackedUp: true, areBackedUp: true, canBeBackedUp: false } + ); + } + + return Object.values(wallets).reduce( + (acc, wallet) => { + const isBackupEligible = wallet.type !== WalletTypes.readOnly && wallet.type !== WalletTypes.bluetooth; + + return { + allBackedUp: acc.allBackedUp && (wallet.backedUp || !isBackupEligible), + areBackedUp: acc.areBackedUp && (wallet.backedUp || !isBackupEligible || wallet.imported), + canBeBackedUp: acc.canBeBackedUp && isBackupEligible, + }; + }, + { allBackedUp: true, areBackedUp: true, canBeBackedUp: false } + ); +}; - let backupProvider: string | undefined = undefined; - let areBackedUp = true; - let canBeBackedUp = false; - let allBackedUp = true; - - Object.keys(wallets).forEach(key => { - if (wallets[key].backedUp && wallets[key].type !== WalletTypes.readOnly && wallets[key].type !== WalletTypes.bluetooth) { - if (wallets[key].backupType === WalletBackupTypes.cloud) { - backupProvider = WalletBackupTypes.cloud; - } else if (backupProvider !== WalletBackupTypes.cloud && wallets[key].backupType === WalletBackupTypes.manual) { - backupProvider = WalletBackupTypes.manual; - } - } +export const getMostRecentCloudBackup = (backups: BackupFile[]) => { + const cloudBackups = backups.sort((a, b) => { + return parseTimestampFromFilename(b.name) - parseTimestampFromFilename(a.name); + }); - if (!wallets[key].backedUp && wallets[key].type !== WalletTypes.readOnly && wallets[key].type !== WalletTypes.bluetooth) { - allBackedUp = false; + return cloudBackups.reduce((prev, current) => { + if (!current) { + return prev; } - if ( - !wallets[key].backedUp && - wallets[key].type !== WalletTypes.readOnly && - wallets[key].type !== WalletTypes.bluetooth && - !wallets[key].imported - ) { - areBackedUp = false; + if (!prev) { + return current; } - if (wallets[key].type !== WalletTypes.bluetooth && wallets[key].type !== WalletTypes.readOnly) { - canBeBackedUp = true; + const prevTimestamp = new Date(prev.lastModified).getTime(); + const currentTimestamp = new Date(current.lastModified).getTime(); + if (currentTimestamp > prevTimestamp) { + return current; } - }); - return { - allBackedUp, - areBackedUp, - canBeBackedUp, - backupProvider, - }; + + return prev; + }, cloudBackups[0]); }; -export const getWalletsThatNeedBackedUp = (wallets: { [key: string]: RainbowWallet } | null): RainbowWallet[] => { - if (!wallets) return []; - const walletsToBackup: RainbowWallet[] = []; - Object.keys(wallets).forEach(key => { - if ( - !wallets[key].backedUp && - wallets[key].type !== WalletTypes.readOnly && - wallets[key].type !== WalletTypes.bluetooth && - !wallets[key].imported - ) { - walletsToBackup.push(wallets[key]); - } - }); - return walletsToBackup; +export const titleForBackupState: Partial> = { + [CloudBackupState.Initializing]: i18n.t(i18n.l.back_up.cloud.syncing_cloud_store, { + cloudPlatformName: cloudPlatform, + }), + [CloudBackupState.Syncing]: i18n.t(i18n.l.back_up.cloud.syncing_cloud_store, { + cloudPlatformName: cloudPlatform, + }), + [CloudBackupState.Fetching]: i18n.t(i18n.l.back_up.cloud.fetching_backups, { + cloudPlatformName: cloudPlatform, + }), }; -export const fetchBackupPasswordAndNavigate = async () => { - const password = await getLocalBackupPassword(); +export const isWalletBackedUpForCurrentAccount = ({ backupType, backedUp, backupFile }: Partial) => { + if (!backupType || !backupFile) { + return false; + } - return new Promise(resolve => { - return Navigation.handleAction(Routes.BACKUP_SHEET, { - step: WalletBackupStepTypes.backup_cloud, - password, - onSuccess: async (password: string) => { - resolve(password); - }, - }); - }); + if (IS_IOS || backupType === WalletBackupTypes.manual) { + return backedUp; + } + + // NOTE: For Android, we also need to check if the current google account has the matching backup file + if (!backupFile) { + return false; + } + + const backupFiles = backupsStore.getState().backups; + return backupFiles.files.some(file => normalizeAndroidBackupFilename(file.name) === normalizeAndroidBackupFilename(backupFile)); }; diff --git a/src/screens/WalletScreen/index.tsx b/src/screens/WalletScreen/index.tsx index acfcbcfb176..bf5fa201570 100644 --- a/src/screens/WalletScreen/index.tsx +++ b/src/screens/WalletScreen/index.tsx @@ -25,11 +25,11 @@ import { RemoteCardsSync } from '@/state/sync/RemoteCardsSync'; import { RemotePromoSheetSync } from '@/state/sync/RemotePromoSheetSync'; import { UserAssetsSync } from '@/state/sync/UserAssetsSync'; import { MobileWalletProtocolListener } from '@/components/MobileWalletProtocolListener'; -import { runWalletBackupStatusChecks } from '@/handlers/walletReadyEvents'; import { RouteProp, useRoute } from '@react-navigation/native'; import { RootStackParamList } from '@/navigation/types'; import { useNavigation } from '@/navigation'; import Routes from '@/navigation/Routes'; +import { BackendNetworks } from '@/components/BackendNetworks'; import walletTypes from '@/helpers/walletTypes'; enum WalletLoadingStates { @@ -45,7 +45,6 @@ function WalletScreen() { const walletState = useRef(WalletLoadingStates.IDLE); const initializeWallet = useInitializeWallet(); const { network: currentNetwork, accountAddress, appIcon } = useAccountSettings(); - const loadAccountLateData = useLoadAccountLateData(); const loadGlobalLateData = useLoadGlobalLateData(); const insets = useSafeAreaInsets(); @@ -149,7 +148,6 @@ function WalletScreen() { if (walletReady) { loadAccountLateData(); loadGlobalLateData(); - runWalletBackupStatusChecks(); } }, [loadAccountLateData, loadGlobalLateData, walletReady]); @@ -185,6 +183,7 @@ function WalletScreen() { + {/* NOTE: This component listens for Mobile Wallet Protocol requests and handles them */} diff --git a/src/state/backups/backups.ts b/src/state/backups/backups.ts new file mode 100644 index 00000000000..ef1abf3ab23 --- /dev/null +++ b/src/state/backups/backups.ts @@ -0,0 +1,182 @@ +import { BackupFile, CloudBackups } from '@/model/backup'; +import { createRainbowStore } from '../internal/createRainbowStore'; +import { IS_ANDROID } from '@/env'; +import { fetchAllBackups, getGoogleAccountUserData, isCloudBackupAvailable, syncCloud } from '@/handlers/cloudBackup'; +import { RainbowError, logger } from '@/logger'; +import walletBackupTypes from '@/helpers/walletBackupTypes'; +import { getMostRecentCloudBackup, hasManuallyBackedUpWallet } from '@/screens/SettingsSheet/utils'; +import { Mutex } from 'async-mutex'; +import store from '@/redux/store'; + +const mutex = new Mutex(); + +export enum CloudBackupState { + Initializing = 'initializing', + Syncing = 'syncing', + Fetching = 'fetching', + FailedToInitialize = 'failed_to_initialize', + Ready = 'ready', + NotAvailable = 'not_available', + InProgress = 'in_progress', + Error = 'error', + Success = 'success', +} + +const DEFAULT_TIMEOUT = 10_000; +const MAX_RETRIES = 3; + +export const LoadingStates = [CloudBackupState.Initializing, CloudBackupState.Syncing, CloudBackupState.Fetching]; + +interface BackupsStore { + storedPassword: string; + setStoredPassword: (storedPassword: string) => void; + + backupProvider: string | undefined; + setBackupProvider: (backupProvider: string | undefined) => void; + + status: CloudBackupState; + setStatus: (status: CloudBackupState) => void; + + backups: CloudBackups; + setBackups: (backups: CloudBackups) => void; + + mostRecentBackup: BackupFile | undefined; + setMostRecentBackup: (backup: BackupFile | undefined) => void; + + password: string; + setPassword: (password: string) => void; + + syncAndFetchBackups: ( + retryOnFailure?: boolean, + retryCount?: number + ) => Promise<{ + success: boolean; + retry?: boolean; + }>; +} + +const returnEarlyIfLockedStates = [CloudBackupState.Syncing, CloudBackupState.Fetching]; + +export const backupsStore = createRainbowStore((set, get) => ({ + storedPassword: '', + setStoredPassword: storedPassword => set({ storedPassword }), + + backupProvider: undefined, + setBackupProvider: provider => set({ backupProvider: provider }), + + status: CloudBackupState.Initializing, + setStatus: status => set({ status }), + + backups: { files: [] }, + setBackups: backups => set({ backups }), + + mostRecentBackup: undefined, + setMostRecentBackup: backup => set({ mostRecentBackup: backup }), + + password: '', + setPassword: password => set({ password }), + + syncAndFetchBackups: async (retryOnFailure = true, retryCount = 0) => { + const { status } = get(); + + const timeoutPromise = new Promise<{ success: boolean; retry?: boolean }>(resolve => { + setTimeout(() => { + resolve({ success: false, retry: retryOnFailure }); + }, DEFAULT_TIMEOUT); + }); + + const syncAndPullFiles = async (): Promise<{ success: boolean; retry?: boolean }> => { + try { + const isAvailable = await isCloudBackupAvailable(); + if (!isAvailable) { + logger.debug('[backupsStore]: Cloud backup is not available'); + set({ backupProvider: undefined, status: CloudBackupState.NotAvailable, backups: { files: [] }, mostRecentBackup: undefined }); + return { + success: false, + retry: false, + }; + } + + if (IS_ANDROID) { + const gdata = await getGoogleAccountUserData(); + if (!gdata) { + logger.debug('[backupsStore]: Google account is not available'); + set({ backupProvider: undefined, status: CloudBackupState.NotAvailable, backups: { files: [] }, mostRecentBackup: undefined }); + return { + success: false, + retry: false, + }; + } + } + + set({ status: CloudBackupState.Syncing }); + logger.debug('[backupsStore]: Syncing with cloud'); + await syncCloud(); + + set({ status: CloudBackupState.Fetching }); + logger.debug('[backupsStore]: Fetching backups'); + const backups = await fetchAllBackups(); + + set({ backups }); + + const { wallets } = store.getState().wallets; + + // if the user has any cloud backups, set the provider to cloud + if (backups.files.length > 0) { + set({ + backupProvider: walletBackupTypes.cloud, + mostRecentBackup: getMostRecentCloudBackup(backups.files), + }); + } else if (hasManuallyBackedUpWallet(wallets)) { + set({ backupProvider: walletBackupTypes.manual }); + } else { + set({ backupProvider: undefined }); + } + + logger.debug(`[backupsStore]: Retrieved ${backups.files.length} backup files`); + + set({ status: CloudBackupState.Ready }); + return { + success: true, + retry: false, + }; + } catch (e) { + logger.error(new RainbowError('[backupsStore]: Failed to fetch all backups'), { + error: e, + }); + set({ status: CloudBackupState.FailedToInitialize }); + } + + return { + success: false, + retry: retryOnFailure, + }; + }; + + if (mutex.isLocked() || returnEarlyIfLockedStates.includes(status)) { + logger.debug('[backupsStore]: Mutex is locked or returnEarlyIfLockedStates includes status', { + status, + }); + return { + success: false, + retry: false, + }; + } + + const releaser = await mutex.acquire(); + logger.debug('[backupsStore]: Acquired mutex'); + const { success, retry } = await Promise.race([syncAndPullFiles(), timeoutPromise]); + releaser(); + logger.debug('[backupsStore]: Released mutex'); + if (retry && retryCount < MAX_RETRIES) { + logger.debug(`[backupsStore]: Retrying sync and fetch backups attempt: ${retryCount + 1}`); + return get().syncAndFetchBackups(retryOnFailure, retryCount + 1); + } + + if (retry && retryCount >= MAX_RETRIES) { + logger.error(new RainbowError('[backupsStore]: Max retry attempts reached. Sync failed.')); + } + + return { success, retry }; + }, +})); diff --git a/src/state/sync/BackupsSync.tsx b/src/state/sync/BackupsSync.tsx new file mode 100644 index 00000000000..a409490c205 --- /dev/null +++ b/src/state/sync/BackupsSync.tsx @@ -0,0 +1,12 @@ +import { useEffect, memo } from 'react'; +import { backupsStore } from '@/state/backups/backups'; + +const BackupsSyncComponent = () => { + useEffect(() => { + backupsStore.getState().syncAndFetchBackups(); + }, []); + + return null; +}; + +export const BackupsSync = memo(BackupsSyncComponent); diff --git a/src/state/walletLoading/walletLoading.ts b/src/state/walletLoading/walletLoading.ts new file mode 100644 index 00000000000..7391b78e760 --- /dev/null +++ b/src/state/walletLoading/walletLoading.ts @@ -0,0 +1,18 @@ +import { createRainbowStore } from '../internal/createRainbowStore'; +import { WalletLoadingStates } from '@/helpers/walletLoadingStates'; + +type WalletLoadingState = { + loadingState: WalletLoadingStates | null; + blockTouches: boolean; + Component: JSX.Element | null; + hide: () => void; + setComponent: (Component: JSX.Element, blockTouches?: boolean) => void; +}; + +export const walletLoadingStore = createRainbowStore(set => ({ + loadingState: null, + blockTouches: false, + Component: null, + hide: () => set({ blockTouches: false, Component: null }), + setComponent: (Component: JSX.Element, blockTouches = true) => set({ blockTouches, Component }), +})); From 99ee38aa6afe6edbf804e52d39df5054e16c13cc Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Fri, 20 Dec 2024 11:23:56 -0500 Subject: [PATCH 08/19] Fix time filters and default to D3 (#6362) --- src/components/Discover/TrendingTokens.tsx | 4 ++-- src/languages/en_US.json | 2 +- src/state/trendingTokens/trendingTokens.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/Discover/TrendingTokens.tsx b/src/components/Discover/TrendingTokens.tsx index 3a14f94011a..0d49cea8c6e 100644 --- a/src/components/Discover/TrendingTokens.tsx +++ b/src/components/Discover/TrendingTokens.tsx @@ -564,7 +564,7 @@ function NetworkFilter() { function TimeFilter() { const timeframe = useTrendingTokensStore(state => state.timeframe); - const shouldAbbreviate = timeframe === Timeframe.H24; + const shouldAbbreviate = timeframe === Timeframe.H24 || timeframe === Timeframe.H12; return ( useTrendingTokensStore.getState().setTimeframe(timeframe)} > ( set => ({ category: ArcTrendingCategory.Trending, chainId: undefined, - timeframe: ArcTimeframe.H24, + timeframe: ArcTimeframe.D3, sort: ArcTrendingSort.Recommended, setCategory: category => set({ category }), setChainId: chainId => { From 4a4bbe8e11a1804fcd162b36fc01105a978d0050 Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Fri, 20 Dec 2024 11:24:12 -0500 Subject: [PATCH 09/19] fix network colors for network switcher (#6361) --- src/components/NetworkSwitcher.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/NetworkSwitcher.tsx b/src/components/NetworkSwitcher.tsx index 65a66961d7a..61394cdc5d4 100644 --- a/src/components/NetworkSwitcher.tsx +++ b/src/components/NetworkSwitcher.tsx @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { getChainColorWorklet, opacity } from '@/__swaps__/utils/swaps'; +import { opacity } from '@/__swaps__/utils/swaps'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; import { ChainId } from '@/state/backendNetworks/types'; import { AnimatedBlurView } from '@/components/AnimatedComponents/AnimatedBlurView'; @@ -48,6 +48,7 @@ import { noop } from 'lodash'; import { TapToDismiss } from './DappBrowser/control-panel/ControlPanel'; import { THICK_BORDER_WIDTH } from '@/__swaps__/screens/Swap/constants'; import { GestureHandlerButton } from '@/__swaps__/screens/Swap/components/GestureHandlerButton'; +import { useTheme } from '@/theme'; const t = i18n.l.network_switcher; @@ -372,8 +373,9 @@ function AllNetworksSection({ } function NetworkOption({ chainId, selected }: { chainId: ChainId; selected: SharedValue }) { + const { colors } = useTheme(); const chainName = useBackendNetworksStore.getState().getChainsLabel()[chainId]; - const chainColor = getChainColorWorklet(chainId, true); + const chainColor = colors.networkColors[chainId] ? colors.networkColors[chainId] : undefined; const isSelected = useDerivedValue(() => selected.value === chainId); const { animatedStyle } = useNetworkOptionStyle(isSelected, chainColor); From 9bc8575d40d1636ea4515ee0b68c582f0950e556 Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Fri, 20 Dec 2024 11:25:11 -0500 Subject: [PATCH 10/19] change logic around when to parse into our native formatter (#6360) --- src/helpers/strings.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/helpers/strings.ts b/src/helpers/strings.ts index 986c23a665a..b53bb781d40 100644 --- a/src/helpers/strings.ts +++ b/src/helpers/strings.ts @@ -119,9 +119,10 @@ export function formatCurrency( const currencySymbol = supportedNativeCurrencies[currency].symbol; const [whole, fraction = ''] = numericString.split('.'); - if (fraction === '') { + const numericalWholeNumber = +whole; + if (numericalWholeNumber > 0) { // if the fraction is empty and the numeric string is less than 6 characters, we can just run it through our native currency display worklet - if (numericString.length <= 6) { + if (whole.length <= 6) { return convertAmountToNativeDisplayWorklet(numericString, currency, false, true); } From 7b644f39b4590cea02b8c98f8c1f24fbb9ff5956 Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Fri, 20 Dec 2024 11:25:32 -0500 Subject: [PATCH 11/19] Add default option to dropdown menu for sort (#6359) --- src/components/Discover/TrendingTokens.tsx | 21 +++++++++++++-------- src/languages/en_US.json | 5 ++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/components/Discover/TrendingTokens.tsx b/src/components/Discover/TrendingTokens.tsx index 0d49cea8c6e..489b90bbf83 100644 --- a/src/components/Discover/TrendingTokens.tsx +++ b/src/components/Discover/TrendingTokens.tsx @@ -1,4 +1,4 @@ -import { DropdownMenu } from '@/components/DropdownMenu'; +import { DropdownMenu, MenuItem } from '@/components/DropdownMenu'; import { globalColors, Text, TextIcon, useBackgroundColor, useColorMode } from '@/design-system'; import { useForegroundColor } from '@/design-system/color/useForegroundColor'; @@ -571,6 +571,7 @@ function TimeFilter() { menuConfig={{ menuItems: timeFilters.map(time => ({ actionTitle: i18n.t(t.filters.time[time]), + menuState: time === timeframe ? 'on' : 'off', actionKey: time, })), }} @@ -594,15 +595,19 @@ function SortFilter() { const iconColor = useForegroundColor(selected ? 'labelSecondary' : 'labelTertiary'); + const sortLabel = useMemo(() => { + if (sort === TrendingSort.Recommended) return i18n.t(t.filters.sort.RECOMMENDED.label); + return i18n.t(t.filters.sort[sort]); + }, [sort]); + return ( s !== 'RECOMMENDED') - .map(sort => ({ - actionTitle: i18n.t(t.filters.sort[sort]), - actionKey: sort, - })), + menuItems: sortFilters.map(s => ({ + actionTitle: s === TrendingSort.Recommended ? i18n.t(t.filters.sort.RECOMMENDED.menuOption) : i18n.t(t.filters.sort[s]), + menuState: s === sort ? 'on' : 'off', + actionKey: s, + })), }} side="bottom" onPressMenuItem={selection => { @@ -614,7 +619,7 @@ function SortFilter() { selected={selected} iconColor={undefined} highlightedBackgroundColor={undefined} - label={i18n.t(t.filters.sort[sort])} + label={sortLabel} icon={ 􀄬 diff --git a/src/languages/en_US.json b/src/languages/en_US.json index 0bacc01f211..5865734fece 100644 --- a/src/languages/en_US.json +++ b/src/languages/en_US.json @@ -3051,7 +3051,10 @@ "FARCASTER": "Farcaster" }, "sort": { - "RECOMMENDED": "Sort", + "RECOMMENDED": { + "label": "Sort", + "menuOption": "Default" + }, "VOLUME": "Volume", "MARKET_CAP": "Market Cap", "TOP_GAINERS": "Top Gainers", From b86910e8e710bb5c8533e1eb72e1524c9e290ad4 Mon Sep 17 00:00:00 2001 From: Jin Date: Fri, 20 Dec 2024 11:45:12 -0500 Subject: [PATCH 12/19] Support only persisting when search query is undefined (the default lists) (#6335) --- .../Swap/hooks/useSearchCurrencyLists.ts | 4 ++-- .../Swap/resources/search/discovery.ts | 2 +- .../screens/Swap/resources/search/search.ts | 19 ++++++++++++++----- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/__swaps__/screens/Swap/hooks/useSearchCurrencyLists.ts b/src/__swaps__/screens/Swap/hooks/useSearchCurrencyLists.ts index 4033417ed62..0b3057aaf0b 100644 --- a/src/__swaps__/screens/Swap/hooks/useSearchCurrencyLists.ts +++ b/src/__swaps__/screens/Swap/hooks/useSearchCurrencyLists.ts @@ -321,7 +321,7 @@ export function useSearchCurrencyLists() { const { data: verifiedAssets, isLoading: isLoadingVerifiedAssets } = useTokenSearch( { list: 'verifiedAssets', - chainId: isAddress(query) ? state.toChainId : undefined, + chainId: state.toChainId, keys: isAddress(query) ? ['address'] : ['name', 'symbol'], threshold: isAddress(query) ? 'CASE_SENSITIVE_EQUAL' : 'CONTAINS', query: query.length > 0 ? query : undefined, @@ -417,7 +417,7 @@ export function useSearchCurrencyLists() { { enabled: memoizedData.enableUnverifiedSearch, select: (data: TokenSearchResult) => { - return getExactMatches(data, query).slice(0, MAX_UNVERIFIED_RESULTS); + return isAddress(query) ? getExactMatches(data, query).slice(0, MAX_UNVERIFIED_RESULTS) : data.slice(0, MAX_UNVERIFIED_RESULTS); }, } ); diff --git a/src/__swaps__/screens/Swap/resources/search/discovery.ts b/src/__swaps__/screens/Swap/resources/search/discovery.ts index ebb15d0f59b..40496e0d2d7 100644 --- a/src/__swaps__/screens/Swap/resources/search/discovery.ts +++ b/src/__swaps__/screens/Swap/resources/search/discovery.ts @@ -7,7 +7,7 @@ import { useQuery } from '@tanstack/react-query'; import { parseTokenSearch } from './utils'; const tokenSearchHttp = new RainbowFetchClient({ - baseURL: 'https://token-search.rainbow.me/v3/discovery', + baseURL: 'https://token-search.rainbow.me/v3/trending/swaps', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', diff --git a/src/__swaps__/screens/Swap/resources/search/search.ts b/src/__swaps__/screens/Swap/resources/search/search.ts index b270d55c6cd..52ed1d53443 100644 --- a/src/__swaps__/screens/Swap/resources/search/search.ts +++ b/src/__swaps__/screens/Swap/resources/search/search.ts @@ -12,7 +12,7 @@ import { parseTokenSearch } from './utils'; const ALL_VERIFIED_TOKENS_PARAM = '/?list=verifiedAssets'; const tokenSearchHttp = new RainbowFetchClient({ - baseURL: 'https://token-search.rainbow.me/v2', + baseURL: 'https://token-search.rainbow.me/v3/tokens', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', @@ -30,13 +30,19 @@ export type TokenSearchArgs = { list: TokenSearchListId; threshold?: TokenSearchThreshold; query?: string; + shouldPersist?: boolean; }; // /////////////////////////////////////////////// // Query Key -const tokenSearchQueryKey = ({ chainId, fromChainId, keys, list, threshold, query }: TokenSearchArgs) => - createQueryKey('TokenSearch', { chainId, fromChainId, keys, list, threshold, query }, { persisterVersion: 2 }); +const tokenSearchQueryKey = ({ chainId, fromChainId, keys, list, threshold, query, shouldPersist }: TokenSearchArgs) => { + return createQueryKey( + 'TokenSearch', + { chainId, fromChainId, keys, list, threshold, query }, + { persisterVersion: shouldPersist ? 3 : undefined } + ); +}; type TokenSearchQueryKey = ReturnType; @@ -77,6 +83,7 @@ async function tokenSearchQueryFunction({ return parseTokenSearch(tokenSearch.data.data, chainId); } + // search for address on other chains const allVerifiedTokens = await tokenSearchHttp.get<{ data: SearchAsset[] }>(ALL_VERIFIED_TOKENS_PARAM); const addressQuery = query.trim().toLowerCase(); @@ -104,8 +111,9 @@ export async function fetchTokenSearch( { chainId, fromChainId, keys, list, threshold, query }: TokenSearchArgs, config: QueryConfigWithSelect = {} ) { + const shouldPersist = query === undefined; return await queryClient.fetchQuery( - tokenSearchQueryKey({ chainId, fromChainId, keys, list, threshold, query }), + tokenSearchQueryKey({ chainId, fromChainId, keys, list, threshold, query, shouldPersist }), tokenSearchQueryFunction, config ); @@ -130,7 +138,8 @@ export function useTokenSearch( { chainId, fromChainId, keys, list, threshold, query }: TokenSearchArgs, config: QueryConfigWithSelect = {} ) { - return useQuery(tokenSearchQueryKey({ chainId, fromChainId, keys, list, threshold, query }), tokenSearchQueryFunction, { + const shouldPersist = query === undefined; + return useQuery(tokenSearchQueryKey({ chainId, fromChainId, keys, list, threshold, query, shouldPersist }), tokenSearchQueryFunction, { ...config, keepPreviousData: true, }); From 3e7d5b1f720014e405aa5ee917636348483cc91f Mon Sep 17 00:00:00 2001 From: Kane Thomas Date: Fri, 20 Dec 2024 11:47:41 -0500 Subject: [PATCH 13/19] use positons value from summary for wallet balance (#6358) --- src/hooks/useWalletBalances.ts | 24 +++++------------------- src/resources/summary/summary.ts | 4 ++++ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/hooks/useWalletBalances.ts b/src/hooks/useWalletBalances.ts index fbafc1c909e..9f1e912e437 100644 --- a/src/hooks/useWalletBalances.ts +++ b/src/hooks/useWalletBalances.ts @@ -3,11 +3,7 @@ import { useMemo } from 'react'; import { Address } from 'viem'; import useAccountSettings from './useAccountSettings'; import { useAddysSummary } from '@/resources/summary/summary'; -import { useQueries } from '@tanstack/react-query'; -import { fetchPositions, positionsQueryKey } from '@/resources/defi/PositionsQuery'; -import { RainbowPositions } from '@/resources/defi/types'; import { add, convertAmountToNativeDisplay } from '@/helpers/utilities'; -import { queryClient } from '@/react-query'; const QUERY_CONFIG = { staleTime: 60_000, // 1 minute @@ -43,7 +39,7 @@ const useWalletBalances = (wallets: AllRainbowWallets): WalletBalanceResult => { [wallets] ); - const { data: summaryData, isLoading: isSummaryLoading } = useAddysSummary( + const { data: summaryData, isLoading } = useAddysSummary( { addresses: allAddresses, currency: nativeCurrency, @@ -51,17 +47,6 @@ const useWalletBalances = (wallets: AllRainbowWallets): WalletBalanceResult => { QUERY_CONFIG ); - const positionQueries = useQueries({ - queries: allAddresses.map(address => ({ - queryKey: positionsQueryKey({ address, currency: nativeCurrency }), - queryFn: () => fetchPositions({ address, currency: nativeCurrency }), - enabled: !!address, - ...QUERY_CONFIG, - })), - }); - - const isLoading = isSummaryLoading || positionQueries.some(query => query.isLoading); - const balances = useMemo(() => { const result: Record = {}; @@ -70,9 +55,10 @@ const useWalletBalances = (wallets: AllRainbowWallets): WalletBalanceResult => { for (const address of allAddresses) { const lowerCaseAddress = address.toLowerCase() as Address; const assetBalance = summaryData?.data?.addresses?.[lowerCaseAddress]?.summary?.asset_value?.toString() || '0'; - const positionData = queryClient.getQueryData(positionsQueryKey({ address, currency: nativeCurrency })); - const positionsBalance = positionData ? positionData.totals.total.amount : '0'; - const totalAccountBalance = add(assetBalance, positionsBalance); + const positionsBalance = summaryData?.data?.addresses?.[lowerCaseAddress]?.summary?.positions_value?.toString() || '0'; + const claimablesBalance = summaryData?.data?.addresses?.[lowerCaseAddress]?.summary?.claimables_value?.toString() || '0'; + + const totalAccountBalance = add(assetBalance, add(positionsBalance, claimablesBalance)); result[lowerCaseAddress] = { assetBalanceAmount: assetBalance, diff --git a/src/resources/summary/summary.ts b/src/resources/summary/summary.ts index cd0ef1d8542..71c68ff92b5 100644 --- a/src/resources/summary/summary.ts +++ b/src/resources/summary/summary.ts @@ -51,6 +51,8 @@ interface AddysSummary { num_erc20s: number; last_activity: number; asset_value: number | null; + claimables_value: number | null; + positions_value: number | null; }; }; summary_by_chain: { @@ -63,6 +65,8 @@ interface AddysSummary { num_erc20s: number; last_activity: number; asset_value: number | null; + claimables_value: number | null; + positions_value: number | null; }; }; }; From f1d3e7ccaf998ba92f1b052b6e3cd3520f4cac87 Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Fri, 20 Dec 2024 12:44:19 -0500 Subject: [PATCH 14/19] Convert `networkColors` to backendNetworks (#6353) * remove dependency on networkColors * fix [TypeError: Cannot read property 'account' of undefined] * clean up and fix another Image as BackgroundImage instance --- scripts/add_network.sh | 74 ------------------- src/components/cards/OpRewardsCard.tsx | 15 ++-- src/components/info-alert/info-alert.tsx | 2 +- src/hooks/useAccountENSDomains.ts | 2 +- src/resources/metadata/sharedQueries.js | 4 + src/screens/ExplainSheet.js | 7 +- .../rewards/components/RewardsEarnings.tsx | 8 +- src/state/backendNetworks/backendNetworks.ts | 14 ++++ src/state/backendNetworks/types.ts | 4 + src/styles/colors.ts | 46 ------------ 10 files changed, 42 insertions(+), 134 deletions(-) delete mode 100755 scripts/add_network.sh diff --git a/scripts/add_network.sh b/scripts/add_network.sh deleted file mode 100755 index 6750607038f..00000000000 --- a/scripts/add_network.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash - -# Prompt for network details -read -p "Enter the network name (case sensitive): " networkName -read -p "Enter the chain ID (number): " chainId -read -p "Enter the light mode color (hex): " lightColor -read -p "Enter the dark mode color (hex): " darkColor - -# Create imagesets -mkdir -p "ios/Images.xcassets/badges/${networkName}.imageset" -mkdir -p "ios/Images.xcassets/badges/${networkName}Badge.imageset" -mkdir -p "ios/Images.xcassets/badges/${networkName}BadgeDark.imageset" -mkdir -p "ios/Images.xcassets/badges/${networkName}BadgeLarge.imageset" -mkdir -p "ios/Images.xcassets/badges/${networkName}BadgeLargeDark.imageset" -mkdir -p "ios/Images.xcassets/badges/${networkName}BadgeNoShadow.imageset" - -# Create Contents.json for each imageset -for suffix in "" "Badge" "BadgeDark" "BadgeLarge" "BadgeLargeDark" "BadgeNoShadow"; do - cat > "ios/Images.xcassets/badges/${networkName}${suffix}.imageset/Contents.json" << EOF -{ - "images" : [ - { - "filename" : "${networkName}${suffix}.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "${networkName}${suffix}@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "${networkName}${suffix}@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} -EOF -done - -# Update en_US.json -# Using perl for more precise JSON manipulation -perl -i -0pe 's/("explain":\s*{)/$1\n "'$networkName'": {\n "text": "",\n "title": "What'\''s '$networkName'?"\n },/m' src/languages/en_US.json - -# Update types.ts -# Add to Network enum -sed -i '' "/export enum Network {/a\\ - ${networkName} = '${networkName}', -" src/chains/types.ts - -# Add to ChainId enum -sed -i '' "/export enum ChainId {/a\\ - ${networkName} = ${chainId}, -" src/chains/types.ts - -# Update colors.ts for light mode - look for the first networkColors declaration -sed -i '' "/^ let networkColors = {/a\\ - [ChainId.${networkName}]: '${lightColor}', -" src/styles/colors.ts - -# Update colors.ts for dark mode - look specifically in the darkMode if block -sed -i '' "/if (darkMode) {/,/^ }/ { - /networkColors = {/a\\ - [ChainId.${networkName}]: '${darkColor}', -}" src/styles/colors.ts - -echo "Network ${networkName} has been added!" -echo "Note: You'll need to add the actual badge images to the imageset directories" -echo "Don't forget to run prettier to format the modified files" \ No newline at end of file diff --git a/src/components/cards/OpRewardsCard.tsx b/src/components/cards/OpRewardsCard.tsx index 3c1251010b3..b823be5e198 100644 --- a/src/components/cards/OpRewardsCard.tsx +++ b/src/components/cards/OpRewardsCard.tsx @@ -1,14 +1,14 @@ import React from 'react'; import { GenericCard, Gradient } from './GenericCard'; -import { AccentColorProvider, Box, Cover, globalColors, Stack, Text } from '@/design-system'; +import { AccentColorProvider, Box, Cover, globalColors, Stack, Text, useColorMode } from '@/design-system'; import { ButtonPressAnimation } from '@/components/animations'; -import { Image } from 'react-native'; +import { ImageBackground } from 'react-native'; import OpRewardsCardBackgroundImage from '../../assets/opRewardsCardBackgroundImage.png'; import * as i18n from '@/languages'; import { useNavigation } from '@/navigation'; import Routes from '@/navigation/routesNames'; -import { colors } from '@/styles'; import { ChainId } from '@/state/backendNetworks/types'; +import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; const GRADIENT: Gradient = { colors: ['#520907', '#B22824'], @@ -18,17 +18,20 @@ const GRADIENT: Gradient = { export const OpRewardsCard: React.FC = () => { const { navigate } = useNavigation(); + const { isDarkMode } = useColorMode(); + + const color = useBackendNetworksStore.getState().getColorsForChainId(ChainId.optimism, isDarkMode); const navigateToRewardsSheet = () => { navigate(Routes.OP_REWARDS_SHEET); }; return ( - + { - + {i18n.t(i18n.l.discover.op_rewards.button_title)} diff --git a/src/components/info-alert/info-alert.tsx b/src/components/info-alert/info-alert.tsx index bb17325be89..dbfa3aef5f1 100644 --- a/src/components/info-alert/info-alert.tsx +++ b/src/components/info-alert/info-alert.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Box, Text, useForegroundColor } from '@/design-system'; +import { Box, Text } from '@/design-system'; type InfoAlertProps = { title: string; diff --git a/src/hooks/useAccountENSDomains.ts b/src/hooks/useAccountENSDomains.ts index c9923dfa606..f50aaef778d 100644 --- a/src/hooks/useAccountENSDomains.ts +++ b/src/hooks/useAccountENSDomains.ts @@ -14,7 +14,7 @@ const STALE_TIME = 10000; async function fetchAccountENSDomains({ accountAddress }: { accountAddress: string }) { const result = await fetchAccountDomains(accountAddress); - if (!result.account) return []; + if (!result?.account) return []; const { domains: controlledDomains, registrations } = result.account; const registarDomains = registrations?.map(({ domain }) => domain); diff --git a/src/resources/metadata/sharedQueries.js b/src/resources/metadata/sharedQueries.js index 5937062f69b..4c348349eb4 100644 --- a/src/resources/metadata/sharedQueries.js +++ b/src/resources/metadata/sharedQueries.js @@ -4,6 +4,10 @@ const BACKEND_NETWORKS_QUERY = ` id name label + colors { + light + dark + } icons { badgeURL } diff --git a/src/screens/ExplainSheet.js b/src/screens/ExplainSheet.js index d8945923c99..9e30b06daa6 100644 --- a/src/screens/ExplainSheet.js +++ b/src/screens/ExplainSheet.js @@ -172,6 +172,9 @@ export const explainers = (params, theme) => { const chainId = params?.chainId; const fromChainId = params?.fromChainId; const toChainId = params?.toChainId; + const isDarkMode = theme?.isDarkMode; + + const color = useBackendNetworksStore.getState().getColorsForChainId(chainId, isDarkMode); const chainsLabel = useBackendNetworksStore.getState().getChainsLabel(); @@ -432,8 +435,8 @@ export const explainers = (params, theme) => { swapResetInputs: { button: { label: `Continue with ${chainsLabel[chainId]}`, - bgColor: colors?.networkColors[chainId] && colors?.alpha(colors?.networkColors[chainId], 0.06), - textColor: colors?.networkColors?.[chainId], + bgColor: color && colors?.alpha(color, 0.06), + textColor: color, }, emoji: '🔐', extraHeight: -90, diff --git a/src/screens/rewards/components/RewardsEarnings.tsx b/src/screens/rewards/components/RewardsEarnings.tsx index 48e70481cec..b351d4be895 100644 --- a/src/screens/rewards/components/RewardsEarnings.tsx +++ b/src/screens/rewards/components/RewardsEarnings.tsx @@ -1,5 +1,5 @@ import React, { useMemo } from 'react'; -import { Image } from 'react-native'; +import { Image, ImageBackground } from 'react-native'; import { RewardsSectionCard } from '@/screens/rewards/components/RewardsSectionCard'; import { AccentColorProvider, Box, Columns, Inline, Stack, Text } from '@/design-system'; import * as i18n from '@/languages'; @@ -63,7 +63,7 @@ export const RewardsEarnings: React.FC = ({ airdropTitle, airdropTime, }; - }, [pendingEarningsToken, tokenSymbol, totalEarnings.token, totalEarnings.usd, nextAirdropTimestamp]); + }, [pendingEarningsToken, tokenSymbol, totalEarnings.token, totalEarnings.usd, assetPrice, nativeCurrency, nextAirdropTimestamp]); const navigateToTimingExplainer = () => { analyticsV2.track(analyticsV2.event.rewardsPressedPendingEarningsCard); @@ -85,7 +85,7 @@ export const RewardsEarnings: React.FC = ({ = ({ (backendNetworksQueryKey()) ?? buildTimeNetworks; const DEFAULT_PRIVATE_MEMPOOL_TIMEOUT = 2 * 60 * 1_000; // 2 minutes @@ -32,6 +33,8 @@ export interface BackendNetworksState { getChainsName: () => Record; getChainsIdByName: () => Record; + getColorsForChainId: (chainId: ChainId, isDarkMode: boolean) => string; + defaultGasSpeeds: (chainId: ChainId) => GasSpeed[]; getChainsGasSpeeds: () => Record; @@ -169,6 +172,17 @@ export const useBackendNetworksStore = createRainbowStore( ); }, + getColorsForChainId: (chainId: ChainId, isDarkMode: boolean) => { + const { backendNetworks } = get(); + + const colors = backendNetworks.networks.find(chain => +chain.id === chainId)?.colors; + if (!colors) { + return isDarkMode ? globalColors.white : globalColors.black; + } + + return isDarkMode ? colors.dark : colors.light; + }, + // TODO: This should come from the backend at some point defaultGasSpeeds: chainId => { switch (chainId) { diff --git a/src/state/backendNetworks/types.ts b/src/state/backendNetworks/types.ts index ab84a34b120..bc5ea01c827 100644 --- a/src/state/backendNetworks/types.ts +++ b/src/state/backendNetworks/types.ts @@ -168,6 +168,10 @@ export interface BackendNetwork { id: string; name: string; label: string; + colors: { + light: string; + dark: string; + }; icons: { badgeURL: string; }; diff --git a/src/styles/colors.ts b/src/styles/colors.ts index 04d23086e48..2deaa5ba2f4 100644 --- a/src/styles/colors.ts +++ b/src/styles/colors.ts @@ -3,7 +3,6 @@ import PropTypes from 'prop-types'; import { globalColors } from '@/design-system'; import currentColors from '../theme/currentColors'; import { memoFn } from '../utils/memoFn'; -import { ChainId } from '@/state/backendNetworks/types'; export type Colors = ReturnType; @@ -186,28 +185,6 @@ const getColorsByTheme = (darkMode?: boolean) => { }, }; - let networkColors = { - [ChainId.zksync]: '#25292E', - [ChainId.sanko]: '#594BA7', - [ChainId.scroll]: '#A6855D', - [ChainId.linea]: '#25292E', - [ChainId.gravity]: '#B75E2C', - [ChainId.ink]: '#7132F5', - [ChainId.arbitrum]: '#2D374B', - [ChainId.base]: '#0052FF', - [ChainId.goerli]: '#f6c343', - [ChainId.gnosis]: '#133629', - [ChainId.mainnet]: '#25292E', - [ChainId.optimism]: '#FF4040', - [ChainId.polygon]: '#8247E5', - [ChainId.bsc]: '#F0B90B', - [ChainId.zora]: '#2B5DF0', - [ChainId.avalanche]: '#E84142', - [ChainId.degen]: '#A36EFD', - [ChainId.blast]: '#25292E', - [ChainId.apechain]: '#0054FA', - }; - let gradients = { appleBlueTintToAppleBlue: ['#15B1FE', base.appleBlue], blueToGreen: ['#4764F7', '#23D67F'], @@ -334,28 +311,6 @@ const getColorsByTheme = (darkMode?: boolean) => { secondGradient: '#12131A80', thirdGradient: '#12131Aff', }; - - networkColors = { - [ChainId.zksync]: '#FFFFFF', - [ChainId.sanko]: '#7F6FC9', - [ChainId.scroll]: '#EBC28E', - [ChainId.linea]: '#FFFFFF', - [ChainId.gravity]: '#B75E2C', - [ChainId.ink]: '#864DFF', - [ChainId.arbitrum]: '#ADBFE3', - [ChainId.base]: '#3979FF', - [ChainId.goerli]: '#f6c343', - [ChainId.gnosis]: '#F0EBDE', - [ChainId.mainnet]: '#E0E8FF', - [ChainId.optimism]: '#FF6A6A', - [ChainId.polygon]: '#A275EE', - [ChainId.bsc]: '#F0B90B', - [ChainId.zora]: '#6183F0', - [ChainId.avalanche]: '#FF5D5E', - [ChainId.degen]: '#A36EFD', - [ChainId.blast]: '#FCFC03', - [ChainId.apechain]: '#397BFF', - }; } return { @@ -370,7 +325,6 @@ const getColorsByTheme = (darkMode?: boolean) => { isColorDark, isColorLight, listHeaders, - networkColors, sendScreen, ...base, ...transparent, From 05364a94e0972dd266c42116b4a7b5f8ccd996ef Mon Sep 17 00:00:00 2001 From: gregs Date: Fri, 20 Dec 2024 16:17:33 -0300 Subject: [PATCH 15/19] Track token lists (#6303) --- .../Swap/hooks/useSearchCurrencyLists.ts | 49 ++++++++++++------- src/analytics/event.ts | 11 +++++ src/components/Discover/DiscoverSearch.tsx | 26 +++++++++- .../UniqueTokenExpandedState.tsx | 7 ++- .../asset/ChartExpandedState.js | 7 ++- src/hooks/useTimeout.ts | 24 ++++++--- src/hooks/useWalletSectionsData.ts | 10 ++++ src/screens/SendSheet.tsx | 13 ++++- src/screens/WalletScreen/index.tsx | 7 ++- 9 files changed, 120 insertions(+), 34 deletions(-) diff --git a/src/__swaps__/screens/Swap/hooks/useSearchCurrencyLists.ts b/src/__swaps__/screens/Swap/hooks/useSearchCurrencyLists.ts index 0b3057aaf0b..9760b638d49 100644 --- a/src/__swaps__/screens/Swap/hooks/useSearchCurrencyLists.ts +++ b/src/__swaps__/screens/Swap/hooks/useSearchCurrencyLists.ts @@ -8,13 +8,14 @@ import { useFavorites } from '@/resources/favorites'; import { useSwapsStore } from '@/state/swaps/swapsStore'; import { isAddress } from '@ethersproject/address'; import { rankings } from 'match-sorter'; -import { useCallback, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { runOnJS, useAnimatedReaction } from 'react-native-reanimated'; import { useDebouncedCallback } from 'use-debounce'; import { TokenToBuyListItem } from '../components/TokenList/TokenToBuyList'; import { useSwapContext } from '../providers/swap-provider'; import { RecentSwap } from '@/__swaps__/types/swap'; import { useTokenDiscovery } from '../resources/search'; +import { analyticsV2 } from '@/analytics'; export type AssetToBuySectionId = 'bridge' | 'recent' | 'favorites' | 'verified' | 'unverified' | 'other_networks' | 'popular'; @@ -422,28 +423,29 @@ export function useSearchCurrencyLists() { } ); - return useMemo(() => { + const searchCurrencyLists = useMemo(() => { const toChainId = selectedOutputChainId.value ?? ChainId.mainnet; const bridgeResult = memoizedData.filteredBridgeAsset ?? undefined; const crosschainMatches = query === '' ? undefined : verifiedAssets?.filter(asset => asset.chainId !== toChainId); const verifiedResults = query === '' ? verifiedAssets : verifiedAssets?.filter(asset => asset.chainId === toChainId); const unverifiedResults = memoizedData.enableUnverifiedSearch ? unverifiedAssets : undefined; - return { - results: buildListSectionsData({ - combinedData: { - bridgeAsset: bridgeResult, - crosschainExactMatches: crosschainMatches, - unverifiedAssets: unverifiedResults, - verifiedAssets: verifiedResults, - recentSwaps: recentsForChain, - popularAssets: popularAssetsForChain, - }, - favoritesList, - filteredBridgeAssetAddress: memoizedData.filteredBridgeAsset?.address, - }), - isLoading: isLoadingVerifiedAssets || isLoadingUnverifiedAssets || isLoadingPopularAssets, - }; + const results = buildListSectionsData({ + combinedData: { + bridgeAsset: bridgeResult, + crosschainExactMatches: crosschainMatches, + unverifiedAssets: unverifiedResults, + verifiedAssets: verifiedResults, + recentSwaps: recentsForChain, + popularAssets: popularAssetsForChain, + }, + favoritesList, + filteredBridgeAssetAddress: memoizedData.filteredBridgeAsset?.address, + }); + + const isLoading = isLoadingVerifiedAssets || isLoadingUnverifiedAssets || isLoadingPopularAssets; + + return { results, isLoading }; }, [ favoritesList, isLoadingUnverifiedAssets, @@ -458,4 +460,17 @@ export function useSearchCurrencyLists() { recentsForChain, popularAssetsForChain, ]); + + useEffect(() => { + if (searchCurrencyLists.isLoading) return; + const params = { screen: 'swap' as const, total_tokens: 0, no_icon: 0, query }; + for (const assetOrHeader of searchCurrencyLists.results) { + if (assetOrHeader.listItemType === 'header') continue; + if (!assetOrHeader.icon_url) params.no_icon += 1; + params.total_tokens += 1; + } + analyticsV2.track(analyticsV2.event.tokenList, params); + }, [searchCurrencyLists.results, searchCurrencyLists.isLoading, query]); + + return searchCurrencyLists; } diff --git a/src/analytics/event.ts b/src/analytics/event.ts index 673e71a810d..3696b908736 100644 --- a/src/analytics/event.ts +++ b/src/analytics/event.ts @@ -169,6 +169,9 @@ export const event = { tokenDetailsErc20: 'token_details.erc20', tokenDetailsNFT: 'token_details.nft', + // token lists (wallet, swap, send) + tokenList: 'token_list', + // trending tokens viewTrendingToken: 'trending_tokens.view_trending_token', viewRankedCategory: 'trending_tokens.view_ranked_category', @@ -717,6 +720,14 @@ export type EventProperties = { available_data: { description: boolean; image_url: boolean; floorPrice: boolean }; }; + [event.tokenList]: { + screen: 'wallet' | 'swap' | 'send' | 'discover'; + total_tokens: number; + no_icon: number; + no_price?: number; + query?: string; // query is only sent for the swap screen + }; + [event.viewTrendingToken]: { address: TrendingToken['address']; chainId: TrendingToken['chainId']; diff --git a/src/components/Discover/DiscoverSearch.tsx b/src/components/Discover/DiscoverSearch.tsx index 92495a2100d..5aa4ac6d73b 100644 --- a/src/components/Discover/DiscoverSearch.tsx +++ b/src/components/Discover/DiscoverSearch.tsx @@ -7,7 +7,7 @@ import deviceUtils from '@/utils/deviceUtils'; import CurrencySelectionList from '@/components/CurrencySelectionList'; import { Row } from '@/components/layout'; import { useDiscoverScreenContext } from '@/components/Discover/DiscoverScreenContext'; -import { analytics } from '@/analytics'; +import { analytics, analyticsV2 } from '@/analytics'; import { PROFILES, useExperimentalFlag } from '@/config'; import { useAccountSettings, useSearchCurrencyList, usePrevious, useHardwareBackOnFocus } from '@/hooks'; import { useNavigation } from '@/navigation'; @@ -25,6 +25,7 @@ import { useTheme } from '@/theme'; import { EnrichedExchangeAsset } from '@/components/ExchangeAssetList'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; import { ChainId, Network } from '@/state/backendNetworks/types'; +import { useTimeoutEffect } from '@/hooks/useTimeout'; export const SearchContainer = styled(Row)({ height: '100%', @@ -270,6 +271,29 @@ export default function DiscoverSearch() { }); }, [sectionListRef, isSearching]); + useTimeoutEffect( + () => { + const assets = currencyList + .filter(a => a.key !== 'profiles') + .map(asset => asset.data) + .flat(); + if (assets.length === 0) return; + const params = { + screen: 'discover' as const, + no_icon: 0, + no_price: 0, + total_tokens: assets.length, + query: searchQueryForSearch, + }; + for (const asset of assets) { + if (!asset.icon_url) params.no_icon += 1; + if (!isNaN(asset.price?.value)) params.no_price += 1; + } + analyticsV2.track(analyticsV2.event.tokenList, params); + }, + { timeout: 3000, enabled: !isLoading } + ); + return ( diff --git a/src/components/expanded-state/UniqueTokenExpandedState.tsx b/src/components/expanded-state/UniqueTokenExpandedState.tsx index a321d1d8ac4..136f1e1affa 100644 --- a/src/components/expanded-state/UniqueTokenExpandedState.tsx +++ b/src/components/expanded-state/UniqueTokenExpandedState.tsx @@ -417,18 +417,17 @@ const UniqueTokenExpandedState = ({ asset: passedAsset, external }: UniqueTokenE const hideNftMarketplaceAction = isPoap || !slug; - const mountedAt = useRef(Date.now()); useTimeoutEffect( - () => { + ({ elapsedTime }) => { const { address, chainId } = getAddressAndChainIdFromUniqueId(uniqueId); const { name, description, image_url } = asset; analyticsV2.track(analyticsV2.event.tokenDetailsNFT, { - eventSentAfterMs: Date.now() - mountedAt.current, + eventSentAfterMs: elapsedTime, token: { isPoap, isParty: !!isParty, isENS, address, chainId, name, image_url }, available_data: { description: !!description, image_url: !!image_url, floorPrice: !!offer?.floorPrice }, }); }, - 5 * 1000 // 5s + { timeout: 5 * 1000 } ); return ( <> diff --git a/src/components/expanded-state/asset/ChartExpandedState.js b/src/components/expanded-state/asset/ChartExpandedState.js index 3bf7aff28ff..4704316db9b 100644 --- a/src/components/expanded-state/asset/ChartExpandedState.js +++ b/src/components/expanded-state/asset/ChartExpandedState.js @@ -257,17 +257,16 @@ export default function ChartExpandedState({ asset }) { [nativeCurrency] ); - const mountedAt = useRef(Date.now()); useTimeoutEffect( - () => { + ({ elapsedTime }) => { const { address, chainId, symbol, name, icon_url, price } = assetWithPrice; analyticsV2.track(analyticsV2.event.tokenDetailsErc20, { - eventSentAfterMs: Date.now() - mountedAt.current, + eventSentAfterMs: elapsedTime, token: { address, chainId, symbol, name, icon_url, price }, available_data: { chart: showChart, description: !!data?.description, iconUrl: !!icon_url }, }); }, - 5 * 1000 // 5s + { timeout: 5 * 1000 } ); return ( diff --git a/src/hooks/useTimeout.ts b/src/hooks/useTimeout.ts index 3c663ea779c..a7d6d44b505 100644 --- a/src/hooks/useTimeout.ts +++ b/src/hooks/useTimeout.ts @@ -18,7 +18,10 @@ export default function useTimeout(): [(func: () => void, ms?: number) => void, return [start, stop, handle]; } -export function useTimeoutEffect(onTimeout: (cancelled: boolean) => void, delay: number) { +export function useTimeoutEffect( + onTimeout: (e: { cancelled: boolean; elapsedTime: number }) => void, + { timeout, enabled = true }: { timeout: number; enabled?: boolean } +) { const callback = useRef(onTimeout); useLayoutEffect(() => { callback.current = onTimeout; @@ -26,12 +29,21 @@ export function useTimeoutEffect(onTimeout: (cancelled: boolean) => void, delay: const timeoutRef = useRef(); useEffect(() => { + if (!enabled) return; const startedAt = Date.now(); - timeoutRef.current = setTimeout(() => callback.current(false), delay); - const timeout = timeoutRef.current; + timeoutRef.current = setTimeout(() => { + callback.current({ + cancelled: false, + elapsedTime: Date.now() - startedAt, + }); + }, timeout); return () => { - clearTimeout(timeout); - if (Date.now() - startedAt < delay) callback.current(true); + if (!timeoutRef.current) return; + clearTimeout(timeoutRef.current); + const elapsedTime = Date.now() - startedAt; + if (elapsedTime < timeout) { + callback.current({ cancelled: true, elapsedTime }); + } }; - }, [delay]); + }, [timeout, enabled]); } diff --git a/src/hooks/useWalletSectionsData.ts b/src/hooks/useWalletSectionsData.ts index a8f6072f1ea..9013f7106c2 100644 --- a/src/hooks/useWalletSectionsData.ts +++ b/src/hooks/useWalletSectionsData.ts @@ -123,6 +123,16 @@ export default function useWalletSectionsData({ const { isCoinListEdited } = useCoinListEdited(); + useEffect(() => { + if (isLoadingUserAssets || type !== 'wallet') return; + const params = { screen: 'wallet' as const, no_icon: 0, no_price: 0, total_tokens: sortedAssets.length }; + for (const asset of sortedAssets) { + if (!asset.icon_url) params.no_icon += 1; + if (!asset.price?.relative_change_24h) params.no_price += 1; + } + analyticsV2.track(analyticsV2.event.tokenList, params); + }, [isLoadingUserAssets, sortedAssets, type]); + const walletSections = useMemo(() => { const accountInfo = { hiddenAssets, diff --git a/src/screens/SendSheet.tsx b/src/screens/SendSheet.tsx index c634befe7b0..b09d7d66bbd 100644 --- a/src/screens/SendSheet.tsx +++ b/src/screens/SendSheet.tsx @@ -10,7 +10,7 @@ import { SendAssetForm, SendAssetList, SendContactList, SendHeader } from '../co import { SheetActionButton } from '../components/sheet'; import { getDefaultCheckboxes } from './SendConfirmationSheet'; import { WrappedAlert as Alert } from '@/helpers/alert'; -import { analytics } from '@/analytics'; +import { analytics, analyticsV2 } from '@/analytics'; import { PROFILES, useExperimentalFlag } from '@/config'; import { AssetTypes, NewTransaction, ParsedAddressAsset, TransactionStatus, UniqueAsset } from '@/entities'; import { isNativeAsset } from '@/handlers/assets'; @@ -129,6 +129,7 @@ type OnSubmitProps = { export default function SendSheet() { const { goBack, navigate } = useNavigation(); const sortedAssets = useUserAssetsStore(state => state.legacyUserAssets); + const isLoadingUserAssets = useUserAssetsStore(state => state.isLoadingUserAssets); const { gasFeeParamsBySpeed, gasLimit, @@ -894,6 +895,16 @@ export default function SendSheet() { isUniqueAsset, ]); + useEffect(() => { + if (isLoadingUserAssets || !sortedAssets) return; + const params = { screen: 'send' as const, no_icon: 0, no_price: 0, total_tokens: sortedAssets.length }; + for (const asset of sortedAssets) { + if (!asset.icon_url) params.no_icon += 1; + if (!asset.price?.relative_change_24h) params.no_price += 1; + } + analyticsV2.track(analyticsV2.event.tokenList, params); + }, [isLoadingUserAssets, sortedAssets]); + const sendContactListDataKey = useMemo(() => `${ensSuggestions?.[0]?.address || '_'}`, [ensSuggestions]); const isEmptyWallet = !sortedAssets?.length && !sendableUniqueTokens?.length; diff --git a/src/screens/WalletScreen/index.tsx b/src/screens/WalletScreen/index.tsx index bf5fa201570..95cf97c05db 100644 --- a/src/screens/WalletScreen/index.tsx +++ b/src/screens/WalletScreen/index.tsx @@ -51,7 +51,12 @@ function WalletScreen() { const { wallets } = useWallets(); const walletReady = useSelector(({ appState: { walletReady } }: AppState) => walletReady); - const { isWalletEthZero, isLoadingUserAssets, isLoadingBalance, briefSectionsData: walletBriefSectionsData } = useWalletSectionsData(); + const { + isWalletEthZero, + isLoadingUserAssets, + isLoadingBalance, + briefSectionsData: walletBriefSectionsData, + } = useWalletSectionsData({ type: 'wallet' }); useEffect(() => { if (!wallets) return; From 011df9700a4bd5a3f135c6336c2f3bbd28df11c2 Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Fri, 20 Dec 2024 16:03:32 -0500 Subject: [PATCH 16/19] trending tokens + network selector + explain sheet remove local networkColors (#6363) --- src/components/Discover/TrendingTokens.tsx | 12 ++++++------ src/components/NetworkSwitcher.tsx | 5 +++-- src/screens/ExplainSheet.js | 14 +++++++------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/components/Discover/TrendingTokens.tsx b/src/components/Discover/TrendingTokens.tsx index 489b90bbf83..de88bc4b52e 100644 --- a/src/components/Discover/TrendingTokens.tsx +++ b/src/components/Discover/TrendingTokens.tsx @@ -1,4 +1,4 @@ -import { DropdownMenu, MenuItem } from '@/components/DropdownMenu'; +import { DropdownMenu } from '@/components/DropdownMenu'; import { globalColors, Text, TextIcon, useBackgroundColor, useColorMode } from '@/design-system'; import { useForegroundColor } from '@/design-system/color/useForegroundColor'; @@ -19,7 +19,6 @@ import { swapsStore } from '@/state/swaps/swapsStore'; import { sortFilters, timeFilters, useTrendingTokensStore } from '@/state/trendingTokens/trendingTokens'; import { colors } from '@/styles'; import { darkModeThemeColors } from '@/styles/colors'; -import { useTheme } from '@/theme'; import { useCallback, useEffect, useMemo } from 'react'; import React, { Dimensions, FlatList, View } from 'react-native'; import LinearGradient from 'react-native-linear-gradient'; @@ -514,7 +513,6 @@ function NoResults() { function NetworkFilter() { const { isDarkMode } = useColorMode(); - const { colors } = useTheme(); const selected = useSharedValue(undefined); const chainId = useTrendingTokensStore(state => state.chainId); @@ -522,6 +520,8 @@ function NetworkFilter() { const { icon, label, lightenedNetworkColor } = useMemo(() => { if (!chainId) return { icon: '􀤆', label: i18n.t(t.all), lightenedNetworkColor: undefined }; + const lightenedNetworkColor = useBackendNetworksStore.getState().getColorsForChainId(chainId, isDarkMode); + return { icon: ( @@ -529,11 +529,11 @@ function NetworkFilter() { ), label: useBackendNetworksStore.getState().getChainsLabel()[chainId], - lightenedNetworkColor: colors.networkColors[chainId] - ? getMixedColor(colors.networkColors[chainId], globalColors.white100, isDarkMode ? 0.55 : 0.6) + lightenedNetworkColor: lightenedNetworkColor + ? getMixedColor(lightenedNetworkColor, globalColors.white100, isDarkMode ? 0.55 : 0.6) : undefined, }; - }, [chainId, colors.networkColors, isDarkMode]); + }, [chainId, isDarkMode]); const setSelected = useCallback( (chainId: ChainId | undefined) => { diff --git a/src/components/NetworkSwitcher.tsx b/src/components/NetworkSwitcher.tsx index 61394cdc5d4..2b385abb1fe 100644 --- a/src/components/NetworkSwitcher.tsx +++ b/src/components/NetworkSwitcher.tsx @@ -373,9 +373,10 @@ function AllNetworksSection({ } function NetworkOption({ chainId, selected }: { chainId: ChainId; selected: SharedValue }) { - const { colors } = useTheme(); + const { isDarkMode } = useColorMode(); + const getColorsForChainId = useBackendNetworksStore(state => state.getColorsForChainId); const chainName = useBackendNetworksStore.getState().getChainsLabel()[chainId]; - const chainColor = colors.networkColors[chainId] ? colors.networkColors[chainId] : undefined; + const chainColor = getColorsForChainId(chainId, isDarkMode); const isSelected = useDerivedValue(() => selected.value === chainId); const { animatedStyle } = useNetworkOptionStyle(isSelected, chainColor); diff --git a/src/screens/ExplainSheet.js b/src/screens/ExplainSheet.js index 9e30b06daa6..b63fa165f32 100644 --- a/src/screens/ExplainSheet.js +++ b/src/screens/ExplainSheet.js @@ -733,7 +733,7 @@ export const explainers = (params, theme) => { }, swap_refuel_add: { logo: ( - + { networkName: params?.networkName, gasToken: params?.gasToken, }), - textColor: colors?.networkColors[chainId], - bgColor: colors?.networkColors[chainId] && colors?.alpha(colors?.networkColors[chainId], 0.05), + textColor: color, + bgColor: color && colors?.alpha(color, 0.05), onPress: params?.onRefuel, }, }, swap_refuel_deduct: { logo: ( - + { networkName: params?.networkName, gasToken: params?.gasToken, }), - textColor: colors?.networkColors[chainId], - bgColor: colors?.networkColors[chainId] && colors?.alpha(colors?.networkColors[chainId], 0.05), + textColor: color, + bgColor: color && colors?.alpha(color, 0.05), onPress: params?.onRefuel, }, }, swap_refuel_notice: { extraHeight: 50, logo: ( - + Date: Fri, 20 Dec 2024 17:24:22 -0500 Subject: [PATCH 17/19] fix and others i18n (#6367) --- src/components/Discover/TrendingTokens.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Discover/TrendingTokens.tsx b/src/components/Discover/TrendingTokens.tsx index de88bc4b52e..223a8041981 100644 --- a/src/components/Discover/TrendingTokens.tsx +++ b/src/components/Discover/TrendingTokens.tsx @@ -280,7 +280,7 @@ function FriendHolders({ friends }: { friends: FarcasterUser[] }) { {friends.length > 2 && ( {' '} - {i18n.t('trending_tokens.and_others', { count: howManyOthers })} + {i18n.t(t.and_others[howManyOthers === 1 ? 'one' : 'other'], { count: howManyOthers })} )} From 0f4f232e99b2abbb642ebf8b3af69f3414f46f9b Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Fri, 20 Dec 2024 17:26:59 -0500 Subject: [PATCH 18/19] Prevent backup prompt from firing on import (#6364) * remove backup prompt from importing flow as it runs in the walletReady flow now * fix potential race condition --- src/handlers/walletReadyEvents.ts | 10 ++++------ src/hooks/useImportingWallet.ts | 18 ------------------ 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/src/handlers/walletReadyEvents.ts b/src/handlers/walletReadyEvents.ts index b62749da519..b8e53674c66 100644 --- a/src/handlers/walletReadyEvents.ts +++ b/src/handlers/walletReadyEvents.ts @@ -28,10 +28,10 @@ const delay = (ms: number) => }); const promptForBackupOnceReadyOrNotAvailable = async (): Promise => { - const { status } = backupsStore.getState(); - if (LoadingStates.includes(status)) { + let { status } = backupsStore.getState(); + while (LoadingStates.includes(status)) { await delay(1000); - return promptForBackupOnceReadyOrNotAvailable(); + status = backupsStore.getState().status; } logger.debug(`[walletReadyEvents]: BackupSheet: showing backup now sheet for selected wallet`); @@ -47,9 +47,7 @@ export const runWalletBackupStatusChecks = async (): Promise => { const { selected } = store.getState().wallets; if (!selected || IS_TEST) return false; - const selectedWalletNeedsBackedUp = - !selected.backedUp && !selected.damaged && selected.type !== WalletTypes.readOnly && selected.type !== WalletTypes.bluetooth; - if (selectedWalletNeedsBackedUp) { + if (!selected.backedUp && !selected.damaged && selected.type !== WalletTypes.readOnly && selected.type !== WalletTypes.bluetooth) { logger.debug('[walletReadyEvents]: Selected wallet is not backed up, prompting backup sheet'); return promptForBackupOnceReadyOrNotAvailable(); } diff --git a/src/hooks/useImportingWallet.ts b/src/hooks/useImportingWallet.ts index f1cde6313da..096099c8f61 100644 --- a/src/hooks/useImportingWallet.ts +++ b/src/hooks/useImportingWallet.ts @@ -339,24 +339,6 @@ export default function useImportingWallet({ showImportModal = true } = {}) { }); }, 1_000); - setTimeout(() => { - // If it's not read only or hardware, show the backup sheet - if ( - !( - isENSAddressFormat(input) || - isUnstoppableAddressFormat(input) || - isValidAddress(input) || - isValidBluetoothDeviceId(input) - ) - ) { - if (!IS_TEST) { - Navigation.handleAction(Routes.BACKUP_SHEET, { - step: WalletBackupStepTypes.backup_prompt, - }); - } - } - }, 1000); - analytics.track('Imported seed phrase', { isWalletEthZero, }); From 7a2ade35eee70b6e4ab53d967ab2210c0cf48c3e Mon Sep 17 00:00:00 2001 From: Matthew Wall Date: Mon, 23 Dec 2024 12:10:11 -0500 Subject: [PATCH 19/19] Fix broken backups e2e (#6365) * fix broken testID for backups and condiiton that prevents manually backed up wallets from being marked as backed up * fix path for serial and parallel * E2E improvements (#6369) * goodbye hardhat => hello anvil * replace usage of IS_TESTING in favor of IS_TEST * fix detox config * more refactor * anvil already installed in CI machines * fix anvil shutdown * retry per file so we can handle anvil separately * fix inverse logic --------- Co-authored-by: Bruno Barbieri Co-authored-by: Bruno Barbieri <1247834+brunobar79@users.noreply.github.com> --- .detoxrc.js | 2 + .github/workflows/macstadium-tests.yml | 11 +- ... anvilTransactionFlowSendAndWC.disable.js} | 12 +- ... => anvilTransactionFlowSwaps.disabled.js} | 14 +- e2e/Disabled/registerENSFlow.disabled.js | 10 +- e2e/Disabled/sendSheetFlow.disabled.ts | 14 +- e2e/Disabled/swapSheetFlow1.disabled.js | 12 +- e2e/Disabled/swapSheetFlow2.disabled.js | 18 +- e2e/helpers.ts | 25 +- e2e/init.js | 2 +- .../1_importAndWatchWalletsFlow.spec.ts | 4 +- e2e/parallel/2_newWalletFlow.spec.ts | 4 +- e2e/parallel/3_homeScreen.spec.ts | 4 +- e2e/parallel/4_discoverSheetFlow.spec.ts | 4 +- ...watchedWalletCollectionActionsFlow.spec.ts | 4 +- .../6_maliciousDappConnection.spec.ts | 4 +- e2e/parallel/7_manualBackup.spec.ts | 4 +- e2e/serial/1_sendSheetFlowContacts.spec.ts | 10 +- e2e/serial/2_swaps.spec.ts | 10 +- globals.d.ts | 4 +- hardhat.config.js | 17 - package.json | 11 +- scripts/anvil.sh | 3 + scripts/hardhat.sh | 3 - scripts/run-parallel-e2e.sh | 21 +- scripts/run-serial-e2e.sh | 82 +- .../screens/Swap/providers/swap-provider.tsx | 8 +- .../Swap/resources/assets/userAssets.ts | 10 +- src/analytics/index.ts | 9 +- src/components/ContactRowInfoButton.js | 5 +- src/components/Discover/DiscoverHome.tsx | 2 +- src/components/FeesPanel.tsx | 15 +- src/components/GweiInputPill.tsx | 5 +- src/components/Spinner.tsx | 4 +- src/components/animations/ShimmerAnimation.js | 4 +- src/components/asset-list/AssetListHeader.js | 4 +- .../FastCurrencySelectionRow.tsx | 4 +- src/components/coin-row/CoinRowAddButton.js | 4 +- .../coin-row/CoinRowFavoriteButton.js | 4 +- .../RegistrationAvatar/RegistrationAvatar.tsx | 7 +- .../check-fns/hasNonZeroTotalBalance.ts | 4 +- src/components/skeleton/Skeleton.tsx | 4 +- src/components/toasts/OfflineToast.js | 6 +- src/components/toasts/TestnetToast.js | 10 +- src/config/defaultDebug.ts | 2 +- src/handlers/swap.ts | 4 +- src/handlers/web3.ts | 12 +- src/helpers/RainbowContext.tsx | 24 +- src/hooks/useENSRegistrationStepHandler.tsx | 22 +- src/hooks/useRefreshAccountData.ts | 10 +- src/hooks/useWatchPendingTxs.ts | 12 +- src/languages/ar_AR.json | 4 +- src/languages/en_US.json | 4 +- src/languages/es_419.json | 4 +- src/languages/fr_FR.json | 4 +- src/languages/hi_IN.json | 4 +- src/languages/id_ID.json | 4 +- src/languages/ja_JP.json | 4 +- src/languages/ko_KR.json | 4 +- src/languages/pt_BR.json | 4 +- src/languages/ru_RU.json | 4 +- src/languages/th_TH.json | 4 +- src/languages/tr_TR.json | 4 +- src/languages/zh_CN.json | 4 +- src/model/migrations.ts | 6 +- src/performance/tracking/index.ts | 5 +- src/raps/actions/ens.ts | 4 +- src/redux/gas.ts | 8 +- .../{hardhatAssets.ts => anvilAssets.ts} | 16 +- src/screens/ENSIntroSheet.tsx | 5 +- .../components/Backups/WalletsAndBackup.tsx | 2 +- .../SettingsSheet/components/DevSection.tsx | 28 +- src/screens/SettingsSheet/utils.ts | 8 +- src/state/backendNetworks/backendNetworks.ts | 14 +- src/state/backendNetworks/types.ts | 38 +- src/state/connectedToAnvil/index.ts | 27 + src/state/connectedToHardhat/index.ts | 27 - src/utils/branch.ts | 4 +- src/utils/reviewAlert.ts | 4 +- yarn.lock | 1060 +---------------- 80 files changed, 418 insertions(+), 1394 deletions(-) rename e2e/Disabled/{hardhatTransactionFlowSendAndWC.disable.js => anvilTransactionFlowSendAndWC.disable.js} (97%) rename e2e/Disabled/{hardhatTransactionFlowSwaps.disabled.js => anvilTransactionFlowSwaps.disabled.js} (98%) delete mode 100644 hardhat.config.js create mode 100644 scripts/anvil.sh delete mode 100644 scripts/hardhat.sh rename src/resources/assets/{hardhatAssets.ts => anvilAssets.ts} (85%) create mode 100644 src/state/connectedToAnvil/index.ts delete mode 100644 src/state/connectedToHardhat/index.ts diff --git a/.detoxrc.js b/.detoxrc.js index 0b5b837895f..dae464e8324 100644 --- a/.detoxrc.js +++ b/.detoxrc.js @@ -4,6 +4,8 @@ module.exports = { args: { config: 'e2e/jest.e2e.config.js', _: ['e2e'], + bail: true, + forceExit: true, }, }, devices: { diff --git a/.github/workflows/macstadium-tests.yml b/.github/workflows/macstadium-tests.yml index b4dfe0d643e..4748f7b8df8 100644 --- a/.github/workflows/macstadium-tests.yml +++ b/.github/workflows/macstadium-tests.yml @@ -154,7 +154,7 @@ jobs: run: | rm -rf /Users/administrator/.cocoapods/repos/cocoapods/.git/index.lock yarn install-bundle && yarn install-pods - + - uses: irgaly/xcode-cache@v1 with: key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }} @@ -164,11 +164,12 @@ jobs: run: | sed -i'' -e "s/IS_TESTING=false/IS_TESTING=true/" .env && rm -f .env-e yarn detox build --configuration ios.sim.release + - name: Detox iOS e2e tests serial + run: | + ./scripts/run-serial-e2e.sh 3 - name: Detox iOS e2e tests parallel run: | - ./scripts/run-parallel-e2e.sh 3 + ./scripts/run-parallel-e2e.sh - - name: Detox iOS e2e tests serial - run: | - ./scripts/run-serial-e2e.sh 3 + diff --git a/e2e/Disabled/hardhatTransactionFlowSendAndWC.disable.js b/e2e/Disabled/anvilTransactionFlowSendAndWC.disable.js similarity index 97% rename from e2e/Disabled/hardhatTransactionFlowSendAndWC.disable.js rename to e2e/Disabled/anvilTransactionFlowSendAndWC.disable.js index 078e7ef09d2..d31a2bd1c3d 100644 --- a/e2e/Disabled/hardhatTransactionFlowSendAndWC.disable.js +++ b/e2e/Disabled/anvilTransactionFlowSendAndWC.disable.js @@ -40,11 +40,11 @@ const getOnchainBalance = async (address, tokenContractAddress) => { }; beforeAll(async () => { - await Helpers.startHardhat(); + await Helpers.startAnvil(); await Helpers.startIosSimulator(); }); -describe.skip('Hardhat Transaction Flow', () => { +describe.skip('Anvil Transaction Flow', () => { it('Should show the welcome screen', async () => { await Helpers.checkIfVisible('welcome-screen'); }); @@ -85,9 +85,9 @@ describe.skip('Hardhat Transaction Flow', () => { await Helpers.sendETHtoTestWallet(); }); - it('Should show Hardhat Toast after pressing Connect To Hardhat', async () => { - await Helpers.waitAndTap('dev-button-hardhat'); - await Helpers.checkIfVisible('testnet-toast-Hardhat'); + it('Should show Anvil Toast after pressing Connect To Anvil', async () => { + await Helpers.waitAndTap('dev-button-anvil'); + await Helpers.checkIfVisible('testnet-toast-Anvil'); }); it('Should open send sheet after tapping send fab', async () => { @@ -392,6 +392,6 @@ describe.skip('Hardhat Transaction Flow', () => { await connector?.killSession(); connector = null; await device.clearKeychain(); - await Helpers.killHardhat(); + await Helpers.killAnvil(); }); }); diff --git a/e2e/Disabled/hardhatTransactionFlowSwaps.disabled.js b/e2e/Disabled/anvilTransactionFlowSwaps.disabled.js similarity index 98% rename from e2e/Disabled/hardhatTransactionFlowSwaps.disabled.js rename to e2e/Disabled/anvilTransactionFlowSwaps.disabled.js index 1ff90c981af..7564b4a96ca 100644 --- a/e2e/Disabled/hardhatTransactionFlowSwaps.disabled.js +++ b/e2e/Disabled/anvilTransactionFlowSwaps.disabled.js @@ -6,7 +6,7 @@ const ios = device.getPlatform() === 'ios'; const android = device.getPlatform() === 'android'; beforeAll(async () => { - await Helpers.startHardhat(); + await Helpers.startAnvil(); await Helpers.startIosSimulator(); }); @@ -29,11 +29,11 @@ const checkIfSwapCompleted = async (assetName, amount) => { }; // FIXME: Mainnet DAI doesn't show up in the swap search results -// This might be related to @Jin's latest work on changes to hardhat as +// This might be related to @Jin's latest work on changes to anvil as // part of the addy's REST API migration // // marking the test as SKIP for now -describe.skip('Hardhat Transaction Flow', () => { +describe.skip('Anvil Transaction Flow', () => { it('Should show the welcome screen', async () => { await Helpers.checkIfVisible('welcome-screen'); }); @@ -74,9 +74,9 @@ describe.skip('Hardhat Transaction Flow', () => { await Helpers.sendETHtoTestWallet(); }); - it('Should show Hardhat Toast after pressing Connect To Hardhat', async () => { - await Helpers.waitAndTap('dev-button-hardhat'); - await Helpers.checkIfVisible('testnet-toast-Hardhat'); + it('Should show Anvil Toast after pressing Connect To Anvil', async () => { + await Helpers.waitAndTap('dev-button-anvil'); + await Helpers.checkIfVisible('testnet-toast-Anvil'); }); it.skip('Should deposit DAI (via Compound)', async () => { @@ -414,6 +414,6 @@ describe.skip('Hardhat Transaction Flow', () => { await connector?.killSession(); connector = null; await device.clearKeychain(); - await Helpers.killHardhat(); + await Helpers.killAnvil(); }); }); diff --git a/e2e/Disabled/registerENSFlow.disabled.js b/e2e/Disabled/registerENSFlow.disabled.js index a177ab85c65..a6677f74b85 100644 --- a/e2e/Disabled/registerENSFlow.disabled.js +++ b/e2e/Disabled/registerENSFlow.disabled.js @@ -110,7 +110,7 @@ const validatePrimaryName = async name => { }; beforeAll(async () => { - await Helpers.startHardhat(); + await Helpers.startAnvil(); await Helpers.startIosSimulator(); }); @@ -155,9 +155,9 @@ describe.skip('Register ENS Flow', () => { await Helpers.sendETHtoTestWallet(); }); - it('Should show Hardhat Toast after pressing Connect To Hardhat', async () => { - await Helpers.waitAndTap('dev-button-hardhat'); - await Helpers.checkIfVisible('testnet-toast-Hardhat'); + it('Should show Anvil Toast after pressing Connect To Anvil', async () => { + await Helpers.waitAndTap('dev-button-anvil'); + await Helpers.checkIfVisible('testnet-toast-Anvil'); }); it('Should navigate to the Discover sheet screen after swiping left', async () => { @@ -637,6 +637,6 @@ describe.skip('Register ENS Flow', () => { afterAll(async () => { // Reset the app state await device.clearKeychain(); - await Helpers.killHardhat(); + await Helpers.killAnvil(); }); }); diff --git a/e2e/Disabled/sendSheetFlow.disabled.ts b/e2e/Disabled/sendSheetFlow.disabled.ts index 93b50f7091a..8c18386033e 100644 --- a/e2e/Disabled/sendSheetFlow.disabled.ts +++ b/e2e/Disabled/sendSheetFlow.disabled.ts @@ -1,7 +1,7 @@ import { device } from 'detox'; import { - startHardhat, - killHardhat, + startAnvil, + killAnvil, importWalletFlow, sendETHtoTestWallet, waitAndTap, @@ -16,11 +16,11 @@ import { describe.skip('Send Sheet Interaction Flow', () => { beforeAll(async () => { await device.reloadReactNative(); - await startHardhat(); + await startAnvil(); }); afterAll(async () => { await device.clearKeychain(); - await killHardhat(); + await killAnvil(); }); it('Import a wallet and go to welcome', async () => { @@ -31,9 +31,9 @@ describe.skip('Send Sheet Interaction Flow', () => { await sendETHtoTestWallet(); }); - it('Should show Hardhat Toast after pressing Connect To Hardhat', async () => { - await waitAndTap('dev-button-hardhat'); - await checkIfVisible('testnet-toast-Hardhat'); + it('Should show Anvil Toast after pressing Connect To Anvil', async () => { + await waitAndTap('dev-button-anvil'); + await checkIfVisible('testnet-toast-Anvil'); }); it('Should open send sheet after tapping send button', async () => { diff --git a/e2e/Disabled/swapSheetFlow1.disabled.js b/e2e/Disabled/swapSheetFlow1.disabled.js index a7ed282b8dc..f9e77663162 100644 --- a/e2e/Disabled/swapSheetFlow1.disabled.js +++ b/e2e/Disabled/swapSheetFlow1.disabled.js @@ -9,11 +9,11 @@ const android = device.getPlatform() === 'android'; describe.skip('Swap Sheet Interaction Flow', () => { beforeAll(async () => { - await Helpers.startHardhat(); + await Helpers.startAnvil(); }); afterAll(async () => { await device.clearKeychain(); - await Helpers.killHardhat(); + await Helpers.killAnvil(); }); it('Import a wallet and go to welcome', async () => { @@ -24,14 +24,14 @@ describe.skip('Swap Sheet Interaction Flow', () => { await Helpers.sendETHtoTestWallet(); }); - it('Should show Hardhat Toast after pressing Connect To Hardhat', async () => { + it('Should show Anvil Toast after pressing Connect To Anvil', async () => { await Helpers.delayTime('very-long'); - await Helpers.waitAndTap('dev-button-hardhat'); - await Helpers.checkIfVisible('testnet-toast-Hardhat'); + await Helpers.waitAndTap('dev-button-anvil'); + await Helpers.checkIfVisible('testnet-toast-Anvil'); }); // FIXME: Mainnet DAI doesn't show up in the swap search results - // This might be related to @Jin's latest work on changes to hardhat as + // This might be related to @Jin's latest work on changes to anvil as // part of the addy's REST API migration // // marking the test as SKIP for now diff --git a/e2e/Disabled/swapSheetFlow2.disabled.js b/e2e/Disabled/swapSheetFlow2.disabled.js index 7c91840a432..97b13a821d8 100644 --- a/e2e/Disabled/swapSheetFlow2.disabled.js +++ b/e2e/Disabled/swapSheetFlow2.disabled.js @@ -2,14 +2,14 @@ import * as Helpers from '../helpers'; import { device } from 'detox'; beforeAll(async () => { - await Helpers.startHardhat(); + await Helpers.startAnvil(); }); const ios = device.getPlatform() === 'ios'; const android = device.getPlatform() === 'android'; // FIXME: Mainnet DAI doesn't show up in the swap search results -// This might be related to @Jin's latest work on changes to hardhat as +// This might be related to @Jin's latest work on changes to anvil as // part of the addy's REST API migration // // marking the test as SKIP for now @@ -54,14 +54,14 @@ describe.skip('Swap Sheet Interaction Flow', () => { await Helpers.sendETHtoTestWallet(); }); - it('Should show Hardhat Toast after pressing Connect To Hardhat', async () => { + it('Should show Anvil Toast after pressing Connect To Anvil', async () => { // need to wait for balances to be fetched await Helpers.delay(10000); - await Helpers.waitAndTap('dev-button-hardhat'); - await Helpers.checkIfVisible('testnet-toast-Hardhat'); + await Helpers.waitAndTap('dev-button-anvil'); + await Helpers.checkIfVisible('testnet-toast-Anvil'); }); - it('Should connect to hardhat', async () => { + it('Should connect to anvil', async () => { await Helpers.swipe('wallet-screen', 'right', 'slow'); await Helpers.checkIfVisible('profile-screen'); await Helpers.waitAndTap('settings-button'); @@ -69,8 +69,8 @@ describe.skip('Swap Sheet Interaction Flow', () => { await Helpers.scrollTo('settings-menu-container', 'bottom'); await Helpers.waitAndTap('developer-section'); await Helpers.swipeUntilVisible('alert-section', 'developer-settings-sheet', 'up'); - await Helpers.waitAndTap('hardhat-section'); - await Helpers.checkIfVisible('testnet-toast-Hardhat'); + await Helpers.waitAndTap('anvil-section'); + await Helpers.checkIfVisible('testnet-toast-Anvil'); await Helpers.swipe('profile-screen', 'left', 'slow'); }); @@ -474,6 +474,6 @@ describe.skip('Swap Sheet Interaction Flow', () => { afterAll(async () => { // Reset the app state await device.clearKeychain(); - await Helpers.killHardhat(); + await Helpers.killAnvil(); }); }); diff --git a/e2e/helpers.ts b/e2e/helpers.ts index 441a9d0144d..2b0a39e880a 100644 --- a/e2e/helpers.ts +++ b/e2e/helpers.ts @@ -4,7 +4,7 @@ import { exec } from 'child_process'; import { JsonRpcProvider } from '@ethersproject/providers'; import { Wallet } from '@ethersproject/wallet'; import { expect, device, element, by, waitFor } from 'detox'; -import { parseEther } from '@ethersproject/units'; +import { formatEther, parseEther } from '@ethersproject/units'; import { IosElementAttributes, AndroidElementAttributes } from 'detox/detox'; const TESTING_WALLET = '0x3637f053D542E6D00Eee42D656dD7C59Fa33a62F'; @@ -20,12 +20,12 @@ interface ProviderFunction { _instance?: JsonRpcProvider; } -export async function startHardhat() { +export async function startAnvil() { await delayTime('short'); - exec('yarn hardhat'); + exec('yarn anvil'); } -export async function killHardhat() { +export async function killAnvil() { await delayTime('short'); exec('kill $(lsof -t -i:8545)'); } @@ -53,14 +53,14 @@ export async function importWalletFlow(customSeed?: string) { await checkIfVisible('wallet-screen'); } -export async function beforeAllcleanApp({ hardhat }: { hardhat?: boolean }) { +export async function beforeAllcleanApp({ anvil }: { anvil?: boolean }) { jest.resetAllMocks(); - hardhat && (await startHardhat()); + anvil && (await startAnvil()); } -export async function afterAllcleanApp({ hardhat }: { hardhat?: boolean }) { +export async function afterAllcleanApp({ anvil }: { anvil?: boolean }) { await device.clearKeychain(); - hardhat && (await killHardhat()); + anvil && (await killAnvil()); } export async function tap(elementId: string | RegExp) { @@ -467,16 +467,23 @@ export const getProvider: ProviderFunction = () => { }; export async function sendETHtoTestWallet() { + console.log('getting provider'); const provider = getProvider(); - // Hardhat account 0 that has 10000 ETH + console.log('got provider', provider); + // anvil account 0 that has 10000 ETH const wallet = new Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', provider); + console.log('got wallet', wallet); // Sending 20 ETH so we have enough to pay the tx fees even when the gas is too high + console.log('sending eth'); await wallet.sendTransaction({ to: TESTING_WALLET, value: parseEther('20'), }); + console.log('sent eth'); await delayTime('long'); + console.log('checking balance'); const balance = await provider.getBalance(TESTING_WALLET); + console.log('got balance', formatEther(balance)); if (balance.lt(parseEther('20'))) { throw Error('Error sending ETH to test wallet'); } diff --git a/e2e/init.js b/e2e/init.js index a8567e849b3..86d68eb47ad 100644 --- a/e2e/init.js +++ b/e2e/init.js @@ -8,7 +8,7 @@ beforeAll(async () => { if (device.getPlatform() === 'android') { // connecting to metro await device.reverseTcpPort(8081); - // connecting to hardhat + // connecting to anvil await device.reverseTcpPort(8545); // TODO: WIP for android connecting in dev // make sure we don't have gesture navigation what might cause collisions diff --git a/e2e/parallel/1_importAndWatchWalletsFlow.spec.ts b/e2e/parallel/1_importAndWatchWalletsFlow.spec.ts index 0e9b30cdaab..2259062c196 100644 --- a/e2e/parallel/1_importAndWatchWalletsFlow.spec.ts +++ b/e2e/parallel/1_importAndWatchWalletsFlow.spec.ts @@ -16,10 +16,10 @@ const android = device.getPlatform() === 'android'; describe('Import from private key flow', () => { beforeAll(async () => { - await beforeAllcleanApp({ hardhat: false }); + await beforeAllcleanApp({ anvil: false }); }); afterAll(async () => { - await afterAllcleanApp({ hardhat: false }); + await afterAllcleanApp({ anvil: false }); }); it('with 0x - Should show the welcome screen', async () => { await checkIfVisible('welcome-screen'); diff --git a/e2e/parallel/2_newWalletFlow.spec.ts b/e2e/parallel/2_newWalletFlow.spec.ts index 241dcb4e5d1..5db07d964f6 100644 --- a/e2e/parallel/2_newWalletFlow.spec.ts +++ b/e2e/parallel/2_newWalletFlow.spec.ts @@ -5,10 +5,10 @@ const android = device.getPlatform() === 'android'; describe('New Wallet flow', () => { beforeAll(async () => { - await beforeAllcleanApp({ hardhat: false }); + await beforeAllcleanApp({ anvil: false }); }); afterAll(async () => { - await afterAllcleanApp({ hardhat: false }); + await afterAllcleanApp({ anvil: false }); }); it('should show the welcome screen', async () => { diff --git a/e2e/parallel/3_homeScreen.spec.ts b/e2e/parallel/3_homeScreen.spec.ts index 1e32821ace8..8f78e63cfb5 100644 --- a/e2e/parallel/3_homeScreen.spec.ts +++ b/e2e/parallel/3_homeScreen.spec.ts @@ -14,10 +14,10 @@ const RAINBOW_TEST_WALLET = 'rainbowtestwallet.eth'; describe('Home Screen', () => { beforeAll(async () => { - await beforeAllcleanApp({ hardhat: false }); + await beforeAllcleanApp({ anvil: false }); }); afterAll(async () => { - await afterAllcleanApp({ hardhat: false }); + await afterAllcleanApp({ anvil: false }); }); it('imports wallet', async () => { diff --git a/e2e/parallel/4_discoverSheetFlow.spec.ts b/e2e/parallel/4_discoverSheetFlow.spec.ts index 0e2f9d632a3..5af4b8abd7c 100644 --- a/e2e/parallel/4_discoverSheetFlow.spec.ts +++ b/e2e/parallel/4_discoverSheetFlow.spec.ts @@ -17,10 +17,10 @@ const ios = device.getPlatform() === 'ios'; describe('Discover Screen Flow', () => { beforeAll(async () => { - await beforeAllcleanApp({ hardhat: false }); + await beforeAllcleanApp({ anvil: false }); }); afterAll(async () => { - await afterAllcleanApp({ hardhat: false }); + await afterAllcleanApp({ anvil: false }); }); it('Should import wallet and go to wallet screen', async () => { await importWalletFlow(); diff --git a/e2e/parallel/5_watchedWalletCollectionActionsFlow.spec.ts b/e2e/parallel/5_watchedWalletCollectionActionsFlow.spec.ts index 03fa4a5ab3e..b2c56b8656f 100644 --- a/e2e/parallel/5_watchedWalletCollectionActionsFlow.spec.ts +++ b/e2e/parallel/5_watchedWalletCollectionActionsFlow.spec.ts @@ -13,10 +13,10 @@ import { describe('Watched showcase and hidden actions flow', () => { beforeAll(async () => { - await beforeAllcleanApp({ hardhat: false }); + await beforeAllcleanApp({ anvil: false }); }); afterAll(async () => { - await afterAllcleanApp({ hardhat: false }); + await afterAllcleanApp({ anvil: false }); }); it('watches a wallet and loads wallet screen', async () => { diff --git a/e2e/parallel/6_maliciousDappConnection.spec.ts b/e2e/parallel/6_maliciousDappConnection.spec.ts index ad13c226403..2a3e1b890b9 100644 --- a/e2e/parallel/6_maliciousDappConnection.spec.ts +++ b/e2e/parallel/6_maliciousDappConnection.spec.ts @@ -15,11 +15,11 @@ import { WALLET_VARS } from '../testVariables'; describe('Check malicious dapp warning', () => { beforeAll(async () => { - await beforeAllcleanApp({ hardhat: false }); + await beforeAllcleanApp({ anvil: false }); }); afterAll(async () => { - await afterAllcleanApp({ hardhat: false }); + await afterAllcleanApp({ anvil: false }); }); it('Should be able to watch a wallet and load the wallet screen', async () => { diff --git a/e2e/parallel/7_manualBackup.spec.ts b/e2e/parallel/7_manualBackup.spec.ts index 680e042fc4d..9fd08830bca 100644 --- a/e2e/parallel/7_manualBackup.spec.ts +++ b/e2e/parallel/7_manualBackup.spec.ts @@ -14,10 +14,10 @@ import { describe('Backups', () => { beforeAll(async () => { - await beforeAllcleanApp({ hardhat: false }); + await beforeAllcleanApp({ anvil: false }); }); afterAll(async () => { - await afterAllcleanApp({ hardhat: false }); + await afterAllcleanApp({ anvil: false }); }); it('Imports wallet', async () => { diff --git a/e2e/serial/1_sendSheetFlowContacts.spec.ts b/e2e/serial/1_sendSheetFlowContacts.spec.ts index ece0ee36771..005173d66a3 100644 --- a/e2e/serial/1_sendSheetFlowContacts.spec.ts +++ b/e2e/serial/1_sendSheetFlowContacts.spec.ts @@ -18,10 +18,10 @@ const android = device.getPlatform() === 'android'; describe('Send Sheet Interaction Flow Contacts', () => { beforeAll(async () => { - await beforeAllcleanApp({ hardhat: true }); + await beforeAllcleanApp({}); }); afterAll(async () => { - await afterAllcleanApp({ hardhat: true }); + await afterAllcleanApp({}); }); it('Import a wallet and go to welcome', async () => { @@ -32,9 +32,9 @@ describe('Send Sheet Interaction Flow Contacts', () => { await sendETHtoTestWallet(); }); - it('Should show Hardhat Toast after pressing Connect To Hardhat', async () => { - await waitAndTap('dev-button-hardhat'); - await checkIfVisible('testnet-toast-Hardhat'); + it('Should show Anvil Toast after pressing Connect To Anvil', async () => { + await waitAndTap('dev-button-anvil'); + await checkIfVisible('testnet-toast-Anvil'); }); it('Should open send sheet after tapping send fab', async () => { diff --git a/e2e/serial/2_swaps.spec.ts b/e2e/serial/2_swaps.spec.ts index 9a4e3ed972c..f18f2c87fab 100644 --- a/e2e/serial/2_swaps.spec.ts +++ b/e2e/serial/2_swaps.spec.ts @@ -30,10 +30,10 @@ import { WALLET_VARS } from '../testVariables'; describe('Swap Sheet Interaction Flow', () => { beforeAll(async () => { - await beforeAllcleanApp({ hardhat: true }); + await beforeAllcleanApp({}); }); afterAll(async () => { - await afterAllcleanApp({ hardhat: true }); + await afterAllcleanApp({}); }); it('Import a wallet and go to welcome', async () => { @@ -45,9 +45,9 @@ describe('Swap Sheet Interaction Flow', () => { await sendETHtoTestWallet(); }); - it('Should show Hardhat Toast after pressing Connect To Hardhat', async () => { - await tap('dev-button-hardhat'); - await checkIfVisible('testnet-toast-Hardhat'); + it('Should show Anvil Toast after pressing Connect To Anvil', async () => { + await tap('dev-button-anvil'); + await checkIfVisible('testnet-toast-Anvil'); // doesn't work atm // validate it has the expected funds of 20 eth diff --git a/globals.d.ts b/globals.d.ts index bd6bee49caa..3c401e51846 100644 --- a/globals.d.ts +++ b/globals.d.ts @@ -49,8 +49,8 @@ declare module 'react-native-dotenv' { export const NFT_API_KEY: string; export const NFT_API_URL: string; export const ETHERSCAN_API_KEY: string; - export const HARDHAT_URL_ANDROID: string; - export const HARDHAT_URL_IOS: string; + export const ANVIL_URL_ANDROID: string; + export const ANVIL_URL_IOS: string; export const RAINBOW_MASTER_KEY: string; export const SECURE_WALLET_HASH_KEY: string; export const TEST_SEEDS: string; diff --git a/hardhat.config.js b/hardhat.config.js deleted file mode 100644 index b7aecb87c58..00000000000 --- a/hardhat.config.js +++ /dev/null @@ -1,17 +0,0 @@ -require('@nomiclabs/hardhat-waffle'); - -// You need to export an object to set up your config -// Go to https://hardhat.org/config/ to learn more - -/** - * @type import('hardhat/config').HardhatUserConfig - */ -module.exports = { - networks: { - hardhat: { - chainId: 1, - initialBaseFeePerGas: 100000000, // 0.1 gwei - }, - }, - solidity: '0.8.4', -}; diff --git a/package.json b/package.json index c7bd68d69cf..016bfd20be7 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "ds": "cd src/design-system/docs && yarn dev", "fast": "yarn install && yarn setup && yarn install-pods-fast", "gradle": "cd android && ./gradlew", - "hardhat": "sh ./scripts/hardhat.sh", + "anvil": "sh ./scripts/anvil.sh", "install-all": "yarn install && yarn setup && yarn install-pods", "install-all-no-flipper": "yarn install && yarn setup && yarn install-pods-no-flipper", "install-bundle": "cd ios && bundle install && cd ..", @@ -329,8 +329,6 @@ "@babel/preset-env": "7.22.0", "@babel/runtime": "7.22.0", "@lavamoat/allow-scripts": "3.0.1", - "@nomiclabs/hardhat-ethers": "2.2.3", - "@nomiclabs/hardhat-waffle": "2.0.6", "@react-native/babel-preset": "0.74.83", "@react-native/typescript-config": "0.74.83", "@rnx-kit/align-deps": "2.2.4", @@ -365,7 +363,6 @@ "eslint": "8.22.0", "eslint-config-rainbow": "4.3.0", "graphql": "15.3.0", - "hardhat": "2.18.1", "husky": "8.0.1", "image-size": "1.0.0", "jest": "29.7.0", @@ -479,16 +476,14 @@ "detox>bunyan>dtrace-provider": false, "detox>ws>bufferutil": false, "detox>ws>utf-8-validate": false, - "hardhat>@ethereumjs/vm>core-js-pure": false, "ethereumjs-util>ethereum-cryptography>secp256k1": false, - "hardhat>@nomicfoundation/ethereumjs-blockchain>level>classic-level": false, - "hardhat>keccak": false, "react-native-storage": false, "react-native-storage>opencollective>babel-polyfill>core-js": false, "viem>ws>bufferutil": false, "viem>ws>utf-8-validate": false, "@types/detox>detox": false, - "react-native-bootsplash>sharp": false + "react-native-bootsplash>sharp": false, + "ethereumjs-util>ethereum-cryptography>keccak": false } }, "lint-staged": { diff --git a/scripts/anvil.sh b/scripts/anvil.sh new file mode 100644 index 00000000000..9ec2c5e7956 --- /dev/null +++ b/scripts/anvil.sh @@ -0,0 +1,3 @@ +#!/bin/bash +source .env +anvil --fork-url $ETHEREUM_MAINNET_RPC_DEV diff --git a/scripts/hardhat.sh b/scripts/hardhat.sh deleted file mode 100644 index 1ef0a0e1ce3..00000000000 --- a/scripts/hardhat.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -source .env -npx hardhat node --fork $ETHEREUM_MAINNET_RPC_DEV \ No newline at end of file diff --git a/scripts/run-parallel-e2e.sh b/scripts/run-parallel-e2e.sh index 71961395466..3932bdcf69a 100755 --- a/scripts/run-parallel-e2e.sh +++ b/scripts/run-parallel-e2e.sh @@ -1,17 +1,14 @@ #!/bin/bash -max_retries="$1" -count=0 -until (( count >= max_retries )) -do - ./node_modules/.bin/detox test parallel/ -c ios.sim.release --maxWorkers 2 -- --forceExit --bail 1 - ret_val=$? - if [ $ret_val -eq 0 ]; then - exit 0 - fi - ((count++)) - echo "Test failed, attempt $count/$max_retries..." -done +# 0) Read build type from first argument; default to "release" if not specified +BUILD_TYPE=${1:-release} # can be "debug" or "release" +# 0.1) Decide Detox config based on BUILD_TYPE +if [ "$BUILD_TYPE" = "debug" ]; then + DETOX_CONFIG="ios.sim.debug" +else + DETOX_CONFIG="ios.sim.release" +fi +./node_modules/.bin/detox test ./e2e/parallel/ -c "$DETOX_CONFIG" --maxWorkers 2 --R 3 diff --git a/scripts/run-serial-e2e.sh b/scripts/run-serial-e2e.sh index dc1a1f6640e..922729eaeaf 100755 --- a/scripts/run-serial-e2e.sh +++ b/scripts/run-serial-e2e.sh @@ -1,18 +1,72 @@ #!/bin/bash +MAX_RETRIES=${1:-3} # number of times that a test should be retried in case of failure. default to 3 if not specified +BUILD_TYPE=${2:-release} # can be "debug" or "release". default to "release" if not specified -max_retries="$1" -count=0 - -until (( count >= max_retries )) -do - ./node_modules/.bin/detox test serial/ -c ios.sim.release --maxWorkers 1 -- --forceExit --bail 1 - ret_val=$? - if [ $ret_val -eq 0 ]; then - exit 0 - fi - ((count++)) - echo "Test failed, attempt $count/$max_retries..." + +# 0.1) Decide Detox config based on BUILD_TYPE +if [ "$BUILD_TYPE" = "debug" ]; then + DETOX_CONFIG="ios.sim.debug" +else + DETOX_CONFIG="ios.sim.release" +fi + +SUCCESS=false + +# Loop through each file in the ./e2e/serial/ directory +for test_file in ./e2e/serial/*.ts; do + COUNT=0 + until (( $COUNT >= MAX_RETRIES )) + do + echo "=====================================" + echo "Running test file: $test_file (attempt ${COUNT+1}/$MAX_RETRIES)" + echo "=====================================" + + echo "Starting anvil..." + # 1) Start Anvil in the background (show logs in terminal + save to file) + yarn anvil 2>&1 | grep -v "eth_" | tee anvil.log & + ANVIL_PID=$! + echo "Anvil started (PID: $ANVIL_PID)" + + # 2) Wait for Anvil to initialize + sleep 5 + + # 3) Run Detox for this single file with retries + ./node_modules/.bin/detox test "$test_file" -c "$DETOX_CONFIG" --maxWorkers 1 + ret_val=$? + + # 4) Kill the Anvil process + echo "Killing Anvil (PID: $ANVIL_PID)" + kill "$ANVIL_PID" 2>/dev/null || true + # kill any other processes using port 8545 + kill $(lsof -t -i:8545) 2>/dev/null || true + + # 5) Remove the Anvil log file + rm -rf anvil.log + + + # 6) Decide what to do if Detox failed or succeeded + if [ $ret_val -eq 0 ]; then + echo "✅ Tests passed for $test_file" + SUCCESS=true + break + fi + ((COUNT++)) + echo "❌ Test failed, attempt $COUNT/$MAX_RETRIES..." + + if(($COUNT >= MAX_RETRIES)) + then + SUCCESS=false + fi + done + + if [ "$SUCCESS" = "false" ]; then + echo "❌ Tests failed after $MAX_RETRIES attempts. Bailing out!" + exit 1 + fi done -echo "Tests failed after $max_retries attempts." -exit 1 \ No newline at end of file +echo "✅ All tests passed for every file!" +exit 0 + + + diff --git a/src/__swaps__/screens/Swap/providers/swap-provider.tsx b/src/__swaps__/screens/Swap/providers/swap-provider.tsx index 3aca6f27d6c..c7ef1482127 100644 --- a/src/__swaps__/screens/Swap/providers/swap-provider.tsx +++ b/src/__swaps__/screens/Swap/providers/swap-provider.tsx @@ -56,7 +56,7 @@ import { useSwapOutputQuotesDisabled } from '../hooks/useSwapOutputQuotesDisable import { SyncGasStateToSharedValues, SyncQuoteSharedValuesToState } from './SyncSwapStateAndSharedValues'; import { performanceTracking, Screens, TimeToSignOperation } from '@/state/performance/performance'; import { getRemoteConfig } from '@/model/remoteConfig'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; import { useBackendNetworksStore, getChainsNativeAssetWorklet } from '@/state/backendNetworks/backendNetworks'; import { getSwapsNavigationParams } from '../navigateToSwaps'; import { LedgerSigner } from '@/handlers/LedgerSigner'; @@ -226,7 +226,7 @@ export const SwapProvider = ({ children }: SwapProviderProps) => { NotificationManager?.postNotification('rapInProgress'); const provider = getProvider({ chainId: parameters.chainId }); - const connectedToHardhat = useConnectedToHardhatStore.getState().connectedToHardhat; + const connectedToAnvil = useConnectedToAnvilStore.getState().connectedToAnvil; const isBridge = swapsStore.getState().inputAsset?.mainnetAddress === swapsStore.getState().outputAsset?.mainnetAddress; const isDegenModeEnabled = swapsStore.getState().degenMode; @@ -286,7 +286,7 @@ export const SwapProvider = ({ children }: SwapProviderProps) => { }; } - const chainId = connectedToHardhat ? ChainId.hardhat : parameters.chainId; + const chainId = connectedToAnvil ? ChainId.anvil : parameters.chainId; const nonce = await getNextNonce({ address: parameters.quote.from, chainId }); const { errorMessage } = await performanceTracking.getState().executeFn({ @@ -345,7 +345,7 @@ export const SwapProvider = ({ children }: SwapProviderProps) => { userAssetsQueryKey({ address: parameters.quote.from, currency: nativeCurrency, - testnetMode: connectedToHardhat, + testnetMode: connectedToAnvil, }) ); diff --git a/src/__swaps__/screens/Swap/resources/assets/userAssets.ts b/src/__swaps__/screens/Swap/resources/assets/userAssets.ts index 6c2e0611f70..429b6c4f745 100644 --- a/src/__swaps__/screens/Swap/resources/assets/userAssets.ts +++ b/src/__swaps__/screens/Swap/resources/assets/userAssets.ts @@ -14,9 +14,9 @@ import { parseUserAsset } from '@/__swaps__/utils/assets'; import { greaterThan } from '@/helpers/utilities'; import { fetchUserAssetsByChain } from './userAssetsByChain'; -import { fetchHardhatBalancesByChainId } from '@/resources/assets/hardhatAssets'; +import { fetchAnvilBalancesByChainId } from '@/resources/assets/anvilAssets'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; import { staleBalancesStore } from '@/state/staleBalances'; import { IS_TEST } from '@/env'; import store from '@/redux/store'; @@ -106,7 +106,7 @@ async function userAssetsQueryFunction({ return {}; } if (testnetMode) { - const { assets, chainIdsInResponse } = await fetchHardhatBalancesByChainId(address); + const { assets, chainIdsInResponse } = await fetchAnvilBalancesByChainId(address); const parsedAssets: Array<{ asset: ZerionAsset; quantity: string; @@ -258,8 +258,8 @@ export function useUserAssets( { address, currency }: UserAssetsArgs, config: QueryConfigWithSelect = {} ) { - const { connectedToHardhat } = useConnectedToHardhatStore(); - return useQuery(userAssetsQueryKey({ address, currency, testnetMode: connectedToHardhat }), userAssetsQueryFunction, { + const { connectedToAnvil } = useConnectedToAnvilStore(); + return useQuery(userAssetsQueryKey({ address, currency, testnetMode: connectedToAnvil }), userAssetsQueryFunction, { ...config, enabled: !!address && !!currency, refetchInterval: USER_ASSETS_REFETCH_INTERVAL, diff --git a/src/analytics/index.ts b/src/analytics/index.ts index 222cf513b34..89aaa0a696a 100644 --- a/src/analytics/index.ts +++ b/src/analytics/index.ts @@ -1,13 +1,12 @@ import rudderClient from '@rudderstack/rudder-sdk-react-native'; -import { REACT_NATIVE_RUDDERSTACK_WRITE_KEY, RUDDERSTACK_DATA_PLANE_URL, IS_TESTING } from 'react-native-dotenv'; +import { REACT_NATIVE_RUDDERSTACK_WRITE_KEY, RUDDERSTACK_DATA_PLANE_URL } from 'react-native-dotenv'; import { EventProperties, event } from '@/analytics/event'; import { UserProperties } from '@/analytics/userProperties'; import { logger, RainbowError } from '@/logger'; import { device } from '@/storage'; import { WalletContext } from './utils'; - -const isTesting = IS_TESTING === 'true'; +import { IS_TEST } from '@/env'; export class Analytics { client: typeof rudderClient; @@ -19,8 +18,8 @@ export class Analytics { constructor() { this.client = rudderClient; - this.disabled = isTesting || !!device.get(['doNotTrack']); - if (isTesting) { + this.disabled = IS_TEST || !!device.get(['doNotTrack']); + if (IS_TEST) { logger.debug('[Analytics]: disabled for testing'); } else { logger.debug('[Analytics]: client initialized'); diff --git a/src/components/ContactRowInfoButton.js b/src/components/ContactRowInfoButton.js index 28ce8a1f159..fd93f487012 100644 --- a/src/components/ContactRowInfoButton.js +++ b/src/components/ContactRowInfoButton.js @@ -2,7 +2,6 @@ import lang from 'i18n-js'; import { startCase } from 'lodash'; import React from 'react'; import { View } from 'react-native'; -import { IS_TESTING } from 'react-native-dotenv'; import { ContextMenuButton } from 'react-native-ios-context-menu'; import RadialGradient from 'react-native-radial-gradient'; import { ButtonPressAnimation } from './animations'; @@ -12,7 +11,7 @@ import { Text } from './text'; import { useClipboard } from '@/hooks'; import styled from '@/styled-thing'; import { fonts, fontWithWidth, padding } from '@/styles'; - +import { IS_TEST } from '@/env'; import { abbreviations, ethereumUtils, haptics, showActionSheetWithOptions } from '@/utils'; const InfoButton = styled(Centered)({ @@ -27,7 +26,7 @@ const InfoButton = styled(Centered)({ ...padding.object(0, 0), }); -const Circle = styled(IS_TESTING === 'true' ? View : RadialGradient).attrs(({ theme: { colors } }) => ({ +const Circle = styled(IS_TEST ? View : RadialGradient).attrs(({ theme: { colors } }) => ({ center: [0, 15], colors: colors.gradients.lightestGrey, }))({ diff --git a/src/components/Discover/DiscoverHome.tsx b/src/components/Discover/DiscoverHome.tsx index 8da0ba974af..cb9fd14fed0 100644 --- a/src/components/Discover/DiscoverHome.tsx +++ b/src/components/Discover/DiscoverHome.tsx @@ -86,7 +86,7 @@ export default function DiscoverHome() { )} - {/* FIXME: IS_TESTING disables nftOffers this makes some DETOX tests hang forever at exit - investigate */} + {/* FIXME: IS_TEST disables nftOffers this makes some DETOX tests hang forever at exit - investigate */} {!IS_TEST && nftOffersEnabled && } {/* We have both flags here to be able to override the remote flag and show the card anyway in Dev*/} {featuredResultsEnabled && ( diff --git a/src/components/FeesPanel.tsx b/src/components/FeesPanel.tsx index fd458b62ffb..b9d387759e7 100644 --- a/src/components/FeesPanel.tsx +++ b/src/components/FeesPanel.tsx @@ -3,7 +3,6 @@ import { useIsFocused, useNavigation, useRoute } from '@react-navigation/native' import { upperFirst } from 'lodash'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { InteractionManager, Keyboard, KeyboardAvoidingView } from 'react-native'; -import { IS_TESTING } from 'react-native-dotenv'; import { Alert } from '@/components/alerts'; import { useTheme } from '@/theme/ThemeContext'; import { ButtonPressAnimation } from '@/components/animations'; @@ -15,7 +14,7 @@ import { gweiToWei, parseGasFeeParam } from '@/parsers'; import Routes from '@/navigation/routesNames'; import { gasUtils } from '@/utils'; import { Box, Inline, Inset, Row, Rows, Text } from '@/design-system'; -import { IS_ANDROID } from '@/env'; +import { IS_ANDROID, IS_TEST } from '@/env'; import { isL2Chain } from '@/handlers/web3'; const MAX_TEXT_WIDTH = 210; @@ -370,7 +369,7 @@ export default function FeesPanel({ currentGasTrend, colorForAsset, setCanGoBack stopBaseFeeTimeout(); startBaseFeeTimeout(async () => { // there's an e2e modifying this panel so I needed values that aren't dependent on the network conditions - const maxBaseFeeToValidate = IS_TESTING === 'true' ? 100 : currentBaseFee; + const maxBaseFeeToValidate = IS_TEST ? 100 : currentBaseFee; if (!maxBaseFee || isZero(maxBaseFee) || greaterThan(multiply(0.1, maxBaseFeeToValidate), maxBaseFee)) { setMaxBaseFeeError({ @@ -404,10 +403,7 @@ export default function FeesPanel({ currentGasTrend, colorForAsset, setCanGoBack } // there's an e2e modifying this panel so I needed values that aren't dependant on the network conditions if ( - greaterThan( - multiply(MINER_TIP_RANGE[0], IS_TESTING === 'true' ? 1 : gasFeeParamsBySpeed?.[NORMAL]?.maxPriorityFeePerGas?.gwei), - maxPriorityFee - ) + greaterThan(multiply(MINER_TIP_RANGE[0], IS_TEST ? 1 : gasFeeParamsBySpeed?.[NORMAL]?.maxPriorityFeePerGas?.gwei), maxPriorityFee) ) { setMaxPriorityFeeWarning({ message: lang.t('gas.lower_than_suggested'), @@ -415,10 +411,7 @@ export default function FeesPanel({ currentGasTrend, colorForAsset, setCanGoBack }); } else if ( // there's an e2e modifying this panel so I needed values that aren't dependant on the network conditions - greaterThan( - maxPriorityFee, - multiply(MINER_TIP_RANGE[1], IS_TESTING === 'true' ? 1 : gasFeeParamsBySpeed?.[URGENT]?.maxPriorityFeePerGas?.gwei) - ) + greaterThan(maxPriorityFee, multiply(MINER_TIP_RANGE[1], IS_TEST ? 1 : gasFeeParamsBySpeed?.[URGENT]?.maxPriorityFeePerGas?.gwei)) ) { setMaxPriorityFeeWarning({ message: lang.t('gas.higher_than_suggested'), diff --git a/src/components/GweiInputPill.tsx b/src/components/GweiInputPill.tsx index a1f9657de32..2c61642f224 100644 --- a/src/components/GweiInputPill.tsx +++ b/src/components/GweiInputPill.tsx @@ -1,5 +1,4 @@ import React, { useCallback } from 'react'; -import { IS_TESTING } from 'react-native-dotenv'; import LinearGradient from 'react-native-linear-gradient'; // @ts-expect-error - no declaration file import TextInputMask from 'react-native-text-input-mask'; @@ -9,7 +8,7 @@ import { buildTextStyles, margin, padding } from '@/styles'; import { useTheme } from '@/theme'; import { TextInput } from 'react-native'; import { Box, Inline, Inset, Text } from '@/design-system'; -import { IS_ANDROID } from '@/env'; +import { IS_ANDROID, IS_TEST } from '@/env'; const ANDROID_EXTRA_LINE_HEIGHT = 6; @@ -98,7 +97,7 @@ function GweiInputPill( testID={testID} value={value} /> - {IS_TESTING !== 'true' && ( + {!IS_TEST && ( Gwei diff --git a/src/components/Spinner.tsx b/src/components/Spinner.tsx index d33af18643b..9e32d25576e 100644 --- a/src/components/Spinner.tsx +++ b/src/components/Spinner.tsx @@ -1,12 +1,12 @@ import React from 'react'; import { StyleProp, ViewStyle } from 'react-native'; -import { IS_TESTING } from 'react-native-dotenv'; import SpinnerImageSource from '../assets/spinner.png'; import { useTheme } from '../theme/ThemeContext'; import { SpinAnimation } from './animations'; import { Centered } from './layout'; import { ImgixImage } from '@/components/images'; import { position } from '@/styles'; +import { IS_TEST } from '@/env'; type SpinnerProps = { color?: string; @@ -32,7 +32,7 @@ const Spinner = ({ color = '', duration = 1500, size = 20, ...props }: SpinnerPr return ( - {IS_TESTING !== 'true' && ( + {!IS_TEST && ( diff --git a/src/components/animations/ShimmerAnimation.js b/src/components/animations/ShimmerAnimation.js index 7d17fdbf480..c988721f6c8 100644 --- a/src/components/animations/ShimmerAnimation.js +++ b/src/components/animations/ShimmerAnimation.js @@ -3,7 +3,7 @@ import LinearGradient from 'react-native-linear-gradient'; import Animated, { Easing, useAnimatedStyle, useSharedValue, withRepeat, withTiming } from 'react-native-reanimated'; import styled from '@/styled-thing'; import { position } from '@/styles'; -import { IS_TESTING } from 'react-native-dotenv'; +import { IS_TEST } from '@/env'; const timingConfig = { duration: 2500, @@ -59,7 +59,7 @@ export default function ShimmerAnimation({ transform: [{ translateX: positionX.value }], })); - if (IS_TESTING === 'true') { + if (IS_TEST) { return null; } diff --git a/src/components/asset-list/AssetListHeader.js b/src/components/asset-list/AssetListHeader.js index 7e1013861be..6d6203ba608 100644 --- a/src/components/asset-list/AssetListHeader.js +++ b/src/components/asset-list/AssetListHeader.js @@ -1,5 +1,4 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { IS_TESTING } from 'react-native-dotenv'; import LinearGradient from 'react-native-linear-gradient'; import { abbreviations, magicMemo, measureText } from '../../utils'; import { ButtonPressAnimation } from '../animations'; @@ -17,6 +16,7 @@ import { fonts, position } from '@/styles'; import { useTheme } from '@/theme'; import * as lang from '@/languages'; import { useUserAssetsStore } from '@/state/assets/userAssets'; +import { IS_TEST } from '@/env'; export const AssetListHeaderHeight = ListHeaderHeight; @@ -82,7 +82,7 @@ const WalletSelectButton = ({ accountName, onChangeWallet, deviceWidth, textWidt {truncatedAccountName ? ( - {IS_TESTING !== 'true' && ( + {!IS_TEST && ( ({ +const Circle = styled(IS_TEST ? View : RadialGradient).attrs(({ theme: { colors } }) => ({ center: [0, 15], colors: colors.gradients.lightestGrey, }))({ diff --git a/src/components/coin-row/CoinRowFavoriteButton.js b/src/components/coin-row/CoinRowFavoriteButton.js index 303b2efd735..007434274c5 100644 --- a/src/components/coin-row/CoinRowFavoriteButton.js +++ b/src/components/coin-row/CoinRowFavoriteButton.js @@ -1,6 +1,5 @@ import React from 'react'; import { View } from 'react-native'; -import { IS_TESTING } from 'react-native-dotenv'; import { BaseButton } from 'react-native-gesture-handler'; import RadialGradient from 'react-native-radial-gradient'; import { useTheme } from '../../theme/ThemeContext'; @@ -10,6 +9,7 @@ import { CoinRowHeight } from './CoinRow'; import styled from '@/styled-thing'; import { padding } from '@/styles'; import { magicMemo } from '@/utils'; +import { IS_TEST } from '@/env'; const FavoriteButtonPadding = 19; @@ -24,7 +24,7 @@ const FavoriteButton = styled(Centered)({ width: 68, }); -const Circle = styled(IS_TESTING === 'true' ? View : RadialGradient).attrs(({ isFavorited, theme: { colors, isDarkMode } }) => ({ +const Circle = styled(IS_TEST ? View : RadialGradient).attrs(({ isFavorited, theme: { colors, isDarkMode } }) => ({ center: [0, 15], colors: isFavorited ? [colors.alpha('#FFB200', isDarkMode ? 0.15 : 0), colors.alpha('#FFB200', isDarkMode ? 0.05 : 0.2)] diff --git a/src/components/ens-registration/RegistrationAvatar/RegistrationAvatar.tsx b/src/components/ens-registration/RegistrationAvatar/RegistrationAvatar.tsx index 603f8258d6c..80a2afcfb47 100644 --- a/src/components/ens-registration/RegistrationAvatar/RegistrationAvatar.tsx +++ b/src/components/ens-registration/RegistrationAvatar/RegistrationAvatar.tsx @@ -1,6 +1,5 @@ import ConditionalWrap from 'conditional-wrap'; import React, { useCallback, useEffect, useState } from 'react'; -import { IS_TESTING } from 'react-native-dotenv'; import { Image } from 'react-native-image-crop-picker'; import { atom, useSetRecoilState } from 'recoil'; import ButtonPressAnimation from '../../animations/ButtonPressAnimation'; @@ -13,6 +12,7 @@ import { useENSModifiedRegistration, useENSRegistration, useENSRegistrationForm, import { ImgixImage } from '@/components/images'; import { magicMemo, stringifyENSNFTRecord } from '@/utils'; import { ENS_RECORDS } from '@/helpers/ens'; +import { IS_TEST } from '@/env'; export const avatarMetadataAtom = atom({ default: undefined, @@ -20,7 +20,6 @@ export const avatarMetadataAtom = atom({ }); const size = 70; -const isTesting = IS_TESTING === 'true'; const RegistrationAvatar = ({ hasSeenExplainSheet, @@ -131,11 +130,11 @@ const RegistrationAvatar = ({ ) : ( {children}} > diff --git a/src/components/remote-promo-sheet/check-fns/hasNonZeroTotalBalance.ts b/src/components/remote-promo-sheet/check-fns/hasNonZeroTotalBalance.ts index e2f68b89723..0a8414475a0 100644 --- a/src/components/remote-promo-sheet/check-fns/hasNonZeroTotalBalance.ts +++ b/src/components/remote-promo-sheet/check-fns/hasNonZeroTotalBalance.ts @@ -1,7 +1,7 @@ import { selectorFilterByUserChains, selectUserAssetsList } from '@/__swaps__/screens/Swap/resources/_selectors/assets'; import { userAssetsFetchQuery } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; import store from '@/redux/store'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; export const hasNonZeroTotalBalance = async (): Promise => { const { accountAddress, nativeCurrency } = store.getState().settings; @@ -9,7 +9,7 @@ export const hasNonZeroTotalBalance = async (): Promise => { const userAssetsDictByChain = await userAssetsFetchQuery({ address: accountAddress, currency: nativeCurrency, - testnetMode: useConnectedToHardhatStore.getState().connectedToHardhat, + testnetMode: useConnectedToAnvilStore.getState().connectedToAnvil, }); const assets = selectorFilterByUserChains({ data: userAssetsDictByChain, selector: selectUserAssetsList }); diff --git a/src/components/skeleton/Skeleton.tsx b/src/components/skeleton/Skeleton.tsx index 628090fc8a6..afd02fa4532 100644 --- a/src/components/skeleton/Skeleton.tsx +++ b/src/components/skeleton/Skeleton.tsx @@ -1,7 +1,6 @@ import MaskedView from '@react-native-masked-view/masked-view'; import React from 'react'; import { View, ViewProps } from 'react-native'; -import { IS_TESTING } from 'react-native-dotenv'; import { ThemeContextProps, withThemeContext } from '../../theme/ThemeContext'; import { deviceUtils } from '../../utils'; import { ShimmerAnimation } from '../animations'; @@ -9,6 +8,7 @@ import { CoinRowHeight } from '../coin-row'; import { Row } from '../layout'; import styled from '@/styled-thing'; import { position } from '@/styles'; +import { IS_TEST } from '@/env'; export const AssetListItemSkeletonHeight = CoinRowHeight; @@ -75,7 +75,7 @@ function Skeleton({ skeletonColor?: string; width?: number; }) { - if (animated && IS_TESTING !== 'true') { + if (animated && !IS_TEST) { return ( {children}} style={{ flex: 1 }}> diff --git a/src/components/toasts/OfflineToast.js b/src/components/toasts/OfflineToast.js index 053791ce854..266455625ca 100644 --- a/src/components/toasts/OfflineToast.js +++ b/src/components/toasts/OfflineToast.js @@ -3,13 +3,13 @@ import React from 'react'; import Toast from './Toast'; import { useAccountSettings, useInternetStatus } from '@/hooks'; import { ChainId } from '@/state/backendNetworks/types'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; const OfflineToast = () => { const isConnected = useInternetStatus(); const { chainId } = useAccountSettings(); - const { connectedToHardhat } = useConnectedToHardhatStore(); - const isMainnet = chainId === ChainId.mainnet && !connectedToHardhat; + const { connectedToAnvil } = useConnectedToAnvilStore(); + const isMainnet = chainId === ChainId.mainnet && !connectedToAnvil; return ; }; diff --git a/src/components/toasts/TestnetToast.js b/src/components/toasts/TestnetToast.js index 5618d0706d4..136fc021d78 100644 --- a/src/components/toasts/TestnetToast.js +++ b/src/components/toasts/TestnetToast.js @@ -4,11 +4,11 @@ import { Nbsp, Text } from '../text'; import Toast from './Toast'; import { useInternetStatus } from '@/hooks'; import { ChainId } from '@/state/backendNetworks/types'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; const TestnetToast = ({ chainId }) => { - const { connectedToHardhat } = useConnectedToHardhatStore(); + const { connectedToAnvil } = useConnectedToAnvilStore(); const isConnected = useInternetStatus(); const nativeAsset = useBackendNetworksStore.getState().getChainsNativeAsset()[chainId]; const name = useBackendNetworksStore.getState().getChainsName()[chainId]; @@ -18,9 +18,9 @@ const TestnetToast = ({ chainId }) => { useEffect(() => { if (chainId === ChainId.mainnet) { - if (connectedToHardhat) { + if (connectedToAnvil) { setVisible(true); - setNetworkName('Hardhat'); + setNetworkName('Anvil'); } else { setVisible(false); } @@ -28,7 +28,7 @@ const TestnetToast = ({ chainId }) => { setVisible(true); setNetworkName(name + (isConnected ? '' : ' (offline)')); } - }, [isConnected, chainId, connectedToHardhat, name]); + }, [isConnected, chainId, connectedToAnvil, name]); const { colors, isDarkMode } = useTheme(); diff --git a/src/config/defaultDebug.ts b/src/config/defaultDebug.ts index e3e349d1203..e39b0a01b45 100644 --- a/src/config/defaultDebug.ts +++ b/src/config/defaultDebug.ts @@ -9,7 +9,7 @@ export const debugLayoutAnimations = false; export const alwaysRequireApprove = false; export const showReloadButton = false; export const showSwitchModeButton = false; -export const showConnectToHardhatButton = false; +export const showConnectToAnvilButton = false; export const parseAllTxnsOnReceive = false; export const reactNativeDisableYellowBox = true; export const showNetworkRequests = false; diff --git a/src/handlers/swap.ts b/src/handlers/swap.ts index 7d811afc0d4..877dc315e40 100644 --- a/src/handlers/swap.ts +++ b/src/handlers/swap.ts @@ -3,7 +3,6 @@ import { Block, StaticJsonRpcProvider } from '@ethersproject/providers'; import { CrosschainQuote, getQuoteExecutionDetails, getRainbowRouterContractAddress, Quote } from '@rainbow-me/swaps'; import { Contract } from '@ethersproject/contracts'; import { MaxUint256 } from '@ethersproject/constants'; -import { IS_TESTING } from 'react-native-dotenv'; import { Token } from '../entities/tokens'; import { estimateGasWithPadding, getProvider, toHexNoLeadingZeros } from './web3'; import { getRemoteConfig } from '@/model/remoteConfig'; @@ -13,6 +12,7 @@ import { erc20ABI, ethUnits } from '@/references'; import { ethereumUtils } from '@/utils'; import { logger, RainbowError } from '@/logger'; import { ChainId } from '@/state/backendNetworks/types'; +import { IS_TEST } from '@/env'; export enum Field { INPUT = 'INPUT', @@ -191,7 +191,7 @@ export const estimateCrosschainSwapGasLimit = async ({ } try { if (requiresApprove) { - if (CHAIN_IDS_WITH_TRACE_SUPPORT.includes(chainId) && IS_TESTING !== 'true') { + if (CHAIN_IDS_WITH_TRACE_SUPPORT.includes(chainId) && !IS_TEST) { try { const gasLimitWithFakeApproval = await getSwapGasLimitWithFakeApproval(chainId, provider, tradeDetails); logger.debug('[swap]: Got gasLimitWithFakeApproval!', { diff --git a/src/handlers/web3.ts b/src/handlers/web3.ts index 96f099109a2..1e5c7ae00d8 100644 --- a/src/handlers/web3.ts +++ b/src/handlers/web3.ts @@ -24,9 +24,9 @@ import { import { ethereumUtils } from '@/utils'; import { logger, RainbowError } from '@/logger'; import { IS_IOS, RPC_PROXY_API_KEY, RPC_PROXY_BASE_URL } from '@/env'; -import { ChainId, chainHardhat } from '@/state/backendNetworks/types'; +import { ChainId, chainAnvil } from '@/state/backendNetworks/types'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; export enum TokenStandard { ERC1155 = 'ERC1155', @@ -111,8 +111,8 @@ export const getCachedProviderForNetwork = (chainId: ChainId = ChainId.mainnet): }; export const getBatchedProvider = ({ chainId = ChainId.mainnet }: { chainId?: number }): JsonRpcBatchProvider => { - if (useConnectedToHardhatStore.getState().connectedToHardhat) { - const provider = new JsonRpcBatchProvider(chainHardhat.rpcUrls.default.http[0], ChainId.mainnet); + if (useConnectedToAnvilStore.getState().connectedToAnvil) { + const provider = new JsonRpcBatchProvider(chainAnvil.rpcUrls.default.http[0], ChainId.mainnet); chainsBatchProviders.set(chainId, provider); return provider; @@ -131,8 +131,8 @@ export const getBatchedProvider = ({ chainId = ChainId.mainnet }: { chainId?: nu }; export const getProvider = ({ chainId = ChainId.mainnet }: { chainId?: number }): StaticJsonRpcProvider => { - if (useConnectedToHardhatStore.getState().connectedToHardhat) { - const provider = new StaticJsonRpcProvider(chainHardhat.rpcUrls.default.http[0], ChainId.mainnet); + if (useConnectedToAnvilStore.getState().connectedToAnvil) { + const provider = new StaticJsonRpcProvider(chainAnvil.rpcUrls.default.http[0], ChainId.mainnet); chainsProviders.set(chainId, provider); return provider; diff --git a/src/helpers/RainbowContext.tsx b/src/helpers/RainbowContext.tsx index 5fe0d9f4f38..3a0f90586fa 100644 --- a/src/helpers/RainbowContext.tsx +++ b/src/helpers/RainbowContext.tsx @@ -3,17 +3,17 @@ import { MMKV } from 'react-native-mmkv'; import { useSharedValue } from 'react-native-reanimated'; import DevButton from '../components/dev-buttons/DevButton'; import Emoji from '../components/text/Emoji'; -import { showReloadButton, showSwitchModeButton, showConnectToHardhatButton } from '../config/debug'; +import { showReloadButton, showSwitchModeButton, showConnectToAnvilButton } from '../config/debug'; import { defaultConfig } from '@/config/experimental'; import { useDispatch } from 'react-redux'; import { useTheme } from '../theme/ThemeContext'; import { STORAGE_IDS } from '@/model/mmkv'; -import { IS_TESTING } from 'react-native-dotenv'; import { logger, RainbowError } from '@/logger'; import { Navigation } from '@/navigation'; import Routes from '@rainbow-me/routes'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; +import { IS_TEST } from '@/env'; export type RainbowContextType = { config: Record; @@ -37,7 +37,7 @@ export default function RainbowContextWrapper({ children }: PropsWithChildren) { // This value is hold here to prevent JS VM from shutting down // on unmounting all shared values. useSharedValue(0); - const { setConnectedToHardhat } = useConnectedToHardhatStore(); + const { setConnectedToAnvil } = useConnectedToAnvilStore(); const [config, setConfig] = useState>( Object.entries(defaultConfig).reduce((acc, [key, { value }]) => ({ ...acc, [key]: value }), {}) ); @@ -71,26 +71,26 @@ export default function RainbowContextWrapper({ children }: PropsWithChildren) { const dispatch = useDispatch(); - const connectToHardhat = useCallback(async () => { + const connectToAnvil = useCallback(async () => { try { - setConnectedToHardhat(true); - logger.debug('connected to hardhat'); + setConnectedToAnvil(true); + logger.debug('connected to anvil'); } catch (e: any) { - setConnectedToHardhat(false); - logger.error(new RainbowError('error connecting to hardhat'), { + setConnectedToAnvil(false); + logger.error(new RainbowError('error connecting to anvil'), { message: e.message, }); } Navigation.handleAction(Routes.WALLET_SCREEN, {}); - }, [dispatch, setConnectedToHardhat]); + }, [dispatch, setConnectedToAnvil]); return ( {children} {/* @ts-expect-error ts-migrate(2741) FIXME: Property 'color' is missing in type... Remove this comment to see the full error message */} {showReloadButton && __DEV__ && } - {((showConnectToHardhatButton && __DEV__) || IS_TESTING === 'true') && ( - + {((showConnectToAnvilButton && __DEV__) || IS_TEST) && ( + {/* @ts-ignore */} 👷 diff --git a/src/hooks/useENSRegistrationStepHandler.tsx b/src/hooks/useENSRegistrationStepHandler.tsx index d99183c9bec..8072546ac9d 100644 --- a/src/hooks/useENSRegistrationStepHandler.tsx +++ b/src/hooks/useENSRegistrationStepHandler.tsx @@ -15,16 +15,16 @@ import { } from '@/helpers/ens'; import { updateTransactionRegistrationParameters } from '@/redux/ensRegistration'; import { ChainId } from '@/state/backendNetworks/types'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; const checkRegisterBlockTimestamp = async ({ registrationParameters, secondsSinceCommitConfirmed, - connectedToHardhat, + connectedToAnvil, }: { registrationParameters: RegistrationParameters; secondsSinceCommitConfirmed: number; - connectedToHardhat: boolean; + connectedToAnvil: boolean; }) => { try { const provider = getProvider({ chainId: ChainId.mainnet }); @@ -35,7 +35,7 @@ const checkRegisterBlockTimestamp = async ({ (secs > ENS_SECONDS_WAIT_WITH_PADDING && secondsSinceCommitConfirmed > ENS_SECONDS_WAIT_WITH_PADDING) || // sometimes the provider.getBlock('latest) takes a long time to update to newest block secondsSinceCommitConfirmed > ENS_SECONDS_WAIT_PROVIDER_PADDING || - connectedToHardhat + connectedToAnvil ) { return true; } @@ -62,12 +62,12 @@ export default function useENSRegistrationStepHandler(observer = true) { -1 ); - const { connectedToHardhat } = useConnectedToHardhatStore(); + const { connectedToAnvil } = useConnectedToAnvilStore(); const [readyToRegister, setReadyToRegister] = useState(secondsSinceCommitConfirmed > ENS_SECONDS_WAIT); // flag to wait 10 secs before we get the tx block, to be able to simulate not confirmed tx when testing - const shouldLoopForConfirmation = useRef(connectedToHardhat); + const shouldLoopForConfirmation = useRef(connectedToAnvil); const registrationStep = useMemo(() => { if (mode === REGISTRATION_MODES.EDIT) return REGISTRATION_STEPS.EDIT; @@ -100,8 +100,8 @@ export default function useENSRegistrationStepHandler(observer = true) { if (!shouldLoopForConfirmation.current && block?.timestamp) { const now = Date.now(); const msBlockTimestamp = getBlockMsTimestamp(block); - // hardhat block timestamp is behind - const timeDifference = connectedToHardhat ? now - msBlockTimestamp : 0; + // anvil block timestamp is behind + const timeDifference = connectedToAnvil ? now - msBlockTimestamp : 0; const commitTransactionConfirmedAt = msBlockTimestamp + timeDifference; const secs = differenceInSeconds(now, commitTransactionConfirmedAt); setSecondsSinceCommitConfirmed(secondsSinceCommitConfirmed < 0 ? 0 : secs); @@ -115,7 +115,7 @@ export default function useENSRegistrationStepHandler(observer = true) { shouldLoopForConfirmation.current = false; } return confirmed; - }, [observer, commitTransactionHash, connectedToHardhat, secondsSinceCommitConfirmed, dispatch]); + }, [observer, commitTransactionHash, connectedToAnvil, secondsSinceCommitConfirmed, dispatch]); const startPollingWatchCommitTransaction = useCallback(async () => { if (observer) return; @@ -168,7 +168,7 @@ export default function useENSRegistrationStepHandler(observer = true) { if (!observer && secondsSinceCommitConfirmed % 2 === 0 && secondsSinceCommitConfirmed >= ENS_SECONDS_WAIT && !readyToRegister) { const checkIfReadyToRegister = async () => { const readyToRegister = await checkRegisterBlockTimestamp({ - connectedToHardhat, + connectedToAnvil, registrationParameters, secondsSinceCommitConfirmed, }); @@ -176,7 +176,7 @@ export default function useENSRegistrationStepHandler(observer = true) { }; checkIfReadyToRegister(); } - }, [connectedToHardhat, observer, readyToRegister, registrationParameters, secondsSinceCommitConfirmed]); + }, [connectedToAnvil, observer, readyToRegister, registrationParameters, secondsSinceCommitConfirmed]); useEffect( () => () => { diff --git a/src/hooks/useRefreshAccountData.ts b/src/hooks/useRefreshAccountData.ts index fd2ffbb4b87..d38b57ac45b 100644 --- a/src/hooks/useRefreshAccountData.ts +++ b/src/hooks/useRefreshAccountData.ts @@ -13,14 +13,14 @@ import { Address } from 'viem'; import { addysSummaryQueryKey } from '@/resources/summary/summary'; import useWallets from './useWallets'; import { claimablesQueryKey } from '@/resources/addys/claimables/query'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; export default function useRefreshAccountData() { const dispatch = useDispatch(); const { accountAddress, nativeCurrency } = useAccountSettings(); const [isRefreshing, setIsRefreshing] = useState(false); const profilesEnabled = useExperimentalFlag(PROFILES); - const { connectedToHardhat } = useConnectedToHardhatStore(); + const { connectedToAnvil } = useConnectedToAnvilStore(); const { wallets } = useWallets(); @@ -34,9 +34,7 @@ export default function useRefreshAccountData() { queryClient.invalidateQueries(positionsQueryKey({ address: accountAddress as Address, currency: nativeCurrency })); queryClient.invalidateQueries(claimablesQueryKey({ address: accountAddress, currency: nativeCurrency })); queryClient.invalidateQueries(addysSummaryQueryKey({ addresses: allAddresses, currency: nativeCurrency })); - queryClient.invalidateQueries( - userAssetsQueryKey({ address: accountAddress, currency: nativeCurrency, testnetMode: connectedToHardhat }) - ); + queryClient.invalidateQueries(userAssetsQueryKey({ address: accountAddress, currency: nativeCurrency, testnetMode: connectedToAnvil })); try { const getWalletNames = dispatch(fetchWalletNames()); @@ -50,7 +48,7 @@ export default function useRefreshAccountData() { logger.error(new RainbowError(`[useRefreshAccountData]: Error refreshing data: ${error}`)); throw error; } - }, [accountAddress, allAddresses, connectedToHardhat, dispatch, nativeCurrency, profilesEnabled]); + }, [accountAddress, allAddresses, connectedToAnvil, dispatch, nativeCurrency, profilesEnabled]); const refresh = useCallback(async () => { if (isRefreshing) return; diff --git a/src/hooks/useWatchPendingTxs.ts b/src/hooks/useWatchPendingTxs.ts index 517185d1407..4c90fcfa16c 100644 --- a/src/hooks/useWatchPendingTxs.ts +++ b/src/hooks/useWatchPendingTxs.ts @@ -10,7 +10,7 @@ import { invalidateAddressNftsQueries } from '@/resources/nfts'; import { usePendingTransactionsStore } from '@/state/pendingTransactions'; import { Address } from 'viem'; import { staleBalancesStore } from '@/state/staleBalances'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; export const useWatchPendingTransactions = ({ address }: { address: string }) => { @@ -18,7 +18,7 @@ export const useWatchPendingTransactions = ({ address }: { address: string }) => storePendingTransactions: state.pendingTransactions, setPendingTransactions: state.setPendingTransactions, })); - const { connectedToHardhat } = useConnectedToHardhatStore(); + const { connectedToAnvil } = useConnectedToAnvilStore(); const pendingTransactions = useMemo(() => storePendingTransactions[address] || [], [address, storePendingTransactions]); @@ -31,12 +31,12 @@ export const useWatchPendingTransactions = ({ address }: { address: string }) => userAssetsQueryKey({ address, currency: nativeCurrency, - testnetMode: connectedToHardhat, + testnetMode: connectedToAnvil, }) ); invalidateAddressNftsQueries(address); }, - [address, connectedToHardhat, nativeCurrency] + [address, connectedToAnvil, nativeCurrency] ); const processSupportedNetworkTransaction = useCallback( @@ -115,7 +115,7 @@ export const useWatchPendingTransactions = ({ address }: { address: string }) => }); queryClient.refetchQueries({ - queryKey: userAssetsQueryKey({ address, currency: nativeCurrency, testnetMode: connectedToHardhat }), + queryKey: userAssetsQueryKey({ address, currency: nativeCurrency, testnetMode: connectedToAnvil }), }); const supportedMainnetChainIds = useBackendNetworksStore.getState().getSupportedMainnetChainIds(); @@ -143,7 +143,7 @@ export const useWatchPendingTransactions = ({ address }: { address: string }) => address, pendingTransactions: newPendingTransactions, }); - }, [address, connectedToHardhat, nativeCurrency, pendingTransactions, processPendingTransaction, setPendingTransactions]); + }, [address, connectedToAnvil, nativeCurrency, pendingTransactions, processPendingTransaction, setPendingTransactions]); return { watchPendingTransactions }; }; diff --git a/src/languages/ar_AR.json b/src/languages/ar_AR.json index 581387865ed..680154a854b 100644 --- a/src/languages/ar_AR.json +++ b/src/languages/ar_AR.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "مسح ذاكرة التخزين المؤقت لبيانات الصور", "clear_local_storage": "مسح التخزين المحلي", "clear_mmkv_storage": "مسح التخزين MMKV", - "connect_to_hardhat": "الاتصال بـ hardhat", - "disconnect_to_hardhat": "افصل عن Hardhat", + "connect_to_anvil": "الاتصال بـ anvil", + "disconnect_to_anvil": "افصل عن Anvil", "crash_app_render_error": "تعطيل التطبيق (خطأ في التصيير)", "enable_testnets": "تمكين شبكات الاختبار", "installing_update": "تثبيت التحديث", diff --git a/src/languages/en_US.json b/src/languages/en_US.json index 5865734fece..66bdb0dec0d 100644 --- a/src/languages/en_US.json +++ b/src/languages/en_US.json @@ -523,8 +523,8 @@ "clear_image_metadata_cache": "Clear Image Metadata Cache", "clear_local_storage": "Clear local storage", "clear_mmkv_storage": "Clear MMKV storage", - "connect_to_hardhat": "Connect to hardhat", - "disconnect_to_hardhat": "Disconnect from hardhat", + "connect_to_anvil": "Connect to anvil", + "disconnect_to_anvil": "Disconnect from anvil", "crash_app_render_error": "Crash app (render error)", "enable_testnets": "Enable Testnets", "installing_update": "Installing update", diff --git a/src/languages/es_419.json b/src/languages/es_419.json index e75f3ecab54..be671fb2e61 100644 --- a/src/languages/es_419.json +++ b/src/languages/es_419.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "Borrar Cache de Metadatos de Imagen", "clear_local_storage": "Borrar almacenamiento local", "clear_mmkv_storage": "Borrar almacenamiento de MMKV", - "connect_to_hardhat": "Conectar a Hardhat", - "disconnect_to_hardhat": "Desconectar de hardhat", + "connect_to_anvil": "Conectar a Anvil", + "disconnect_to_anvil": "Desconectar de anvil", "crash_app_render_error": "Crash de la aplicación (error de renderización)", "enable_testnets": "Habilitar Testnets", "installing_update": "Instalando actualización", diff --git a/src/languages/fr_FR.json b/src/languages/fr_FR.json index 5219996ea32..2d36b80ad5e 100644 --- a/src/languages/fr_FR.json +++ b/src/languages/fr_FR.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "Effacer le cache des métadonnées d'image", "clear_local_storage": "Effacer le stockage local", "clear_mmkv_storage": "Effacer le stockage MMKV", - "connect_to_hardhat": "Se connecter à hardhat", - "disconnect_to_hardhat": "Déconnecter de hardhat", + "connect_to_anvil": "Se connecter à anvil", + "disconnect_to_anvil": "Déconnecter de anvil", "crash_app_render_error": "Crash app (render error) :)", "enable_testnets": "Activer Testnets", "installing_update": "Installation de la mise à jour", diff --git a/src/languages/hi_IN.json b/src/languages/hi_IN.json index 9f1e63ce207..6225599e370 100644 --- a/src/languages/hi_IN.json +++ b/src/languages/hi_IN.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "छवि मेटाडाटा कैश साफ करें", "clear_local_storage": "लोकल स्टोरेज को साफ करें", "clear_mmkv_storage": "MMKV स्टोरेज को साफ करें", - "connect_to_hardhat": "Hardhat से कनेक्ट करें", - "disconnect_to_hardhat": "हार्डहैट से डिस्कनेक्ट करें", + "connect_to_anvil": "Anvil से कनेक्ट करें", + "disconnect_to_anvil": "हार्डहैट से डिस्कनेक्ट करें", "crash_app_render_error": "ऐप्र्प्लिकेशन क्रैश करें (रेंडर त्रुटि)", "enable_testnets": "टेस्टनेट्स सक्षम करें", "installing_update": "अद्यतन स्थापित कर रहा है", diff --git a/src/languages/id_ID.json b/src/languages/id_ID.json index 2d46f0dc67e..33f73e497d8 100644 --- a/src/languages/id_ID.json +++ b/src/languages/id_ID.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "Hapus Cache Metadata Gambar", "clear_local_storage": "Hapus penyimpanan lokal", "clear_mmkv_storage": "Hapus penyimpanan MMKV", - "connect_to_hardhat": "Hubungkan ke hardhat", - "disconnect_to_hardhat": "Putuskan hubungan dari hardhat", + "connect_to_anvil": "Hubungkan ke anvil", + "disconnect_to_anvil": "Putuskan hubungan dari anvil", "crash_app_render_error": "Aplikasi crash (kesalahan render)", "enable_testnets": "Aktifkan Testnets", "installing_update": "Menginstal pembaruan", diff --git a/src/languages/ja_JP.json b/src/languages/ja_JP.json index 0087d9cc208..a9df28a7a1d 100644 --- a/src/languages/ja_JP.json +++ b/src/languages/ja_JP.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "クリアイメージメタデータキャッシュ", "clear_local_storage": "ローカルストレージをクリア", "clear_mmkv_storage": "MMKVストレージをクリア", - "connect_to_hardhat": "Hardhatに接続する", - "disconnect_to_hardhat": "hardhatから切断する", + "connect_to_anvil": "Anvilに接続する", + "disconnect_to_anvil": "anvilから切断する", "crash_app_render_error": "アプリをクラッシュさせる(レンダーエラー)", "enable_testnets": "テストネットを有効にする", "installing_update": "アップデートをインストール中", diff --git a/src/languages/ko_KR.json b/src/languages/ko_KR.json index 90da37af11c..4e9d0b3ac39 100644 --- a/src/languages/ko_KR.json +++ b/src/languages/ko_KR.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "이미지 메타데이터 캐시 지우기", "clear_local_storage": "로컬 저장소 지우기", "clear_mmkv_storage": "MMKV 저장소 지우기", - "connect_to_hardhat": "하드햇에 연결", - "disconnect_to_hardhat": "hardhat 연결 해제", + "connect_to_anvil": "하드햇에 연결", + "disconnect_to_anvil": "anvil 연결 해제", "crash_app_render_error": "애플리케이션 종료 (렌더링 오류)", "enable_testnets": "테스트넷 활성화", "installing_update": "업데이트 설치 중", diff --git a/src/languages/pt_BR.json b/src/languages/pt_BR.json index 2216e16b584..38db975c1f1 100644 --- a/src/languages/pt_BR.json +++ b/src/languages/pt_BR.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "Limpar Cache de Metadados da Imagem", "clear_local_storage": "Limpar Armazenamento Local", "clear_mmkv_storage": "Limpar Armazenamento MMKV", - "connect_to_hardhat": "Conectar ao Hardhat", - "disconnect_to_hardhat": "Desconectar do hardhat", + "connect_to_anvil": "Conectar ao Anvil", + "disconnect_to_anvil": "Desconectar do anvil", "crash_app_render_error": "Crash no app (erro de renderização)", "enable_testnets": "Ativar Testnets", "installing_update": "Instalando atualização", diff --git a/src/languages/ru_RU.json b/src/languages/ru_RU.json index 2867e9180ef..2bc33887870 100644 --- a/src/languages/ru_RU.json +++ b/src/languages/ru_RU.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "Очистить кэш метаданных изображения", "clear_local_storage": "Очистить локальное хранилище", "clear_mmkv_storage": "Очистить хранилище MMKV", - "connect_to_hardhat": "Подключиться к hardhat", - "disconnect_to_hardhat": "Отключиться от hardhat", + "connect_to_anvil": "Подключиться к anvil", + "disconnect_to_anvil": "Отключиться от anvil", "crash_app_render_error": "Падение приложения (ошибка отображения)", "enable_testnets": "Включить тестовые сети", "installing_update": "Установка обновления", diff --git a/src/languages/th_TH.json b/src/languages/th_TH.json index 80714c9a455..343029d2ee7 100644 --- a/src/languages/th_TH.json +++ b/src/languages/th_TH.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "ล้างแคชข้อมูลภาพ", "clear_local_storage": "ล้าง local storage", "clear_mmkv_storage": "ล้าง MMKV storage", - "connect_to_hardhat": "เชื่อมต่อกับ hardhat", - "disconnect_to_hardhat": "ตัดการเชื่อมต่อจาก Hardhat", + "connect_to_anvil": "เชื่อมต่อกับ anvil", + "disconnect_to_anvil": "ตัดการเชื่อมต่อจาก Anvil", "crash_app_render_error": "คว่ำ app (render error)", "enable_testnets": "เปิดใช้งาน Testnets", "installing_update": "กำลังติดตั้งการอัปเดต", diff --git a/src/languages/tr_TR.json b/src/languages/tr_TR.json index d7233d4a4ae..ffaa85ee5a8 100644 --- a/src/languages/tr_TR.json +++ b/src/languages/tr_TR.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "Resim Metaveri Önbelleğini Temizle", "clear_local_storage": "Yerel depolamayı temizle", "clear_mmkv_storage": "MMKV depolamasını temizle", - "connect_to_hardhat": "Hardhat'a bağlan", - "disconnect_to_hardhat": "Hardhat'tan bağlantıyı kes", + "connect_to_anvil": "Anvil'a bağlan", + "disconnect_to_anvil": "Anvil'tan bağlantıyı kes", "crash_app_render_error": "Uygulamayı çökert (render hatası)", "enable_testnets": "Testnetleri Etkinleştir", "installing_update": "Güncelleme Yükleniyor", diff --git a/src/languages/zh_CN.json b/src/languages/zh_CN.json index 92b9ff64e78..0d2540fa6e0 100644 --- a/src/languages/zh_CN.json +++ b/src/languages/zh_CN.json @@ -503,8 +503,8 @@ "clear_image_metadata_cache": "清除图片内元数据缓存", "clear_local_storage": "清除本地存储", "clear_mmkv_storage": "清除MMKV存储", - "connect_to_hardhat": "连接到hardhat", - "disconnect_to_hardhat": "断开硬帽连接", + "connect_to_anvil": "连接到anvil", + "disconnect_to_anvil": "断开硬帽连接", "crash_app_render_error": "崩溃应用程序(渲染错误)", "enable_testnets": "启用Testnets", "installing_update": "正在安装更新", diff --git a/src/model/migrations.ts b/src/model/migrations.ts index bfd41f7b887..a30d22d401a 100644 --- a/src/model/migrations.ts +++ b/src/model/migrations.ts @@ -42,7 +42,7 @@ import { getAddressAndChainIdFromUniqueId, getUniqueId, getUniqueIdNetwork } fro import { ParsedAssetsDictByChain, ParsedSearchAsset, UniqueId } from '@/__swaps__/types/assets'; import { userAssetsStore } from '@/state/assets/userAssets'; import { userAssetsQueryKey } from '@/__swaps__/screens/Swap/resources/assets/userAssets'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; import { selectorFilterByUserChains, selectUserAssetsList } from '@/__swaps__/screens/Swap/resources/_selectors/assets'; import { UnlockableAppIconKey, unlockableAppIcons } from '@/appIcons/appIcons'; import { unlockableAppIconStorage } from '@/featuresToUnlock/unlockableAppIconCheck'; @@ -728,8 +728,8 @@ export default async function runMigrations() { for (const wallet of Object.values(wallets)) { for (const { address } of (wallet as RainbowWallet).addresses) { - const { connectedToHardhat } = useConnectedToHardhatStore.getState(); - const queryKey = userAssetsQueryKey({ address, currency: nativeCurrency, testnetMode: connectedToHardhat }); + const { connectedToAnvil } = useConnectedToAnvilStore.getState(); + const queryKey = userAssetsQueryKey({ address, currency: nativeCurrency, testnetMode: connectedToAnvil }); const queryData: ParsedAssetsDictByChain | undefined = queryClient.getQueryData(queryKey); if (!queryData) continue; diff --git a/src/performance/tracking/index.ts b/src/performance/tracking/index.ts index 81b8fb5e73a..a0b3ebbcf3a 100644 --- a/src/performance/tracking/index.ts +++ b/src/performance/tracking/index.ts @@ -1,15 +1,16 @@ -import { IS_TESTING, SENTRY_ENVIRONMENT } from 'react-native-dotenv'; +import { SENTRY_ENVIRONMENT } from 'react-native-dotenv'; import { PerformanceMetricData } from './types/PerformanceMetricData'; import { PerformanceMetricsType } from './types/PerformanceMetrics'; import { PerformanceTagsType } from './types/PerformanceTags'; import { analytics } from '@/analytics'; +import { IS_TEST } from '@/env'; /* This will be a version for all performance tracking events. If we make breaking changes we will be able to take it into consideration when doing analytics */ const performanceTrackingVersion = 2; const shouldLogToConsole = __DEV__ || SENTRY_ENVIRONMENT === 'LocalRelease'; -const shouldReportMeasurement = IS_TESTING === 'false' && !__DEV__ && SENTRY_ENVIRONMENT !== 'LocalRelease'; +const shouldReportMeasurement = !IS_TEST && !__DEV__ && SENTRY_ENVIRONMENT !== 'LocalRelease'; const logTag = '[PERFORMANCE]: '; function logDurationIfAppropriate(metric: PerformanceMetricsType, durationInMs: number, ...additionalArgs: any[]) { diff --git a/src/raps/actions/ens.ts b/src/raps/actions/ens.ts index e4e315c98a4..ca380e1d0da 100644 --- a/src/raps/actions/ens.ts +++ b/src/raps/actions/ens.ts @@ -1,5 +1,4 @@ import { Signer } from '@ethersproject/abstract-signer'; -import { IS_TESTING } from 'react-native-dotenv'; import { ENSActionParameters, ENSRap, ENSRapActionType, RapENSAction, RapENSActionParameters } from '@/raps/common'; import { analytics } from '@/analytics'; import { ENSRegistrationRecords, NewTransaction, TransactionGasParamAmounts, TransactionStatus } from '@/entities'; @@ -23,6 +22,7 @@ import { } from '../registerENS'; import { Logger } from '@ethersproject/logger'; import { performanceTracking, Screens, TimeToSignOperation } from '@/state/performance/performance'; +import { IS_TEST } from '@/env'; export interface ENSRapActionResponse { baseNonce?: number | null; @@ -327,7 +327,7 @@ const ensAction = async ( // (MULTICALL || SET_TEXT) it's going to fail if we put the account address // since the account doesn't have the ENS yet const notUseOwnerAddress = - IS_TESTING !== 'true' && + !IS_TEST && mode === REGISTRATION_MODES.CREATE && (type === ENSRegistrationTransactionType.MULTICALL || type === ENSRegistrationTransactionType.SET_TEXT); diff --git a/src/redux/gas.ts b/src/redux/gas.ts index 496bec67a67..3ef75dbe5db 100644 --- a/src/redux/gas.ts +++ b/src/redux/gas.ts @@ -1,7 +1,6 @@ import { Mutex } from 'async-mutex'; import BigNumber from 'bignumber.js'; import { isEmpty } from 'lodash'; -import { IS_TESTING } from 'react-native-dotenv'; import { AppDispatch, AppGetState } from './store'; import { analytics } from '@/analytics'; import { logger, RainbowError } from '@/logger'; @@ -37,10 +36,11 @@ import { import { ethUnits } from '@/references'; import { ethereumUtils, gasUtils } from '@/utils'; import { ChainId } from '@/state/backendNetworks/types'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks'; import { MeteorologyLegacyResponse, MeteorologyResponse } from '@/entities/gas'; import { addBuffer } from '@/helpers/utilities'; +import { IS_TEST } from '@/env'; const { CUSTOM, NORMAL, URGENT } = gasUtils; @@ -368,9 +368,9 @@ export const gasPricesStartPolling = meteorologyGasParams as MeterologyGasParams; // Set a really gas estimate to guarantee that we're gonna be over - // the basefee at the time we fork mainnet during our hardhat tests + // the basefee at the time we fork mainnet during our anvil tests let baseFee = baseFeePerGas; - if (chainId === ChainId.mainnet && IS_TESTING === 'true' && useConnectedToHardhatStore.getState().connectedToHardhat) { + if (chainId === ChainId.mainnet && IS_TEST && useConnectedToAnvilStore.getState().connectedToAnvil) { baseFee = parseGasFeeParam(gweiToWei(1000)); } diff --git a/src/resources/assets/hardhatAssets.ts b/src/resources/assets/anvilAssets.ts similarity index 85% rename from src/resources/assets/hardhatAssets.ts rename to src/resources/assets/anvilAssets.ts index 409a3ee1a1c..e14963668a9 100644 --- a/src/resources/assets/hardhatAssets.ts +++ b/src/resources/assets/anvilAssets.ts @@ -13,7 +13,7 @@ import { useBackendNetworksStore } from '@/state/backendNetworks/backendNetworks const MAINNET_BALANCE_CHECKER = '0x4dcf4562268dd384fe814c00fad239f06c2a0c2b'; -const fetchHardhatBalancesWithBalanceChecker = async ( +const fetchAnvilBalancesWithBalanceChecker = async ( tokens: string[], address: string ): Promise<{ [tokenAddress: string]: string } | null> => { @@ -32,19 +32,19 @@ const fetchHardhatBalancesWithBalanceChecker = async ( }); return balances; } catch (e) { - logger.error(new RainbowError(`[hardhatAssets]: Error fetching balances from balanceCheckerContract: ${e}`)); + logger.error(new RainbowError(`[anvilAssets]: Error fetching balances from balanceCheckerContract: ${e}`)); return null; } }; /** * @deprecated - to be removed once rest of the app is converted to new userAssetsStore - * Fetches the balances of the hardhat assets for the given account address and network. + * Fetches the balances of the anvil assets for the given account address and network. * @param accountAddress - The address of the account to fetch the balances for. * @param network - The network to fetch the balances for. - * @returns The balances of the hardhat assets for the given account address and network. + * @returns The balances of the anvil assets for the given account address and network. */ -export const fetchHardhatBalances = async (accountAddress: string, chainId: ChainId = ChainId.mainnet): Promise => { +export const fetchAnvilBalances = async (accountAddress: string, chainId: ChainId = ChainId.mainnet): Promise => { const chainAssetsMap = keyBy( chainAssets[`${chainId}` as keyof typeof chainAssets], ({ asset }) => `${asset.asset_code}_${asset.chainId}` @@ -53,7 +53,7 @@ export const fetchHardhatBalances = async (accountAddress: string, chainId: Chai const tokenAddresses = Object.values(chainAssetsMap).map(({ asset: { asset_code } }) => asset_code === ETH_ADDRESS ? AddressZero : asset_code.toLowerCase() ); - const balances = await fetchHardhatBalancesWithBalanceChecker(tokenAddresses, accountAddress); + const balances = await fetchAnvilBalancesWithBalanceChecker(tokenAddresses, accountAddress); if (!balances) return {}; const updatedAssets = mapValues(chainAssetsMap, chainAsset => { @@ -70,7 +70,7 @@ export const fetchHardhatBalances = async (accountAddress: string, chainId: Chai return updatedAssets; }; -export const fetchHardhatBalancesByChainId = async ( +export const fetchAnvilBalancesByChainId = async ( accountAddress: string, chainId: ChainId = ChainId.mainnet ): Promise<{ @@ -88,7 +88,7 @@ export const fetchHardhatBalancesByChainId = async ( asset.asset_code === ETH_ADDRESS ? AddressZero : asset.asset_code.toLowerCase() ); - const balances = await fetchHardhatBalancesWithBalanceChecker(tokenAddresses, accountAddress); + const balances = await fetchAnvilBalancesWithBalanceChecker(tokenAddresses, accountAddress); if (!balances) return { assets: {}, diff --git a/src/screens/ENSIntroSheet.tsx b/src/screens/ENSIntroSheet.tsx index edcd087e44f..c9d82e6b9f3 100644 --- a/src/screens/ENSIntroSheet.tsx +++ b/src/screens/ENSIntroSheet.tsx @@ -1,6 +1,5 @@ import MaskedView from '@react-native-masked-view/masked-view'; import { useRoute } from '@react-navigation/native'; -import { IS_TESTING } from 'react-native-dotenv'; import lang from 'i18n-js'; import React, { useCallback, useMemo } from 'react'; import { InteractionManager, View } from 'react-native'; @@ -16,7 +15,7 @@ import { REGISTRATION_MODES } from '@/helpers/ens'; import { useAccountENSDomains, useDimensions, useENSAvatar, useENSRecords, useENSRegistration } from '@/hooks'; import Routes from '@/navigation/routesNames'; import { useTheme } from '@/theme'; -import { IS_ANDROID } from '@/env'; +import { IS_ANDROID, IS_TEST } from '@/env'; import ContextMenu from '@/components/context-menu/ContextMenu.android'; enum AnotherENSEnum { @@ -187,7 +186,7 @@ export default function ENSIntroSheet() { - {IS_TESTING !== 'true' && } + {!IS_TEST && } diff --git a/src/screens/SettingsSheet/components/Backups/WalletsAndBackup.tsx b/src/screens/SettingsSheet/components/Backups/WalletsAndBackup.tsx index 74ec4a4e969..f1a38d7ec24 100644 --- a/src/screens/SettingsSheet/components/Backups/WalletsAndBackup.tsx +++ b/src/screens/SettingsSheet/components/Backups/WalletsAndBackup.tsx @@ -348,7 +348,7 @@ export const WalletsAndBackup = () => { > {!isBackedUp && ( diff --git a/src/screens/SettingsSheet/components/DevSection.tsx b/src/screens/SettingsSheet/components/DevSection.tsx index 78bcdecae6b..f6919041c0f 100644 --- a/src/screens/SettingsSheet/components/DevSection.tsx +++ b/src/screens/SettingsSheet/components/DevSection.tsx @@ -33,7 +33,7 @@ import { isAuthenticated } from '@/utils/authentication'; import { getFCMToken } from '@/notifications/tokens'; import { nonceStore } from '@/state/nonces'; import { pendingTransactionsStore } from '@/state/pendingTransactions'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; import { addDefaultNotificationGroupSettings } from '@/notifications/settings/initialization'; import { unsubscribeAllNotifications } from '@/notifications/settings/settings'; @@ -41,7 +41,7 @@ const DevSection = () => { const { navigate } = useNavigation(); const { config, setConfig } = useContext(RainbowContext) as any; const { wallets } = useWallets(); - const setConnectedToHardhat = useConnectedToHardhatStore.getState().setConnectedToHardhat; + const setConnectedToAnvil = useConnectedToAnvilStore.getState().setConnectedToAnvil; const dispatch = useDispatch(); const [loadingStates, setLoadingStates] = useState({ @@ -61,17 +61,17 @@ const DevSection = () => { [config, setConfig] ); - const connectToHardhat = useCallback(async () => { + const connectToAnvil = useCallback(async () => { try { - const connectToHardhat = useConnectedToHardhatStore.getState().connectedToHardhat; - setConnectedToHardhat(!connectToHardhat); - logger.debug(`[DevSection] connected to hardhat`); + const connectToAnvil = useConnectedToAnvilStore.getState().connectedToAnvil; + setConnectedToAnvil(!connectToAnvil); + logger.debug(`[DevSection] connected to anvil`); } catch (e) { - setConnectedToHardhat(false); - logger.error(new RainbowError(`[DevSection] error connecting to hardhat: ${e}`)); + setConnectedToAnvil(false); + logger.error(new RainbowError(`[DevSection] error connecting to anvil: ${e}`)); } navigate(Routes.PROFILE_SCREEN); - }, [dispatch, navigate, setConnectedToHardhat]); + }, [dispatch, navigate, setConnectedToAnvil]); const checkAlert = useCallback(async () => { try { @@ -291,15 +291,15 @@ const DevSection = () => { /> } - onPress={connectToHardhat} + onPress={connectToAnvil} size={52} - testID="hardhat-section" + testID="anvil-section" titleComponent={ } diff --git a/src/screens/SettingsSheet/utils.ts b/src/screens/SettingsSheet/utils.ts index 0fb1d26faff..cda0da5ef72 100644 --- a/src/screens/SettingsSheet/utils.ts +++ b/src/screens/SettingsSheet/utils.ts @@ -103,14 +103,14 @@ export const titleForBackupState: Partial> = { }; export const isWalletBackedUpForCurrentAccount = ({ backupType, backedUp, backupFile }: Partial) => { - if (!backupType || !backupFile) { - return false; - } - if (IS_IOS || backupType === WalletBackupTypes.manual) { return backedUp; } + if (!backupType || !backupFile) { + return false; + } + // NOTE: For Android, we also need to check if the current google account has the matching backup file if (!backupFile) { return false; diff --git a/src/state/backendNetworks/backendNetworks.ts b/src/state/backendNetworks/backendNetworks.ts index 64ddb85185b..585af6ee71f 100644 --- a/src/state/backendNetworks/backendNetworks.ts +++ b/src/state/backendNetworks/backendNetworks.ts @@ -6,9 +6,9 @@ import { createRainbowStore } from '@/state/internal/createRainbowStore'; import { Chain } from 'viem/chains'; import { transformBackendNetworksToChains } from '@/state/backendNetworks/utils'; import { IS_TEST } from '@/env'; -import { BackendNetwork, BackendNetworkServices, chainHardhat, chainHardhatOptimism, ChainId } from '@/state/backendNetworks/types'; +import { BackendNetwork, BackendNetworkServices, chainAnvil, chainAnvilOptimism, ChainId } from '@/state/backendNetworks/types'; import { GasSpeed } from '@/__swaps__/types/gas'; -import { useConnectedToHardhatStore } from '@/state/connectedToHardhat'; +import { useConnectedToAnvilStore } from '@/state/connectedToAnvil'; import { colors as globalColors } from '@/styles'; const INITIAL_BACKEND_NETWORKS = queryClient.getQueryData(backendNetworksQueryKey()) ?? buildTimeNetworks; @@ -76,7 +76,7 @@ export const useBackendNetworksStore = createRainbowStore( getSupportedChains: () => { const backendChains = get().getBackendChains(); - return IS_TEST ? [...backendChains, chainHardhat, chainHardhatOptimism] : backendChains; + return IS_TEST ? [...backendChains, chainAnvil, chainAnvilOptimism] : backendChains; }, getSortedSupportedChainIds: () => { @@ -363,8 +363,8 @@ export const useBackendNetworksStore = createRainbowStore( const defaultChains = get().getDefaultChains(); switch (chainId) { case ChainId.mainnet: - return useConnectedToHardhatStore.getState().connectedToHardhat - ? chainHardhat.rpcUrls.default.http[0] + return useConnectedToAnvilStore.getState().connectedToAnvil + ? chainAnvil.rpcUrls.default.http[0] : defaultChains[ChainId.mainnet].rpcUrls.default.http[0]; default: return defaultChains[chainId].rpcUrls.default.http[0]; @@ -391,7 +391,7 @@ export const getBackendChainsWorklet = (backendNetworks: SharedValue) => { 'worklet'; const backendChains = getBackendChainsWorklet(backendNetworks); - return IS_TEST ? [...backendChains, chainHardhat, chainHardhatOptimism] : backendChains; + return IS_TEST ? [...backendChains, chainAnvil, chainAnvilOptimism] : backendChains; }; export const getDefaultChainsWorklet = (backendNetworks: SharedValue) => { @@ -660,7 +660,7 @@ export const getChainDefaultRpcWorklet = (backendNetworks: SharedValue void; + + connectedToAnvilOp: boolean; + setConnectedToAnvilOp: (connectedToAnvilOp: boolean) => void; +} + +export const useConnectedToAnvilStore = createRainbowStore( + set => ({ + connectedToAnvil: false, + setConnectedToAnvil: connectedToAnvil => { + set({ connectedToAnvil }); + }, + + connectedToAnvilOp: false, + setConnectedToAnvilOp: connectedToAnvilOp => { + set({ connectedToAnvilOp }); + }, + }), + { + storageKey: 'connectedToAnvil', + version: 0, + } +); diff --git a/src/state/connectedToHardhat/index.ts b/src/state/connectedToHardhat/index.ts deleted file mode 100644 index 362d70e577e..00000000000 --- a/src/state/connectedToHardhat/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { createRainbowStore } from '../internal/createRainbowStore'; - -export interface ConnectedToHardhatState { - connectedToHardhat: boolean; - setConnectedToHardhat: (connectedToHardhat: boolean) => void; - - connectedToHardhatOp: boolean; - setConnectedToHardhatOp: (connectedToHardhatOp: boolean) => void; -} - -export const useConnectedToHardhatStore = createRainbowStore( - set => ({ - connectedToHardhat: false, - setConnectedToHardhat: connectedToHardhat => { - set({ connectedToHardhat }); - }, - - connectedToHardhatOp: false, - setConnectedToHardhatOp: connectedToHardhatOp => { - set({ connectedToHardhatOp }); - }, - }), - { - storageKey: 'connectedToHardhat', - version: 0, - } -); diff --git a/src/utils/branch.ts b/src/utils/branch.ts index c0d47bdaa77..c44d0c8ca01 100644 --- a/src/utils/branch.ts +++ b/src/utils/branch.ts @@ -2,10 +2,10 @@ import pako from 'pako'; import qs from 'qs'; import branch from 'react-native-branch'; -import { IS_TESTING } from 'react-native-dotenv'; import { analyticsV2 } from '@/analytics'; import * as ls from '@/storage'; import { logger, RainbowError } from '@/logger'; +import { IS_TEST } from '@/env'; const isEmpty = (obj: T | undefined): obj is undefined => !obj || Object.keys(obj).length === 0; @@ -86,7 +86,7 @@ export const branchListener = async (handleOpenLinkingURL: (url: string) => void */ logger.debug(`[branchListener]: handling event where no link was opened`, {}, logger.DebugContext.deeplinks); - if (IS_TESTING === 'true' && !!uri) { + if (IS_TEST && !!uri) { handleOpenLinkingURL(uri); } } else if (params.uri && typeof params.uri === 'string') { diff --git a/src/utils/reviewAlert.ts b/src/utils/reviewAlert.ts index dfbda01e918..767b305e2ba 100644 --- a/src/utils/reviewAlert.ts +++ b/src/utils/reviewAlert.ts @@ -3,8 +3,8 @@ import * as ls from '@/storage'; import { WrappedAlert as Alert } from '@/helpers/alert'; import { ReviewPromptAction } from '@/storage/schema'; import { logger, RainbowError } from '@/logger'; -import { IS_TESTING } from 'react-native-dotenv'; import * as StoreReview from 'expo-store-review'; +import { IS_TEST } from '@/env'; export const AppleReviewAddress = 'itms-apps://itunes.apple.com/us/app/appName/id1457119021?mt=8&action=write-review'; @@ -29,7 +29,7 @@ export const numberOfTimesBeforePrompt: { export const handleReviewPromptAction = async (action: ReviewPromptAction) => { logger.debug(`[reviewAlert]: handleReviewPromptAction: ${action}`); - if (IS_TESTING === 'true') { + if (IS_TEST) { return; } diff --git a/yarn.lock b/yarn.lock index b5fbcfce5a1..0c47a4cd051 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2240,52 +2240,6 @@ __metadata: languageName: node linkType: hard -"@chainsafe/as-sha256@npm:^0.3.1": - version: 0.3.1 - resolution: "@chainsafe/as-sha256@npm:0.3.1" - checksum: 10c0/72561fc6552a53e4d1fc28880b7f82ecb7a997670568333cb479f323db9482a6a59dd9d0f915210703e51c3a4ca2701ccdb4c66a0202abab4872d81184c9212e - languageName: node - linkType: hard - -"@chainsafe/persistent-merkle-tree@npm:^0.4.2": - version: 0.4.2 - resolution: "@chainsafe/persistent-merkle-tree@npm:0.4.2" - dependencies: - "@chainsafe/as-sha256": "npm:^0.3.1" - checksum: 10c0/9533e478a1a990e8cf8710a2eeb84c6f08c7b61726a43dbe2165316256839c29a2ff17923bce5e5effec446d832de8b0a5bc896ef5db80bce059af5d1bd20d8d - languageName: node - linkType: hard - -"@chainsafe/persistent-merkle-tree@npm:^0.5.0": - version: 0.5.0 - resolution: "@chainsafe/persistent-merkle-tree@npm:0.5.0" - dependencies: - "@chainsafe/as-sha256": "npm:^0.3.1" - checksum: 10c0/73c7a7536f49aceab61870fcc1dafef8a8be2ae0bfff2614846bb4b57a21939da75bca7bc5d1959cd312a5133be0acaf0e30fb323410c57592e9ec384758efe0 - languageName: node - linkType: hard - -"@chainsafe/ssz@npm:^0.10.0": - version: 0.10.2 - resolution: "@chainsafe/ssz@npm:0.10.2" - dependencies: - "@chainsafe/as-sha256": "npm:^0.3.1" - "@chainsafe/persistent-merkle-tree": "npm:^0.5.0" - checksum: 10c0/be427eba9f9c4a542326f9f3c20eb704c1c2500c4f124ba18febf6ffd5bb7bd5755228d99326bf6c4e4d969daa4b6ff2efb743688ec36ef86f20c0c673c0e967 - languageName: node - linkType: hard - -"@chainsafe/ssz@npm:^0.9.2": - version: 0.9.4 - resolution: "@chainsafe/ssz@npm:0.9.4" - dependencies: - "@chainsafe/as-sha256": "npm:^0.3.1" - "@chainsafe/persistent-merkle-tree": "npm:^0.4.2" - case: "npm:^1.6.3" - checksum: 10c0/4ce4b867c60dbee98772fe075037c7ef9a7894f97a4fb04f3cfd57e11fa683b8c23a4d80b53592d10fbd4e2abac43c9099181cfaee587619366f49091b9e5fcb - languageName: node - linkType: hard - "@coinbase/mobile-wallet-protocol-host@npm:0.1.7": version: 0.1.7 resolution: "@coinbase/mobile-wallet-protocol-host@npm:0.1.7" @@ -2517,7 +2471,7 @@ __metadata: languageName: node linkType: hard -"@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.0.1, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.5.0, @ethersproject/abi@npm:^5.7.0": +"@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.0.1, @ethersproject/abi@npm:^5.5.0, @ethersproject/abi@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/abi@npm:5.7.0" dependencies: @@ -2772,7 +2726,7 @@ __metadata: languageName: node linkType: hard -"@ethersproject/providers@npm:5.7.2, @ethersproject/providers@npm:^5.7.1, @ethersproject/providers@npm:^5.7.2": +"@ethersproject/providers@npm:5.7.2": version: 5.7.2 resolution: "@ethersproject/providers@npm:5.7.2" dependencies: @@ -3411,13 +3365,6 @@ __metadata: languageName: node linkType: hard -"@fastify/busboy@npm:^2.0.0": - version: 2.1.1 - resolution: "@fastify/busboy@npm:2.1.1" - checksum: 10c0/6f8027a8cba7f8f7b736718b013f5a38c0476eea67034c94a0d3c375e2b114366ad4419e6a6fa7ffc2ef9c6d3e0435d76dd584a7a1cbac23962fda7650b579e3 - languageName: node - linkType: hard - "@flatten-js/interval-tree@npm:^1.1.2": version: 1.1.3 resolution: "@flatten-js/interval-tree@npm:1.1.3" @@ -4315,19 +4262,6 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-sig-util@npm:^4.0.0": - version: 4.0.1 - resolution: "@metamask/eth-sig-util@npm:4.0.1" - dependencies: - ethereumjs-abi: "npm:^0.6.8" - ethereumjs-util: "npm:^6.2.1" - ethjs-util: "npm:^0.1.6" - tweetnacl: "npm:^1.0.3" - tweetnacl-util: "npm:^0.15.1" - checksum: 10c0/957fa16e8f0454ad45203a8416e77181853de1c9e33697f1a1582d46f18da1cca26c803a4e08bee7091a697609fc8916f399210fd5d3d2fccc34bfd0a58715f0 - languageName: node - linkType: hard - "@metamask/superstruct@npm:^3.0.0, @metamask/superstruct@npm:^3.1.0": version: 3.1.0 resolution: "@metamask/superstruct@npm:3.1.0" @@ -4468,13 +4402,6 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.2.0, @noble/hashes@npm:~1.2.0": - version: 1.2.0 - resolution: "@noble/hashes@npm:1.2.0" - checksum: 10c0/8bd3edb7bb6a9068f806a9a5a208cc2144e42940a21c049d8e9a0c23db08bef5cf1cfd844a7e35489b5ab52c6fa6299352075319e7f531e0996d459c38cfe26a - languageName: node - linkType: hard - "@noble/hashes@npm:1.3.2": version: 1.3.2 resolution: "@noble/hashes@npm:1.3.2" @@ -4510,13 +4437,6 @@ __metadata: languageName: node linkType: hard -"@noble/secp256k1@npm:1.7.1, @noble/secp256k1@npm:~1.7.0": - version: 1.7.1 - resolution: "@noble/secp256k1@npm:1.7.1" - checksum: 10c0/48091801d39daba75520012027d0ff0b1719338d96033890cfe0d287ad75af00d82769c0194a06e7e4fbd816ae3f204f4a59c9e26f0ad16b429f7e9b5403ccd5 - languageName: node - linkType: hard - "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -4544,266 +4464,6 @@ __metadata: languageName: node linkType: hard -"@nomicfoundation/ethereumjs-block@npm:5.0.2": - version: 5.0.2 - resolution: "@nomicfoundation/ethereumjs-block@npm:5.0.2" - dependencies: - "@nomicfoundation/ethereumjs-common": "npm:4.0.2" - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.2" - "@nomicfoundation/ethereumjs-trie": "npm:6.0.2" - "@nomicfoundation/ethereumjs-tx": "npm:5.0.2" - "@nomicfoundation/ethereumjs-util": "npm:9.0.2" - ethereum-cryptography: "npm:0.1.3" - ethers: "npm:^5.7.1" - checksum: 10c0/9bbf524706c86b3741eab42a82bce723ef413f2ecd85bc96b6353f619559780995bc21fcf765558a3a7ab5eca5c77926ae7440fe2467774d896f67ec9bfcd63e - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-blockchain@npm:7.0.2": - version: 7.0.2 - resolution: "@nomicfoundation/ethereumjs-blockchain@npm:7.0.2" - dependencies: - "@nomicfoundation/ethereumjs-block": "npm:5.0.2" - "@nomicfoundation/ethereumjs-common": "npm:4.0.2" - "@nomicfoundation/ethereumjs-ethash": "npm:3.0.2" - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.2" - "@nomicfoundation/ethereumjs-trie": "npm:6.0.2" - "@nomicfoundation/ethereumjs-tx": "npm:5.0.2" - "@nomicfoundation/ethereumjs-util": "npm:9.0.2" - abstract-level: "npm:^1.0.3" - debug: "npm:^4.3.3" - ethereum-cryptography: "npm:0.1.3" - level: "npm:^8.0.0" - lru-cache: "npm:^5.1.1" - memory-level: "npm:^1.0.0" - checksum: 10c0/388f938288396669108e6513c531e81d02d994dabcbf96261dd6672a882dfd4966cf9e05fd0c98d50c7aef847335a588b21dd0acba9d923cc734f4f61a7a77ba - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-common@npm:4.0.2": - version: 4.0.2 - resolution: "@nomicfoundation/ethereumjs-common@npm:4.0.2" - dependencies: - "@nomicfoundation/ethereumjs-util": "npm:9.0.2" - crc-32: "npm:^1.2.0" - checksum: 10c0/ce12038b8b3245a2a20b8a11fe19b4454a8179b7a1bb9185cd42a85b5a17f7fceacf0bf69517d095b52e3cede4eeda71a45044a5a8976f3f37e2d501f0adaea3 - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-ethash@npm:3.0.2": - version: 3.0.2 - resolution: "@nomicfoundation/ethereumjs-ethash@npm:3.0.2" - dependencies: - "@nomicfoundation/ethereumjs-block": "npm:5.0.2" - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.2" - "@nomicfoundation/ethereumjs-util": "npm:9.0.2" - abstract-level: "npm:^1.0.3" - bigint-crypto-utils: "npm:^3.0.23" - ethereum-cryptography: "npm:0.1.3" - checksum: 10c0/0a19f9243e9cc348e13bff0b0ec5ec9612c275550c5b0a3028b466f39e0959dd8c0eeeae7fc0c9af920023143658dbb18d87107167af344de92e76aaf683dcc4 - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-evm@npm:2.0.2": - version: 2.0.2 - resolution: "@nomicfoundation/ethereumjs-evm@npm:2.0.2" - dependencies: - "@ethersproject/providers": "npm:^5.7.1" - "@nomicfoundation/ethereumjs-common": "npm:4.0.2" - "@nomicfoundation/ethereumjs-tx": "npm:5.0.2" - "@nomicfoundation/ethereumjs-util": "npm:9.0.2" - debug: "npm:^4.3.3" - ethereum-cryptography: "npm:0.1.3" - mcl-wasm: "npm:^0.7.1" - rustbn.js: "npm:~0.2.0" - checksum: 10c0/a5711952d8afe1c61c3e8275217b7c3bd600de839ad784848ff556c498fee4d0c0a29834aa2c666263915ed6123a3191297c109bad8e50c135dd9de33d101cd7 - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-rlp@npm:5.0.2": - version: 5.0.2 - resolution: "@nomicfoundation/ethereumjs-rlp@npm:5.0.2" - bin: - rlp: bin/rlp - checksum: 10c0/46c7d317f59690973c41786b7a3ef3abe456efd085d55a0b202f6ead792e34e1a0749815911ab558b83f508c4ae5a6cba4d994aeae9c77c14ce0516f284ed34b - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-statemanager@npm:2.0.2": - version: 2.0.2 - resolution: "@nomicfoundation/ethereumjs-statemanager@npm:2.0.2" - dependencies: - "@nomicfoundation/ethereumjs-common": "npm:4.0.2" - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.2" - debug: "npm:^4.3.3" - ethereum-cryptography: "npm:0.1.3" - ethers: "npm:^5.7.1" - js-sdsl: "npm:^4.1.4" - checksum: 10c0/d3b184adb1b8aaf4c87299194746fc343a94df6f500d677f04a36914f7673eee19c344eb88a6f78718dcb4ae15d63c2c3e87cb9a5076950b67843e5bf9321ace - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-trie@npm:6.0.2": - version: 6.0.2 - resolution: "@nomicfoundation/ethereumjs-trie@npm:6.0.2" - dependencies: - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.2" - "@nomicfoundation/ethereumjs-util": "npm:9.0.2" - "@types/readable-stream": "npm:^2.3.13" - ethereum-cryptography: "npm:0.1.3" - readable-stream: "npm:^3.6.0" - checksum: 10c0/188c5d0a5793fb4512916091bde498e52ec6ecb374963213602f32e98c301d4d62f2daefd4ebefc0944d6d5b8346f104156fa544c0fc26ded488884a0424b2cc - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-tx@npm:5.0.2": - version: 5.0.2 - resolution: "@nomicfoundation/ethereumjs-tx@npm:5.0.2" - dependencies: - "@chainsafe/ssz": "npm:^0.9.2" - "@ethersproject/providers": "npm:^5.7.2" - "@nomicfoundation/ethereumjs-common": "npm:4.0.2" - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.2" - "@nomicfoundation/ethereumjs-util": "npm:9.0.2" - ethereum-cryptography: "npm:0.1.3" - checksum: 10c0/327c093656b4f6e845c3ef543b6ab54f6699436d95e18d0fca9df930dd2ddb975374b2499b3f98070cae4e6f54005b0484c1b40ff1838326cf5a631710116def - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-util@npm:9.0.2": - version: 9.0.2 - resolution: "@nomicfoundation/ethereumjs-util@npm:9.0.2" - dependencies: - "@chainsafe/ssz": "npm:^0.10.0" - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.2" - ethereum-cryptography: "npm:0.1.3" - checksum: 10c0/34b5b73f2e23bd883e53fd4d6810954d08451c84887b3d7c8910c093825686c499fe0edbb865db8d064c6790b447ce10f1aea030073befd64dbe62b75126dac6 - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-vm@npm:7.0.2": - version: 7.0.2 - resolution: "@nomicfoundation/ethereumjs-vm@npm:7.0.2" - dependencies: - "@nomicfoundation/ethereumjs-block": "npm:5.0.2" - "@nomicfoundation/ethereumjs-blockchain": "npm:7.0.2" - "@nomicfoundation/ethereumjs-common": "npm:4.0.2" - "@nomicfoundation/ethereumjs-evm": "npm:2.0.2" - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.2" - "@nomicfoundation/ethereumjs-statemanager": "npm:2.0.2" - "@nomicfoundation/ethereumjs-trie": "npm:6.0.2" - "@nomicfoundation/ethereumjs-tx": "npm:5.0.2" - "@nomicfoundation/ethereumjs-util": "npm:9.0.2" - debug: "npm:^4.3.3" - ethereum-cryptography: "npm:0.1.3" - mcl-wasm: "npm:^0.7.1" - rustbn.js: "npm:~0.2.0" - checksum: 10c0/759c16d471429e06b8a191b3b87c140690e6334586b5467587e7397e7e40dc0ec6aea4a73cea68a1ace125552beefc23624a6e667387031f5379000e56f83018 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.2" - checksum: 10c0/ef3b13bb2133fea6621db98f991036a3a84d2b240160edec50beafa6ce821fe2f0f5cd4aa61adb9685aff60cd0425982ffd15e0b868b7c768e90e26b8135b825 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.2" - checksum: 10c0/3cb6a00cd200b94efd6f59ed626c705c6f773b92ccf8b90471285cd0e81b35f01edb30c1aa5a4633393c2adb8f20fd34e90c51990dc4e30658e8a67c026d16c9 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.2" - checksum: 10c0/cb9725e7bdc3ba9c1feaef96dbf831c1a59c700ca633a9929fd97debdcb5ce06b5d7b4e6dbc076279978707214d01e2cd126d8e3f4cabc5c16525c031a47b95c - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.2" - checksum: 10c0/82a90b1d09ad266ddc510ece2e397f51fdaf29abf7263d2a3a85accddcba2ac24cceb670a3120800611cdcc552eed04919d071e259fdda7564818359ed541f5d - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.2" - checksum: 10c0/d1f20d4d55683bd041ead957e5461b2e43a39e959f905e8866de1d65f8d96118e9b861e994604d9002cb7f056be0844e36c241a6bb531c336b399609977c0998 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.2" - checksum: 10c0/6c17f9af3aaf184c0a217cf723076051c502d85e731dbc97f34b838f9ae1b597577abac54a2af49b3fd986b09131c52fa21fd5393b22d05e1ec7fee96a8249c2 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.2" - checksum: 10c0/da198464f5ee0d19b6decdfaa65ee0df3097b8960b8483bb7080931968815a5d60f27191229d47a198955784d763d5996f0b92bfde3551612ad972c160b0b000 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer@npm:^0.1.0": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer@npm:0.1.2" - dependencies: - "@nomicfoundation/solidity-analyzer-darwin-arm64": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-darwin-x64": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "npm:0.1.2" - dependenciesMeta: - "@nomicfoundation/solidity-analyzer-darwin-arm64": - optional: true - "@nomicfoundation/solidity-analyzer-darwin-x64": - optional: true - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": - optional: true - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": - optional: true - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": - optional: true - "@nomicfoundation/solidity-analyzer-linux-x64-musl": - optional: true - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": - optional: true - checksum: 10c0/e4f503e9287e18967535af669ca7e26e2682203c45a34ea85da53122da1dee1278f2b8c76c20c67fadd7c1b1a98eeecffd2cbc136860665e3afa133817c0de54 - languageName: node - linkType: hard - -"@nomiclabs/hardhat-ethers@npm:2.2.3": - version: 2.2.3 - resolution: "@nomiclabs/hardhat-ethers@npm:2.2.3" - peerDependencies: - ethers: ^5.0.0 - hardhat: ^2.0.0 - checksum: 10c0/cae46d1966108ab02b50fabe7945c8987fa1e9d5d0a7a06f79afc274ff1abc312e8a82375191a341b28571b897c22433d3a2826eb30077ed88d5983d01e381d0 - languageName: node - linkType: hard - -"@nomiclabs/hardhat-waffle@npm:2.0.6": - version: 2.0.6 - resolution: "@nomiclabs/hardhat-waffle@npm:2.0.6" - peerDependencies: - "@nomiclabs/hardhat-ethers": ^2.0.0 - "@types/sinon-chai": ^3.2.3 - ethereum-waffle: "*" - ethers: ^5.0.0 - hardhat: ^2.0.0 - checksum: 10c0/9614ab1e76959cfccc586842d990de4c2aa74cea8e82a838d017d91d4c696df931af4a77af9c16325e037ec8438a8c98c9bae5d9e4d0d0fcdaa147c86bce01b5 - languageName: node - linkType: hard - "@notifee/react-native@npm:7.8.2": version: 7.8.2 resolution: "@notifee/react-native@npm:7.8.2" @@ -6431,17 +6091,6 @@ __metadata: languageName: node linkType: hard -"@scure/bip32@npm:1.1.5": - version: 1.1.5 - resolution: "@scure/bip32@npm:1.1.5" - dependencies: - "@noble/hashes": "npm:~1.2.0" - "@noble/secp256k1": "npm:~1.7.0" - "@scure/base": "npm:~1.1.0" - checksum: 10c0/d0521f6de28278e06f2d517307b4de6c9bcb3dbdf9a5844bb57a6e4916a180e4136129ccab295c27bd1196ef77757608255afcd7cf927e03baec4479b3df74fc - languageName: node - linkType: hard - "@scure/bip32@npm:1.3.2": version: 1.3.2 resolution: "@scure/bip32@npm:1.3.2" @@ -6475,16 +6124,6 @@ __metadata: languageName: node linkType: hard -"@scure/bip39@npm:1.1.1": - version: 1.1.1 - resolution: "@scure/bip39@npm:1.1.1" - dependencies: - "@noble/hashes": "npm:~1.2.0" - "@scure/base": "npm:~1.1.0" - checksum: 10c0/821dc9d5be8362a32277390526db064860c2216a079ba51d63def9289c2b290599e93681ebbeebf0e93540799eec35784c1dfcf5167d0b280ef148e5023ce01b - languageName: node - linkType: hard - "@scure/bip39@npm:1.2.1": version: 1.2.1 resolution: "@scure/bip39@npm:1.2.1" @@ -6681,19 +6320,6 @@ __metadata: languageName: node linkType: hard -"@sentry/core@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/core@npm:5.30.0" - dependencies: - "@sentry/hub": "npm:5.30.0" - "@sentry/minimal": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/6407b9c2a6a56f90c198f5714b3257df24d89d1b4ca6726bd44760d0adabc25798b69fef2c88ccea461c7e79e3c78861aaebfd51fd3cb892aee656c3f7e11801 - languageName: node - linkType: hard - "@sentry/core@npm:7.119.0": version: 7.119.0 resolution: "@sentry/core@npm:7.119.0" @@ -6714,17 +6340,6 @@ __metadata: languageName: node linkType: hard -"@sentry/hub@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/hub@npm:5.30.0" - dependencies: - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/386c91d06aa44be0465fc11330d748a113e464d41cd562a9e1d222a682cbcb14e697a3e640953e7a0239997ad8a02b223a0df3d9e1d8816cb823fd3613be3e2f - languageName: node - linkType: hard - "@sentry/hub@npm:7.119.0": version: 7.119.0 resolution: "@sentry/hub@npm:7.119.0" @@ -6760,34 +6375,6 @@ __metadata: languageName: node linkType: hard -"@sentry/minimal@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/minimal@npm:5.30.0" - dependencies: - "@sentry/hub": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/34ec05503de46d01f98c94701475d5d89cc044892c86ccce30e01f62f28344eb23b718e7cf573815e46f30a4ac9da3129bed9b3d20c822938acfb40cbe72437b - languageName: node - linkType: hard - -"@sentry/node@npm:^5.18.1": - version: 5.30.0 - resolution: "@sentry/node@npm:5.30.0" - dependencies: - "@sentry/core": "npm:5.30.0" - "@sentry/hub": "npm:5.30.0" - "@sentry/tracing": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - cookie: "npm:^0.4.1" - https-proxy-agent: "npm:^5.0.0" - lru_map: "npm:^0.3.3" - tslib: "npm:^1.9.3" - checksum: 10c0/c50db7c81ace57cac17692245c2ab3c84a6149183f81d5f2dfd157eaa7b66eb4d6a727dd13a754bb129c96711389eec2944cd94126722ee1d8b11f2b627b830d - languageName: node - linkType: hard - "@sentry/react-native@npm:5.35.0": version: 5.35.0 resolution: "@sentry/react-native@npm:5.35.0" @@ -6841,26 +6428,6 @@ __metadata: languageName: node linkType: hard -"@sentry/tracing@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/tracing@npm:5.30.0" - dependencies: - "@sentry/hub": "npm:5.30.0" - "@sentry/minimal": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/46830265bc54a3203d7d9f0d8d9f2f7d9d2c6a977e07ccdae317fa3ea29c388b904b3bef28f7a0ba9c074845d67feab63c6d3c0ddce9aeb275b6c966253fb415 - languageName: node - linkType: hard - -"@sentry/types@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/types@npm:5.30.0" - checksum: 10c0/99c6e55c0a82c8ca95be2e9dbb35f581b29e4ff7af74b23bc62b690de4e35febfa15868184a2303480ef86babd4fea5273cf3b5ddf4a27685b841a72f13a0c88 - languageName: node - linkType: hard - "@sentry/types@npm:7.119.0": version: 7.119.0 resolution: "@sentry/types@npm:7.119.0" @@ -6875,16 +6442,6 @@ __metadata: languageName: node linkType: hard -"@sentry/utils@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/utils@npm:5.30.0" - dependencies: - "@sentry/types": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/ca8eebfea7ac7db6d16f6c0b8a66ac62587df12a79ce9d0d8393f4d69880bb8d40d438f9810f7fb107a9880fe0d68bbf797b89cbafd113e89a0829eb06b205f8 - languageName: node - linkType: hard - "@sentry/utils@npm:7.119.0": version: 7.119.0 resolution: "@sentry/utils@npm:7.119.0" @@ -7666,13 +7223,6 @@ __metadata: languageName: node linkType: hard -"@types/lru-cache@npm:^5.1.0": - version: 5.1.1 - resolution: "@types/lru-cache@npm:5.1.1" - checksum: 10c0/1f17ec9b202c01a89337cc5528198a690be6b61a6688242125fbfb7fa17770e453e00e4685021abf5ae605860ca0722209faac5c254b780d0104730bb0b9e354 - languageName: node - linkType: hard - "@types/minimatch@npm:^3.0.3": version: 3.0.5 resolution: "@types/minimatch@npm:3.0.5" @@ -7854,16 +7404,6 @@ __metadata: languageName: node linkType: hard -"@types/readable-stream@npm:^2.3.13": - version: 2.3.15 - resolution: "@types/readable-stream@npm:2.3.15" - dependencies: - "@types/node": "npm:*" - safe-buffer: "npm:~5.1.1" - checksum: 10c0/789e0948a8fd2f2cbf880a0f8c95601ac2fd8782a5a8fe653f68fad7fc3a74f44e8559484e331c1ff5d5b00fa467bec97557bb683aa833a3b29a69506f7aee59 - languageName: node - linkType: hard - "@types/scheduler@npm:*": version: 0.23.0 resolution: "@types/scheduler@npm:0.23.0" @@ -9182,8 +8722,6 @@ __metadata: "@ledgerhq/hw-app-eth": "npm:6.39.0" "@ledgerhq/react-native-hw-transport-ble": "npm:6.33.4" "@metamask/eth-sig-util": "npm:7.0.2" - "@nomiclabs/hardhat-ethers": "npm:2.2.3" - "@nomiclabs/hardhat-waffle": "npm:2.0.6" "@notifee/react-native": "npm:7.8.2" "@rainbow-me/provider": "npm:0.1.1" "@rainbow-me/react-native-animated-number": "npm:0.0.2" @@ -9296,7 +8834,6 @@ __metadata: graphql-request: "npm:5.0.0" graphql-tag: "npm:2.11.0" gretchen: "npm:1.5.0" - hardhat: "npm:2.18.1" https-browserify: "npm:0.0.1" husky: "npm:8.0.1" i18n-js: "npm:3.8.0" @@ -9509,21 +9046,6 @@ __metadata: languageName: node linkType: hard -"abstract-level@npm:^1.0.0, abstract-level@npm:^1.0.2, abstract-level@npm:^1.0.3, abstract-level@npm:^1.0.4": - version: 1.0.4 - resolution: "abstract-level@npm:1.0.4" - dependencies: - buffer: "npm:^6.0.3" - catering: "npm:^2.1.0" - is-buffer: "npm:^2.0.5" - level-supports: "npm:^4.0.0" - level-transcoder: "npm:^1.0.1" - module-error: "npm:^1.0.1" - queue-microtask: "npm:^1.2.3" - checksum: 10c0/e89fad8924888b597ca84e6d003a424a670f225fd595ad1f4c2e2d38a5cea3c92877a44f5104cdede1717eb262dd6e7fbf7ef2375569c7395066521170b8d761 - languageName: node - linkType: hard - "abstract-leveldown@npm:2.6.1": version: 2.6.1 resolution: "abstract-leveldown@npm:2.6.1" @@ -9588,13 +9110,6 @@ __metadata: languageName: node linkType: hard -"adm-zip@npm:^0.4.16": - version: 0.4.16 - resolution: "adm-zip@npm:0.4.16" - checksum: 10c0/c56c6e138fd19006155fc716acae14d54e07c267ae19d78c8a8cdca04762bf20170a71a41aa8d8bad2f13b70d4f3e9a191009bafa5280e05a440ee506f871a55 - languageName: node - linkType: hard - "aes-js@npm:3.0.0": version: 3.0.0 resolution: "aes-js@npm:3.0.0" @@ -9699,7 +9214,7 @@ __metadata: languageName: node linkType: hard -"ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": +"ansi-colors@npm:^4.1.1": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 @@ -10784,13 +10299,6 @@ __metadata: languageName: node linkType: hard -"bigint-crypto-utils@npm:^3.0.23": - version: 3.3.0 - resolution: "bigint-crypto-utils@npm:3.3.0" - checksum: 10c0/7d06fa01d63e8e9513eee629fe8a426993276b1bdca5aefd0eb3188cee7026334d29e801ef6187a5bc6105ebf26e6e79e6fab544a7da769ccf55b913e66d2a14 - languageName: node - linkType: hard - "bignumber.js@npm:9.0.1": version: 9.0.1 resolution: "bignumber.js@npm:9.0.1" @@ -10992,18 +10500,6 @@ __metadata: languageName: node linkType: hard -"browser-level@npm:^1.0.1": - version: 1.0.1 - resolution: "browser-level@npm:1.0.1" - dependencies: - abstract-level: "npm:^1.0.2" - catering: "npm:^2.1.1" - module-error: "npm:^1.0.2" - run-parallel-limit: "npm:^1.1.0" - checksum: 10c0/10f874b05fb06092c4dc3f7b02c1bcff9b01b8eee2a7066837a10c4b0179d40dd9ecef03bfecb9acbd0b61abf67ccd250766ee18b48464cd9a4eeddda1b069b9 - languageName: node - linkType: hard - "browser-process-hrtime@npm:^1.0.0": version: 1.0.0 resolution: "browser-process-hrtime@npm:1.0.0" @@ -11011,13 +10507,6 @@ __metadata: languageName: node linkType: hard -"browser-stdout@npm:^1.3.1": - version: 1.3.1 - resolution: "browser-stdout@npm:1.3.1" - checksum: 10c0/c40e482fd82be872b6ea7b9f7591beafbf6f5ba522fe3dade98ba1573a1c29a11101564993e4eb44e5488be8f44510af072df9a9637c739217eb155ceb639205 - languageName: node - linkType: hard - "browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": version: 1.2.0 resolution: "browserify-aes@npm:1.2.0" @@ -11312,13 +10801,6 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e - languageName: node - linkType: hard - "cacache@npm:^16.1.0": version: 16.1.3 resolution: "cacache@npm:16.1.3" @@ -11478,20 +10960,6 @@ __metadata: languageName: node linkType: hard -"case@npm:^1.6.3": - version: 1.6.3 - resolution: "case@npm:1.6.3" - checksum: 10c0/43fcbb1dff1c4add94dd2bc98bd923d6616f10bff6959adf686d192c3db7d7ced35410761e1ac94cc4a1f5c41c86406ad79d390805539e421e8a77e553f67223 - languageName: node - linkType: hard - -"catering@npm:^2.1.0, catering@npm:^2.1.1": - version: 2.1.1 - resolution: "catering@npm:2.1.1" - checksum: 10c0/a69f946f82cba85509abcb399759ed4c39d2cc9e33ba35674f242130c1b3c56673da3c3e85804db6898dfd966c395aa128ba484b31c7b906cc2faca6a581e133 - languageName: node - linkType: hard - "centra@npm:^2.7.0": version: 2.7.0 resolution: "centra@npm:2.7.0" @@ -11597,7 +11065,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.4.0, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": +"chokidar@npm:^3.6.0": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -11731,20 +11199,6 @@ __metadata: languageName: node linkType: hard -"classic-level@npm:^1.2.0": - version: 1.4.1 - resolution: "classic-level@npm:1.4.1" - dependencies: - abstract-level: "npm:^1.0.2" - catering: "npm:^2.1.0" - module-error: "npm:^1.0.1" - napi-macros: "npm:^2.2.2" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.3.0" - checksum: 10c0/ba769e0b558ab466cef9468f7494b67d8f0139768630ba184d67b33201e67aad274718f3b1b78aaf3c5f5ab4cc526971edf82c7060741031bbad357952e7304d - languageName: node - linkType: hard - "classnames@npm:^2.2.6": version: 2.5.1 resolution: "classnames@npm:2.5.1" @@ -12074,13 +11528,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:3.0.2": - version: 3.0.2 - resolution: "commander@npm:3.0.2" - checksum: 10c0/8a279b4bacde68f03664086260ccb623122d2bdae6f380a41c9e06b646e830372c30a4b88261238550e0ad69d53f7af8883cb705d8237fdd22947e84913b149c - languageName: node - linkType: hard - "commander@npm:^10.0.1": version: 10.0.1 resolution: "commander@npm:10.0.1" @@ -12271,13 +11718,6 @@ __metadata: languageName: node linkType: hard -"cookie@npm:^0.4.1": - version: 0.4.2 - resolution: "cookie@npm:0.4.2" - checksum: 10c0/beab41fbd7c20175e3a2799ba948c1dcc71ef69f23fe14eeeff59fc09f50c517b0f77098db87dbb4c55da802f9d86ee86cdc1cd3efd87760341551838d53fca2 - languageName: node - linkType: hard - "copy-descriptor@npm:^0.1.0": version: 0.1.1 resolution: "copy-descriptor@npm:0.1.1" @@ -12824,7 +12264,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:~4.3.1, debug@npm:~4.3.2": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2": version: 4.3.5 resolution: "debug@npm:4.3.5" dependencies: @@ -13416,13 +12856,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.2.0": - version: 5.2.0 - resolution: "diff@npm:5.2.0" - checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 - languageName: node - linkType: hard - "diffie-hellman@npm:^5.0.0": version: 5.0.3 resolution: "diffie-hellman@npm:5.0.3" @@ -13836,7 +13269,7 @@ __metadata: languageName: node linkType: hard -"enquirer@npm:^2.3.0, enquirer@npm:^2.3.5, enquirer@npm:^2.3.6": +"enquirer@npm:^2.3.5, enquirer@npm:^2.3.6": version: 2.4.1 resolution: "enquirer@npm:2.4.1" dependencies: @@ -14556,7 +13989,7 @@ __metadata: languageName: node linkType: hard -"ethereum-cryptography@npm:0.1.3, ethereum-cryptography@npm:^0.1.3": +"ethereum-cryptography@npm:^0.1.3": version: 0.1.3 resolution: "ethereum-cryptography@npm:0.1.3" dependencies: @@ -14579,18 +14012,6 @@ __metadata: languageName: node linkType: hard -"ethereum-cryptography@npm:^1.0.3": - version: 1.2.0 - resolution: "ethereum-cryptography@npm:1.2.0" - dependencies: - "@noble/hashes": "npm:1.2.0" - "@noble/secp256k1": "npm:1.7.1" - "@scure/bip32": "npm:1.1.5" - "@scure/bip39": "npm:1.1.1" - checksum: 10c0/93e486a4a8b266dc2f274b69252e751345ef47551163371939b01231afb7b519133e2572b5975bb9cb4cc77ac54ccd36002c7c759a72488abeeaf216e4d55b46 - languageName: node - linkType: hard - "ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2": version: 2.2.1 resolution: "ethereum-cryptography@npm:2.2.1" @@ -14603,17 +14024,7 @@ __metadata: languageName: node linkType: hard -"ethereumjs-abi@npm:^0.6.8": - version: 0.6.8 - resolution: "ethereumjs-abi@npm:0.6.8" - dependencies: - bn.js: "npm:^4.11.8" - ethereumjs-util: "npm:^6.0.0" - checksum: 10c0/a7ff1917625e3c812cb3bca6c1231fc0ece282cc7d202d60545a9c31cd379fd751bfed5ff78dae4279cb1ba4d0e8967f9fdd4f135a334a38dbf04e7afd0c4bcf - languageName: node - linkType: hard - -"ethereumjs-util@npm:6.2.1, ethereumjs-util@npm:^6.0.0, ethereumjs-util@npm:^6.2.1": +"ethereumjs-util@npm:6.2.1": version: 6.2.1 resolution: "ethereumjs-util@npm:6.2.1" dependencies: @@ -14657,7 +14068,7 @@ __metadata: languageName: node linkType: hard -"ethers@npm:5.7.2, ethers@npm:^5.7.1": +"ethers@npm:5.7.2": version: 5.7.2 resolution: "ethers@npm:5.7.2" dependencies: @@ -15416,15 +14827,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^2.1.0": - version: 2.1.0 - resolution: "find-up@npm:2.1.0" - dependencies: - locate-path: "npm:^2.0.0" - checksum: 10c0/c080875c9fe28eb1962f35cbe83c683796a0321899f1eed31a37577800055539815de13d53495049697d3ba313013344f843bb9401dd337a1b832be5edfc6840 - languageName: node - linkType: hard - "find-up@npm:^3.0.0": version: 3.0.0 resolution: "find-up@npm:3.0.0" @@ -15539,7 +14941,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.12.1, follow-redirects@npm:^1.15.6": +"follow-redirects@npm:^1.15.6": version: 1.15.6 resolution: "follow-redirects@npm:1.15.6" peerDependenciesMeta: @@ -15636,20 +15038,6 @@ __metadata: languageName: node linkType: hard -"fp-ts@npm:1.19.3": - version: 1.19.3 - resolution: "fp-ts@npm:1.19.3" - checksum: 10c0/a016cfc98ad5e61564ab2d53a5379bbb8254642b66df13ced47e8c1d8d507abf4588d8bb43530198dfe1907211d8bae8f112cab52ba0ac6ab055da9168a6e260 - languageName: node - linkType: hard - -"fp-ts@npm:^1.0.0": - version: 1.19.5 - resolution: "fp-ts@npm:1.19.5" - checksum: 10c0/2a330fa1779561307740c26a7255fdffeb1ca2d0c7448d4dc094b477b772b0c8f7da1dfc88569b6f13f6958169b63b5df7361e514535b46b2e215bbf03a3722d - languageName: node - linkType: hard - "fragment-cache@npm:^0.2.1": version: 0.2.1 resolution: "fragment-cache@npm:0.2.1" @@ -15740,19 +15128,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^0.30.0": - version: 0.30.0 - resolution: "fs-extra@npm:0.30.0" - dependencies: - graceful-fs: "npm:^4.1.2" - jsonfile: "npm:^2.1.0" - klaw: "npm:^1.0.0" - path-is-absolute: "npm:^1.0.0" - rimraf: "npm:^2.2.8" - checksum: 10c0/24f3c966018c7bf436bf38ca3a126f1d95bf0f82598302195c4f0c8887767f045dae308f92c53a39cead74631dabbc30fcf1c71dbe96f1f0148f6de8edd114bc - languageName: node - linkType: hard - "fs-extra@npm:^11.0.0": version: 11.2.0 resolution: "fs-extra@npm:11.2.0" @@ -15764,17 +15139,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^7.0.1": - version: 7.0.1 - resolution: "fs-extra@npm:7.0.1" - dependencies: - graceful-fs: "npm:^4.1.2" - jsonfile: "npm:^4.0.0" - universalify: "npm:^0.1.0" - checksum: 10c0/1943bb2150007e3739921b8d13d4109abdc3cc481e53b97b7ea7f77eda1c3c642e27ae49eac3af074e3496ea02fde30f411ef410c760c70a38b92e656e5da784 - languageName: node - linkType: hard - "fs-extra@npm:^8.1.0, fs-extra@npm:~8.1.0": version: 8.1.0 resolution: "fs-extra@npm:8.1.0" @@ -16122,20 +15486,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:7.2.0": - version: 7.2.0 - resolution: "glob@npm:7.2.0" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.0.4" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10c0/478b40e38be5a3d514e64950e1e07e0ac120585add6a37c98d0ed24d72d9127d734d2a125786073c8deb687096e84ae82b641c441a869ada3a9cc91b68978632 - languageName: node - linkType: hard - "glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.4.2": version: 10.4.5 resolution: "glob@npm:10.4.5" @@ -16179,7 +15529,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.1, glob@npm:^8.0.3, glob@npm:^8.1.0": +"glob@npm:^8.0.1, glob@npm:^8.0.3": version: 8.1.0 resolution: "glob@npm:8.1.0" dependencies: @@ -16311,7 +15661,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -16421,72 +15771,6 @@ __metadata: languageName: node linkType: hard -"hardhat@npm:2.18.1": - version: 2.18.1 - resolution: "hardhat@npm:2.18.1" - dependencies: - "@ethersproject/abi": "npm:^5.1.2" - "@metamask/eth-sig-util": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-block": "npm:5.0.2" - "@nomicfoundation/ethereumjs-blockchain": "npm:7.0.2" - "@nomicfoundation/ethereumjs-common": "npm:4.0.2" - "@nomicfoundation/ethereumjs-evm": "npm:2.0.2" - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.2" - "@nomicfoundation/ethereumjs-statemanager": "npm:2.0.2" - "@nomicfoundation/ethereumjs-trie": "npm:6.0.2" - "@nomicfoundation/ethereumjs-tx": "npm:5.0.2" - "@nomicfoundation/ethereumjs-util": "npm:9.0.2" - "@nomicfoundation/ethereumjs-vm": "npm:7.0.2" - "@nomicfoundation/solidity-analyzer": "npm:^0.1.0" - "@sentry/node": "npm:^5.18.1" - "@types/bn.js": "npm:^5.1.0" - "@types/lru-cache": "npm:^5.1.0" - adm-zip: "npm:^0.4.16" - aggregate-error: "npm:^3.0.0" - ansi-escapes: "npm:^4.3.0" - chalk: "npm:^2.4.2" - chokidar: "npm:^3.4.0" - ci-info: "npm:^2.0.0" - debug: "npm:^4.1.1" - enquirer: "npm:^2.3.0" - env-paths: "npm:^2.2.0" - ethereum-cryptography: "npm:^1.0.3" - ethereumjs-abi: "npm:^0.6.8" - find-up: "npm:^2.1.0" - fp-ts: "npm:1.19.3" - fs-extra: "npm:^7.0.1" - glob: "npm:7.2.0" - immutable: "npm:^4.0.0-rc.12" - io-ts: "npm:1.10.4" - keccak: "npm:^3.0.2" - lodash: "npm:^4.17.11" - mnemonist: "npm:^0.38.0" - mocha: "npm:^10.0.0" - p-map: "npm:^4.0.0" - raw-body: "npm:^2.4.1" - resolve: "npm:1.17.0" - semver: "npm:^6.3.0" - solc: "npm:0.7.3" - source-map-support: "npm:^0.5.13" - stacktrace-parser: "npm:^0.1.10" - tsort: "npm:0.0.1" - undici: "npm:^5.14.0" - uuid: "npm:^8.3.2" - ws: "npm:^7.4.6" - peerDependencies: - ts-node: "*" - typescript: "*" - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - bin: - hardhat: internal/cli/bootstrap.js - checksum: 10c0/9d6186ea9f91fe63b46b6ae9009eea2bdf4edbf722c71becb7477f73a6824bf5b227b77107cc3dcc4915a3ce38c68706fd76a3537753923d9443016c8087af85 - languageName: node - linkType: hard - "has-ansi@npm:^2.0.0": version: 2.0.0 resolution: "has-ansi@npm:2.0.0" @@ -16642,7 +15926,7 @@ __metadata: languageName: node linkType: hard -"he@npm:1.2.0, he@npm:^1.2.0": +"he@npm:1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" bin: @@ -16882,7 +16166,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.17": +"iconv-lite@npm:^0.4.17": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: @@ -16992,13 +16276,6 @@ __metadata: languageName: node linkType: hard -"immutable@npm:^4.0.0-rc.12": - version: 4.3.6 - resolution: "immutable@npm:4.3.6" - checksum: 10c0/7d0952a768b4fadcee47230ed86dc9505a4517095eceaf5a47e65288571c42400c6e4a2ae21eca4eda957cb7bc50720213135b62cf6a181639111f8acae128c3 - languageName: node - linkType: hard - "import-fresh@npm:^2.0.0": version: 2.0.0 resolution: "import-fresh@npm:2.0.0" @@ -17169,15 +16446,6 @@ __metadata: languageName: node linkType: hard -"io-ts@npm:1.10.4": - version: 1.10.4 - resolution: "io-ts@npm:1.10.4" - dependencies: - fp-ts: "npm:^1.0.0" - checksum: 10c0/9370988a7e17fc23c194115808168ccd1ccf7b7ebe92c39c1cc2fd91c1dc641552a5428bb04fe28c01c826fa4f230e856eb4f7d27c774a1400af3fecf2936ab5 - languageName: node - linkType: hard - "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -17294,13 +16562,6 @@ __metadata: languageName: node linkType: hard -"is-buffer@npm:^2.0.5": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 10c0/e603f6fced83cf94c53399cff3bda1a9f08e391b872b64a73793b0928be3e5f047f2bcece230edb7632eaea2acdbfcb56c23b33d8a20c820023b230f1485679a - languageName: node - linkType: hard - "is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" @@ -18512,13 +17773,6 @@ __metadata: languageName: node linkType: hard -"js-sdsl@npm:^4.1.4": - version: 4.4.2 - resolution: "js-sdsl@npm:4.4.2" - checksum: 10c0/50707728fc31642164f4d83c8087f3750aaa99c450b008b19e236a1f190c9e48f9fc799615c341f9ca2c0803b15ab6f48d92a9cc3e6ffd20065cba7d7e742b92 - languageName: node - linkType: hard - "js-sha256@npm:^0.9.0": version: 0.9.0 resolution: "js-sha256@npm:0.9.0" @@ -18882,7 +18136,7 @@ __metadata: languageName: node linkType: hard -"keccak@npm:^3.0.0, keccak@npm:^3.0.2, keccak@npm:^3.0.3": +"keccak@npm:^3.0.0, keccak@npm:^3.0.3": version: 3.0.4 resolution: "keccak@npm:3.0.4" dependencies: @@ -18967,18 +18221,6 @@ __metadata: languageName: node linkType: hard -"klaw@npm:^1.0.0": - version: 1.3.1 - resolution: "klaw@npm:1.3.1" - dependencies: - graceful-fs: "npm:^4.1.9" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/da994768b02b3843cc994c99bad3cf1c8c67716beb4dd2834133c919e9e9ee788669fbe27d88ab0ad9a3991349c28280afccbde01c2318229b662dd7a05e4728 - languageName: node - linkType: hard - "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" @@ -19074,34 +18316,6 @@ __metadata: languageName: node linkType: hard -"level-supports@npm:^4.0.0": - version: 4.0.1 - resolution: "level-supports@npm:4.0.1" - checksum: 10c0/a94aa591786845d17c9c62ad075ae33e0fce5be714baa6e16305ed14e2d3638d09e724247fa3f63951e36de57ffd168d63e159e79d03944ee648054b8c7c1684 - languageName: node - linkType: hard - -"level-transcoder@npm:^1.0.1": - version: 1.0.1 - resolution: "level-transcoder@npm:1.0.1" - dependencies: - buffer: "npm:^6.0.3" - module-error: "npm:^1.0.1" - checksum: 10c0/25936330676325f22c5143aff5c7fe3f1db156db99f9efb07a2642045c2c6ee565fcbfccbadc0600b3abf8bbe595632cacc3dd334009214069d1857daa57987e - languageName: node - linkType: hard - -"level@npm:^8.0.0": - version: 8.0.1 - resolution: "level@npm:8.0.1" - dependencies: - abstract-level: "npm:^1.0.4" - browser-level: "npm:^1.0.1" - classic-level: "npm:^1.2.0" - checksum: 10c0/52e3c18a3372f22b7c0c96a998a24099454f51952ba2b8f25eabc72b1f7bbc15a3ab480c92c94d3c931be370be5a235b804b16e565b73b22bea52cca4029a625 - languageName: node - linkType: hard - "levelup@npm:^0.18.2": version: 0.18.6 resolution: "levelup@npm:0.18.6" @@ -19363,16 +18577,6 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^2.0.0": - version: 2.0.0 - resolution: "locate-path@npm:2.0.0" - dependencies: - p-locate: "npm:^2.0.0" - path-exists: "npm:^3.0.0" - checksum: 10c0/24efa0e589be6aa3c469b502f795126b26ab97afa378846cb508174211515633b770aa0ba610cab113caedab8d2a4902b061a08aaed5297c12ab6f5be4df0133 - languageName: node - linkType: hard - "locate-path@npm:^3.0.0": version: 3.0.0 resolution: "locate-path@npm:3.0.0" @@ -19558,13 +18762,6 @@ __metadata: languageName: node linkType: hard -"lru_map@npm:^0.3.3": - version: 0.3.3 - resolution: "lru_map@npm:0.3.3" - checksum: 10c0/d861f14a142a4a74ebf8d3ad57f2e768a5b820db4100ae53eed1a64eb6350912332e6ebc87cb7415ad6d0cd8f3ce6d20beab9a5e6042ccb5996ea0067a220448 - languageName: node - linkType: hard - "ltgt@npm:^2.1.3": version: 2.2.1 resolution: "ltgt@npm:2.2.1" @@ -19757,13 +18954,6 @@ __metadata: languageName: node linkType: hard -"mcl-wasm@npm:^0.7.1": - version: 0.7.9 - resolution: "mcl-wasm@npm:0.7.9" - checksum: 10c0/12acd074621741ac61f4b3d36d72da6317320b5db02734abaaf77c0c7886ced14926de2f637ca9ab70a458419200d7edb8e0a4f9f02c85feb8d5bbbe430e60ad - languageName: node - linkType: hard - "md5-file@npm:^3.2.3": version: 3.2.3 resolution: "md5-file@npm:3.2.3" @@ -19860,24 +19050,6 @@ __metadata: languageName: node linkType: hard -"memory-level@npm:^1.0.0": - version: 1.0.0 - resolution: "memory-level@npm:1.0.0" - dependencies: - abstract-level: "npm:^1.0.0" - functional-red-black-tree: "npm:^1.0.1" - module-error: "npm:^1.0.1" - checksum: 10c0/b926b6ddc43065282c240cd7c0bf44abcfe43d556f6bb3d43d21f5f514b0095abcd8f9ba26b31ffdefa4ce4931afb937a1eaea1f15c45e76d7061086dbcf9148 - languageName: node - linkType: hard - -"memorystream@npm:^0.3.1": - version: 0.3.1 - resolution: "memorystream@npm:0.3.1" - checksum: 10c0/4bd164657711d9747ff5edb0508b2944414da3464b7fe21ac5c67cf35bba975c4b446a0124bd0f9a8be54cfc18faf92e92bd77563a20328b1ccf2ff04e9f39b9 - languageName: node - linkType: hard - "merge-deep@npm:^3.0.2": version: 3.0.3 resolution: "merge-deep@npm:3.0.3" @@ -20312,7 +19484,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0, minimatch@npm:^5.1.6": +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": version: 5.1.6 resolution: "minimatch@npm:5.1.6" dependencies: @@ -20550,46 +19722,6 @@ __metadata: languageName: node linkType: hard -"mnemonist@npm:^0.38.0": - version: 0.38.5 - resolution: "mnemonist@npm:0.38.5" - dependencies: - obliterator: "npm:^2.0.0" - checksum: 10c0/a73a2718f88cd12c3b108ecc530619a1b0f2783d479c7f98e7367375102cc3a28811bab384e17eb731553dc8d7ee9d60283d694a9f676af5f306104e75027d4f - languageName: node - linkType: hard - -"mocha@npm:^10.0.0": - version: 10.6.0 - resolution: "mocha@npm:10.6.0" - dependencies: - ansi-colors: "npm:^4.1.3" - browser-stdout: "npm:^1.3.1" - chokidar: "npm:^3.5.3" - debug: "npm:^4.3.5" - diff: "npm:^5.2.0" - escape-string-regexp: "npm:^4.0.0" - find-up: "npm:^5.0.0" - glob: "npm:^8.1.0" - he: "npm:^1.2.0" - js-yaml: "npm:^4.1.0" - log-symbols: "npm:^4.1.0" - minimatch: "npm:^5.1.6" - ms: "npm:^2.1.3" - serialize-javascript: "npm:^6.0.2" - strip-json-comments: "npm:^3.1.1" - supports-color: "npm:^8.1.1" - workerpool: "npm:^6.5.1" - yargs: "npm:^16.2.0" - yargs-parser: "npm:^20.2.9" - yargs-unparser: "npm:^2.0.0" - bin: - _mocha: bin/_mocha - mocha: bin/mocha.js - checksum: 10c0/30b2f810014af6b5701563c6ee6ee78708dcfefc1551801c70018682bc6ca9327a6a27e93c101905a355d130a1ffe1f990975d51459c289bfcb72726ea5f7a50 - languageName: node - linkType: hard - "module-definition@npm:^3.0.0, module-definition@npm:^3.3.0": version: 3.4.0 resolution: "module-definition@npm:3.4.0" @@ -20602,13 +19734,6 @@ __metadata: languageName: node linkType: hard -"module-error@npm:^1.0.1, module-error@npm:^1.0.2": - version: 1.0.2 - resolution: "module-error@npm:1.0.2" - checksum: 10c0/584a43a1bb2720c6c6c771e257a308af4f042a17c17b1472a2c855130a1ad93ba516a82ae7ac2ce2d03062e521cc53c03ec0ce153795d895312d7747fb3bb99b - languageName: node - linkType: hard - "module-lookup-amd@npm:^6.1.0": version: 6.2.0 resolution: "module-lookup-amd@npm:6.2.0" @@ -20664,7 +19789,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -20857,13 +19982,6 @@ __metadata: languageName: node linkType: hard -"napi-macros@npm:^2.2.2": - version: 2.2.2 - resolution: "napi-macros@npm:2.2.2" - checksum: 10c0/cc85daaf82a4f585d30561047cef0f3e702be769b5cf2ffadc6242bc5a1033f6b8269012e54178baf66f022bd18aa9ebb619f1b530cc19c1f9b96f9689affd50 - languageName: node - linkType: hard - "napi-wasm@npm:^1.1.0": version: 1.1.0 resolution: "napi-wasm@npm:1.1.0" @@ -21043,7 +20161,7 @@ __metadata: languageName: node linkType: hard -"node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.3.0": +"node-gyp-build@npm:^4.2.0": version: 4.8.1 resolution: "node-gyp-build@npm:4.8.1" bin: @@ -21453,13 +20571,6 @@ __metadata: languageName: node linkType: hard -"obliterator@npm:^2.0.0": - version: 2.0.4 - resolution: "obliterator@npm:2.0.4" - checksum: 10c0/ff2c10d4de7d62cd1d588b4d18dfc42f246c9e3a259f60d5716f7f88e5b3a3f79856b3207db96ec9a836a01d0958a21c15afa62a3f4e73a1e0b75f2c2f6bab40 - languageName: node - linkType: hard - "octal@npm:^1.0.0": version: 1.0.0 resolution: "octal@npm:1.0.0" @@ -21733,15 +20844,6 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^1.1.0": - version: 1.3.0 - resolution: "p-limit@npm:1.3.0" - dependencies: - p-try: "npm:^1.0.0" - checksum: 10c0/5c1b1d53d180b2c7501efb04b7c817448e10efe1ba46f4783f8951994d5027e4cd88f36ad79af50546682594c4ebd11702ac4b9364c47f8074890e2acad0edee - languageName: node - linkType: hard - "p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": version: 2.3.0 resolution: "p-limit@npm:2.3.0" @@ -21760,15 +20862,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^2.0.0": - version: 2.0.0 - resolution: "p-locate@npm:2.0.0" - dependencies: - p-limit: "npm:^1.1.0" - checksum: 10c0/82da4be88fb02fd29175e66021610c881938d3cc97c813c71c1a605fac05617d57fd5d3b337494a6106c0edb2a37c860241430851411f1b265108cead34aee67 - languageName: node - linkType: hard - "p-locate@npm:^3.0.0": version: 3.0.0 resolution: "p-locate@npm:3.0.0" @@ -21812,13 +20905,6 @@ __metadata: languageName: node linkType: hard -"p-try@npm:^1.0.0": - version: 1.0.0 - resolution: "p-try@npm:1.0.0" - checksum: 10c0/757ba31de5819502b80c447826fac8be5f16d3cb4fbf9bc8bc4971dba0682e84ac33e4b24176ca7058c69e29f64f34d8d9e9b08e873b7b7bb0aa89d620fa224a - languageName: node - linkType: hard - "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -22074,7 +21160,7 @@ __metadata: languageName: node linkType: hard -"path-parse@npm:^1.0.5, path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": +"path-parse@npm:^1.0.5, path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 @@ -22889,7 +21975,7 @@ __metadata: languageName: node linkType: hard -"queue-microtask@npm:^1.2.2, queue-microtask@npm:^1.2.3": +"queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 @@ -22952,18 +22038,6 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:^2.4.1": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" - dependencies: - bytes: "npm:3.1.2" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - unpipe: "npm:1.0.0" - checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 - languageName: node - linkType: hard - "rc@npm:^1.2.7, rc@npm:~1.2.7": version: 1.2.8 resolution: "rc@npm:1.2.8" @@ -24492,7 +23566,7 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"require-from-string@npm:^2.0.0, require-from-string@npm:^2.0.2": +"require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 @@ -24634,15 +23708,6 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"resolve@npm:1.17.0": - version: 1.17.0 - resolution: "resolve@npm:1.17.0" - dependencies: - path-parse: "npm:^1.0.6" - checksum: 10c0/4e6c76cc1a7b08bff637b092ce035d7901465067915605bc5a23ac0c10fe42ec205fc209d5d5f7a5f27f37ce71d687def7f656bbb003631cd46a8374f55ec73d - languageName: node - linkType: hard - "resolve@npm:1.22.8, resolve@npm:^1.11.1, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.2, resolve@npm:^1.22.3, resolve@npm:^1.22.4, resolve@npm:^1.22.8": version: 1.22.8 resolution: "resolve@npm:1.22.8" @@ -24678,15 +23743,6 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A1.17.0#optional!builtin": - version: 1.17.0 - resolution: "resolve@patch:resolve@npm%3A1.17.0#optional!builtin::version=1.17.0&hash=c3c19d" - dependencies: - path-parse: "npm:^1.0.6" - checksum: 10c0/e072e52be3c3dbfd086761115db4a5136753e7aefc0e665e66e7307ddcd9d6b740274516055c74aee44921625e95993f03570450aa310b8d73b1c9daa056c4cd - languageName: node - linkType: hard - "resolve@patch:resolve@npm%3A1.22.8#optional!builtin, resolve@patch:resolve@npm%3A^1.11.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.3#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" @@ -24871,15 +23927,6 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"run-parallel-limit@npm:^1.1.0": - version: 1.1.0 - resolution: "run-parallel-limit@npm:1.1.0" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 10c0/9c78eb77e788d0ed803a7e80921412f6f6accfb2006de8c21699d9ebf7696df9cefaa313fe14d6169a3fc9f564b34fe91bfd9948cc3a58e2d24136a2390523ae - languageName: node - linkType: hard - "run-parallel@npm:^1.1.2, run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -24889,13 +23936,6 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"rustbn.js@npm:~0.2.0": - version: 0.2.0 - resolution: "rustbn.js@npm:0.2.0" - checksum: 10c0/be2d55d4a53465cfd5c7900153cfae54c904f0941acd30191009cf473cacbfcf45082ffd8dc473a354c8e3dcfe2c2bdf5d7ea9cc9b188d892b4aa8d012b94701 - languageName: node - linkType: hard - "rx@npm:^4.1.0": version: 4.1.0 resolution: "rx@npm:4.1.0" @@ -25231,7 +24271,7 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.1, serialize-javascript@npm:^6.0.2": +"serialize-javascript@npm:^6.0.1": version: 6.0.2 resolution: "serialize-javascript@npm:6.0.2" dependencies: @@ -25677,25 +24717,6 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"solc@npm:0.7.3": - version: 0.7.3 - resolution: "solc@npm:0.7.3" - dependencies: - command-exists: "npm:^1.2.8" - commander: "npm:3.0.2" - follow-redirects: "npm:^1.12.1" - fs-extra: "npm:^0.30.0" - js-sha3: "npm:0.8.0" - memorystream: "npm:^0.3.1" - require-from-string: "npm:^2.0.0" - semver: "npm:^5.5.0" - tmp: "npm:0.0.33" - bin: - solcjs: solcjs - checksum: 10c0/28405adfba1f55603dc5b674630383bfbdbfab2d36deba2ff0a90c46cbc346bcabf0ed6175e12ae3c0b751ef082d0405ab42dcc24f88603a446e097a925d7425 - languageName: node - linkType: hard - "sonic-boom@npm:^2.2.1": version: 2.8.0 resolution: "sonic-boom@npm:2.8.0" @@ -25761,7 +24782,7 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"source-map-support@npm:^0.5.13, source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.20, source-map-support@npm:~0.5.21": +"source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.20, source-map-support@npm:~0.5.21": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -26423,7 +25444,7 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": +"supports-color@npm:^8.0.0": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -26857,7 +25878,7 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"tmp@npm:0.0.33, tmp@npm:^0.0.33": +"tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" dependencies: @@ -27130,7 +26151,7 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"tslib@npm:1.14.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": +"tslib@npm:1.14.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 @@ -27144,13 +26165,6 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"tsort@npm:0.0.1": - version: 0.0.1 - resolution: "tsort@npm:0.0.1" - checksum: 10c0/ea3d034ab341dd9282c972710496e98539408d77f1cd476ad0551a9731f40586b65ab917b39745f902bf32037a3161eee3821405f6ab15bcd2ce4cc0a52d1da6 - languageName: node - linkType: hard - "tsutils@npm:3, tsutils@npm:^3.17.1, tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -27501,15 +26515,6 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"undici@npm:^5.14.0": - version: 5.28.4 - resolution: "undici@npm:5.28.4" - dependencies: - "@fastify/busboy": "npm:^2.0.0" - checksum: 10c0/08d0f2596553aa0a54ca6e8e9c7f45aef7d042c60918564e3a142d449eda165a80196f6ef19ea2ef2e6446959e293095d8e40af1236f0d67223b06afac5ecad7 - languageName: node - linkType: hard - "unenv@npm:^1.9.0": version: 1.10.0 resolution: "unenv@npm:1.10.0" @@ -27648,7 +26653,7 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": +"unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c @@ -28499,13 +27504,6 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"workerpool@npm:^6.5.1": - version: 6.5.1 - resolution: "workerpool@npm:6.5.1" - checksum: 10c0/58e8e969782292cb3a7bfba823f1179a7615250a0cefb4841d5166234db1880a3d0fe83a31dd8d648329ec92c2d0cd1890ad9ec9e53674bb36ca43e9753cdeac - languageName: node - linkType: hard - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -28657,7 +27655,7 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"ws@npm:^7, ws@npm:^7.0.0, ws@npm:^7.4.6, ws@npm:^7.5.1": +"ws@npm:^7, ws@npm:^7.0.0, ws@npm:^7.5.1": version: 7.5.10 resolution: "ws@npm:7.5.10" peerDependencies: @@ -28882,7 +27880,7 @@ react-native-safe-area-view@rainbow-me/react-native-safe-area-view: languageName: node linkType: hard -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": +"yargs-parser@npm:^20.2.2": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72

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 RC8q!Y002ovPDHLkV1h}u>JtC} literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravityBadgeDark.imageset/gravityBadgeDark@2x.png b/ios/Images.xcassets/badges/gravityBadgeDark.imageset/gravityBadgeDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9aadd9549ae0fa920756508201ad1d3dab5e9f48 GIT binary patch literal 6941 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravityBadgeLarge.imageset/gravityBadgeLarge@2x.png b/ios/Images.xcassets/badges/gravityBadgeLarge.imageset/gravityBadgeLarge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..51e00178021ceefb821bad4c7fbf9e33e02f88ec GIT binary patch literal 16175 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 r+FN*2!yEB^;7Enj?r`%m@hOU3WY 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 literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/Contents.json b/ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/Contents.json new file mode 100644 index 00000000000..0d735b28d3a --- /dev/null +++ b/ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "gravityBadgeLargeDark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gravityBadgeLargeDark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gravityBadgeLargeDark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/gravityBadgeLargeDark.png b/ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/gravityBadgeLargeDark.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9ee2fcbaed37a69824f53b59d073ca981dc47d GIT binary patch literal 5169 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 AX8-^I literal 0 HcmV?d00001 diff --git a/ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/gravityBadgeLargeDark@3x.png b/ios/Images.xcassets/badges/gravityBadgeLargeDark.imageset/gravityBadgeLargeDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..362d6f3d7723f82eaab79c7fb4872973befaae25 GIT binary patch literal 25219 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