Skip to content

Commit

Permalink
chore: copy used code from @celo/phone-utils into the repo and remove…
Browse files Browse the repository at this point in the history
… @celo/phone-utils dependency (#5852)

### Description
Copy used functions/types from
[@celo/phone-utils](https://www.npmjs.com/package/@celo/phone-utils) and
also depending functions/types:
- E164Number
- E164PhoneNumberType
- isE164NumberStrict
- Countries
- LocalizedCountry
- getCountryEmoji
- getRegionCode
- getRegionCodeFromCountryCode
- getDisplayNumberInternational
- getPhoneHash from `@celo/phone-utils/lib/getPhoneHash`
- validateInput
- parsePhoneNumber

PhoneNumberUtils was not copied as it is just an object exporting some
functions from the list above and the only function used from it was
`getPhoneHash` so it was changed to use the function directly.

For `getPhoneHash` a legacy implementation of `getIdentificationHash`
dependency was used:

https://github.com/celo-org/developer-tooling/blob/8572a0f978d1aa01a36775ef4be48c3eafdbb204/packages/sdk/base/src/identifier.ts
Latest version of implementation:

https://github.com/celo-org/social-connect/blob/main/packages/odis-identifiers/src/identifier.ts
P.S. The only difference between the two is `IdentifierPrefix` having an
extra `GITHUB` enum value in the latest version.

#### New dependencies:
-
[google-libphonenumber](https://github.com/ruimarinho/google-libphonenumber)
- [io-ts](https://github.com/gcanti/io-ts)
- [fp-ts](https://github.com/gcanti/fp-ts)

### Test plan
All tests pass with the new copied functions.

### Related issues

- Relates to RET-1186

### Backwards compatibility

<!-- Brief explanation of why these changes are/are not backwards
compatible. -->

### Network scalability

If a new NetworkId and/or Network are added in the future, the changes
in this PR will:

- [x] Continue to work without code changes, OR trigger a compilation
error (guaranteeing we find it when a new network is added)
  • Loading branch information
sviderock authored Aug 29, 2024
1 parent cd635fe commit 172df1e
Show file tree
Hide file tree
Showing 43 changed files with 1,447 additions and 57 deletions.
1 change: 1 addition & 0 deletions knip.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const config: KnipConfig = {
'husky',
'react-native-randombytes', // not sure we need this; only referenced in iOS Podfile.lock
],
ignore: ['src/utils/inputValidation.ts', 'src/utils/country.json'],
}

export default config
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@
"@celo/contractkit": "^3.2.0",
"@celo/cryptographic-utils": "^3.2.0",
"@celo/identity": "^3.2.0",
"@celo/phone-utils": "^3.2.0",
"@celo/utils": "^3.2.0",
"@celo/wallet-rpc": "^3.2.0",
"@coinbase/cbpay-js": "^2.2.1",
Expand Down Expand Up @@ -130,6 +129,7 @@
"fp-ts": "2.16.9",
"futoin-hkdf": "^1.5.3",
"fuzzysort": "^2.0.4",
"google-libphonenumber": "^3.2.38",
"i18next": "^23.14.0",
"ibantools": "^4.5.1",
"intl-pluralrules": "^2.0.1",
Expand Down Expand Up @@ -202,7 +202,8 @@
"victory-native": "^36.9.2",
"viem": "^2.20.1",
"vm-browserify": "^1.1.2",
"web3": "1.10.4"
"web3": "1.10.4",
"web3-utils": "^4.3.1"
},
"devDependencies": {
"@actions/github": "^5.1.1",
Expand All @@ -219,6 +220,7 @@
"@sentry/types": "^7.111.0",
"@testing-library/jest-native": "^5.4.3",
"@testing-library/react-native": "^12.4.5",
"@types/country-data": "^0.0.5",
"@types/crypto-js": "^4.1.1",
"@types/fast-levenshtein": "^0.0.2",
"@types/fs-extra": "^9.0.13",
Expand Down
2 changes: 1 addition & 1 deletion src/account/reducer.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { isE164NumberStrict } from '@celo/phone-utils'
import { Actions, ActionTypes } from 'src/account/actions'
import { Actions as AppActions, ActionTypes as AppActionTypes } from 'src/app/actions'
import { DEV_SETTINGS_ACTIVE_INITIALLY } from 'src/config'
import { deleteKeylessBackupCompleted, keylessBackupCompleted } from 'src/keylessBackup/slice'
import { getRehydratePayload, REHYDRATE, RehydrateAction } from 'src/redux/persist-helper'
import Logger from 'src/utils/Logger'
import { isE164NumberStrict } from 'src/utils/phoneNumbers'
import { Actions as Web3Actions, ActionTypes as Web3ActionTypes } from 'src/web3/actions'

interface State {
Expand Down
2 changes: 1 addition & 1 deletion src/account/saga.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { parsePhoneNumber } from '@celo/phone-utils'
import { UnlockableWallet } from '@celo/wallet-base'
import firebase from '@react-native-firebase/app'
import { Platform } from 'react-native'
Expand Down Expand Up @@ -39,6 +38,7 @@ import { patchUpdateStatsigUser } from 'src/statsig'
import { restartApp } from 'src/utils/AppRestart'
import Logger from 'src/utils/Logger'
import { ensureError } from 'src/utils/ensureError'
import { parsePhoneNumber } from 'src/utils/phoneNumbers'
import { safely } from 'src/utils/safely'
import { clearStoredAccounts } from 'src/web3/KeychainAccounts'
import { getWallet } from 'src/web3/contracts'
Expand Down
2 changes: 1 addition & 1 deletion src/account/selectors.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Countries } from '@celo/phone-utils'
import * as RNLocalize from 'react-native-localize'
import { createSelector } from 'reselect'
import i18n from 'src/i18n'
import { RecipientType } from 'src/recipients/recipient'
import { RootState } from 'src/redux/reducers'
import { Countries } from 'src/utils/Countries'
import { getCountryFeatures } from 'src/utils/countryFeatures'
import { currentAccountSelector } from 'src/web3/selectors'

Expand Down
2 changes: 1 addition & 1 deletion src/account/utils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { parsePhoneNumber } from '@celo/phone-utils'
import { parsePhoneNumber } from 'src/utils/phoneNumbers'

const ADDRESS_LENGTH = 42 // TODO(ACT-1173): see if this can be replaced with a viem helper

Expand Down
9 changes: 6 additions & 3 deletions src/analytics/selectors.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { getRegionCodeFromCountryCode } from '@celo/phone-utils'
import BigNumber from 'bignumber.js'
import { camelCase } from 'lodash'
import DeviceInfo from 'react-native-device-info'
import * as RNLocalize from 'react-native-localize'
import { createSelector } from 'reselect'
import { defaultCountryCodeSelector, pincodeTypeSelector } from 'src/account/selectors'
import {
backupCompletedSelector,
defaultCountryCodeSelector,
pincodeTypeSelector,
} from 'src/account/selectors'
import { phoneVerificationStatusSelector } from 'src/app/selectors'
import { backupCompletedSelector } from 'src/account/selectors'
import { currentLanguageSelector } from 'src/i18n/selectors'
import { getLocalCurrencyCode } from 'src/localCurrency/selectors'
import { userLocationDataSelector } from 'src/networkInfo/selectors'
Expand All @@ -21,6 +23,7 @@ import { RootState } from 'src/redux/reducers'
import { tokensListSelector, tokensWithTokenBalanceSelector } from 'src/tokens/selectors'
import { sortByUsdBalance } from 'src/tokens/utils'
import { NetworkId } from 'src/transactions/types'
import { getRegionCodeFromCountryCode } from 'src/utils/phoneNumbers'
import { mtwAddressSelector, rawWalletAddressSelector } from 'src/web3/selectors'

function toPascalCase(str: string) {
Expand Down
6 changes: 3 additions & 3 deletions src/app/saga.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import * as DEK from '@celo/cryptographic-utils/lib/dataEncryptionKey'
import getPhoneHash from '@celo/phone-utils/lib/getPhoneHash'
import { FetchMock } from 'jest-fetch-mock/types'
import { BIOMETRY_TYPE } from 'react-native-keychain'
import * as RNLocalize from 'react-native-localize'
Expand All @@ -8,9 +7,9 @@ import * as matchers from 'redux-saga-test-plan/matchers'
import { EffectProviders, StaticProvider } from 'redux-saga-test-plan/providers'
import { call, select } from 'redux-saga/effects'
import { e164NumberSelector } from 'src/account/selectors'
import AppAnalytics from 'src/analytics/AppAnalytics'
import { AppEvents, InviteEvents } from 'src/analytics/Events'
import { HooksEnablePreviewOrigin, WalletConnectPairingOrigin } from 'src/analytics/types'
import AppAnalytics from 'src/analytics/AppAnalytics'
import {
appLock,
inAppReviewRequested,
Expand All @@ -37,6 +36,7 @@ import {
sentryNetworkErrorsSelector,
shouldRunVerificationMigrationSelector,
} from 'src/app/selectors'
import { DEEPLINK_PREFIX } from 'src/config'
import { activeDappSelector } from 'src/dapps/selectors'
import { FiatExchangeFlow } from 'src/fiatExchanges/utils'
import { initI18n } from 'src/i18n'
Expand All @@ -56,6 +56,7 @@ import { handlePaymentDeeplink } from 'src/send/utils'
import { initializeSentry } from 'src/sentry/Sentry'
import { getDynamicConfigParams, getFeatureGate, patchUpdateStatsigUser } from 'src/statsig'
import { NetworkId } from 'src/transactions/types'
import getPhoneHash from 'src/utils/getPhoneHash'
import { navigateToURI } from 'src/utils/linking'
import Logger from 'src/utils/Logger'
import { ONE_DAY_IN_MILLIS } from 'src/utils/time'
Expand All @@ -71,7 +72,6 @@ import {
} from 'src/web3/selectors'
import { createMockStore } from 'test/utils'
import { mockAccount, mockTokenBalances } from 'test/values'
import { DEEPLINK_PREFIX } from 'src/config'

jest.mock('src/analytics/AppAnalytics')
jest.mock('src/sentry/Sentry')
Expand Down
2 changes: 1 addition & 1 deletion src/app/saga.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { compressedPubKey } from '@celo/cryptographic-utils'
import getPhoneHash from '@celo/phone-utils/lib/getPhoneHash'
import { hexToBuffer } from '@celo/utils/lib/address'
import locales from 'locales'
import { AppState, Platform } from 'react-native'
Expand Down Expand Up @@ -69,6 +68,7 @@ import { swapSuccess } from 'src/swap/slice'
import { NetworkId } from 'src/transactions/types'
import Logger from 'src/utils/Logger'
import { ensureError } from 'src/utils/ensureError'
import getPhoneHash from 'src/utils/getPhoneHash'
import { isDeepLink, navigateToURI } from 'src/utils/linking'
import { safely } from 'src/utils/safely'
import { ONE_DAY_IN_MILLIS } from 'src/utils/time'
Expand Down
4 changes: 2 additions & 2 deletions src/components/InviteOptionsModal.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import getPhoneHash from '@celo/phone-utils/lib/getPhoneHash'
import * as React from 'react'
import { useTranslation } from 'react-i18next'
import { Share } from 'react-native'
import { InviteEvents } from 'src/analytics/Events'
import AppAnalytics from 'src/analytics/AppAnalytics'
import { InviteEvents } from 'src/analytics/Events'
import { INVITE_REWARDS_NFTS_LEARN_MORE, INVITE_REWARDS_STABLETOKEN_LEARN_MORE } from 'src/config'
import InviteModal from 'src/invite/InviteModal'
import { useShareUrl } from 'src/invite/hooks'
import { Recipient, getDisplayName } from 'src/recipients/recipient'
import { useSelector } from 'src/redux/hooks'
import { inviteRewardsActiveSelector, inviteRewardsTypeSelector } from 'src/send/selectors'
import { InviteRewardsType } from 'src/send/types'
import getPhoneHash from 'src/utils/getPhoneHash'

interface Props {
recipient: Recipient
Expand Down
2 changes: 1 addition & 1 deletion src/components/PhoneNumberInput.test.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Countries } from '@celo/phone-utils'
import { act, fireEvent, render } from '@testing-library/react-native'
import * as React from 'react'
import { Platform } from 'react-native'
import SmsRetriever from 'react-native-sms-retriever'
import PhoneNumberInput from 'src/components/PhoneNumberInput'
import { Countries } from 'src/utils/Countries'

jest.mock('react-native-sms-retriever', () => {
return {
Expand Down
3 changes: 2 additions & 1 deletion src/components/PhoneNumberInput.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { LocalizedCountry, parsePhoneNumber } from '@celo/phone-utils'
import { ValidatorKind } from '@celo/utils/lib/inputValidation'
import React, { useEffect, useRef } from 'react'
import { Platform, StyleProp, StyleSheet, Text, View, ViewStyle } from 'react-native'
Expand All @@ -10,6 +9,8 @@ import Touchable from 'src/components/Touchable'
import ValidatedTextInput from 'src/components/ValidatedTextInput'
import colors from 'src/styles/colors'
import { Spacing } from 'src/styles/styles'
import { type LocalizedCountry } from 'src/utils/Countries'
import { parsePhoneNumber } from 'src/utils/phoneNumbers'

const TAG = 'PhoneNumberInput'

Expand Down
3 changes: 2 additions & 1 deletion src/components/PhoneNumberWithFlag.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { getCountryEmoji, parsePhoneNumber } from '@celo/phone-utils'
import * as React from 'react'
import { StyleSheet, Text, View } from 'react-native'
import Colors from 'src/styles/colors'
import { typeScale } from 'src/styles/fonts'
import { getCountryEmoji } from 'src/utils/getCountryEmoji'
import { parsePhoneNumber } from 'src/utils/phoneNumbers'

interface Props {
e164PhoneNumber: string
Expand Down
2 changes: 1 addition & 1 deletion src/components/ValidatedTextInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
* TextInput with input validation, interchangeable with `./TextInput.tsx`
*/

import { validateInput } from '@celo/phone-utils'
import { ValidatorKind } from '@celo/utils/lib/inputValidation'
import * as React from 'react'
import { KeyboardType } from 'react-native'
import TextInput, { TextInputProps } from 'src/components/TextInput'
import { validateInput } from 'src/utils/inputValidation'

interface OwnProps {
InputComponent: React.ComponentType<TextInputProps>
Expand Down
2 changes: 1 addition & 1 deletion src/identity/actions.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { normalizeAddressWith0x } from '@celo/base'
import { E164Number } from '@celo/phone-utils'
import {
AddressToDisplayNameType,
AddressToE164NumberType,
Expand All @@ -10,6 +9,7 @@ import {
} from 'src/identity/reducer'
import { ImportContactsStatus } from 'src/identity/types'
import { Recipient } from 'src/recipients/recipient'
import { type E164Number } from 'src/utils/E164Number'

export enum Actions {
SET_SEEN_VERIFICATION_NUX = 'IDENTITY/SET_SEEN_VERIFICATION_NUX',
Expand Down
2 changes: 1 addition & 1 deletion src/identity/commentEncryption.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import {
encryptComment as encryptCommentRaw,
} from '@celo/cryptographic-utils'
import { PhoneNumberHashDetails } from '@celo/identity/lib/odis/phone-number-identifier'
import getPhoneHash from '@celo/phone-utils/lib/getPhoneHash'
import { eqAddress, hexToBuffer } from '@celo/utils/lib/address'
import { memoize, values } from 'lodash'
import { MAX_COMMENT_LENGTH } from 'src/config'
Expand All @@ -29,6 +28,7 @@ import {
import { e164NumberToAddressSelector, e164NumberToSaltSelector } from 'src/identity/selectors'
import { UpdateTransactionsAction } from 'src/transactions/actions'
import { Network, TokenTransaction, TokenTransactionTypeV2 } from 'src/transactions/types'
import getPhoneHash from 'src/utils/getPhoneHash'
import Logger from 'src/utils/Logger'
import { getContractKit } from 'src/web3/contracts'
import { doFetchDataEncryptionKey } from 'src/web3/dataEncryptionKey'
Expand Down
4 changes: 2 additions & 2 deletions src/identity/privateHashing.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { PhoneNumberHashDetails } from '@celo/identity/lib/odis/phone-number-identifier'
import { PhoneNumberUtils } from '@celo/phone-utils'
import { e164NumberSelector } from 'src/account/selectors'
import { E164NumberToSaltType } from 'src/identity/reducer'
import { e164NumberToSaltSelector } from 'src/identity/selectors'
import getPhoneHash from 'src/utils/getPhoneHash'
import { select } from 'typed-redux-saga'

// Get the wallet user's own phone hash details if they're cached
Expand All @@ -23,7 +23,7 @@ export function* getUserSelfPhoneHashDetails() {
const details: PhoneNumberHashDetails = {
e164Number,
pepper: salt,
phoneHash: PhoneNumberUtils.getPhoneHash(e164Number, salt),
phoneHash: getPhoneHash(e164Number, salt),
}

return details
Expand Down
4 changes: 2 additions & 2 deletions src/keylessBackup/KeylessBackupPhoneInput.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { Countries } from '@celo/phone-utils'
import { NativeStackScreenProps } from '@react-navigation/native-stack'
import React, { useEffect, useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next'
Expand All @@ -7,8 +6,8 @@ import * as RNLocalize from 'react-native-localize'
import { SafeAreaView } from 'react-native-safe-area-context'
import { defaultCountryCodeSelector, e164NumberSelector } from 'src/account/selectors'
import { getPhoneNumberDetails } from 'src/account/utils'
import { KeylessBackupEvents } from 'src/analytics/Events'
import AppAnalytics from 'src/analytics/AppAnalytics'
import { KeylessBackupEvents } from 'src/analytics/Events'
import BackButton from 'src/components/BackButton'
import Button, { BtnSizes, BtnTypes } from 'src/components/Button'
import KeyboardAwareScrollView from 'src/components/KeyboardAwareScrollView'
Expand All @@ -28,6 +27,7 @@ import Colors from 'src/styles/colors'
import { typeScale } from 'src/styles/fonts'
import { Spacing } from 'src/styles/styles'
import variables from 'src/styles/variables'
import { Countries } from 'src/utils/Countries'

type Props = NativeStackScreenProps<StackParamList, Screens.KeylessBackupPhoneInput>

Expand Down
2 changes: 1 addition & 1 deletion src/localCurrency/selectors.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { getRegionCode } from '@celo/phone-utils'
import CountryData from 'country-data'
import { getCurrencies } from 'react-native-localize'
import { createSelector } from 'reselect'
Expand All @@ -10,6 +9,7 @@ import {
LocalCurrencySymbol,
} from 'src/localCurrency/consts'
import { RootState } from 'src/redux/reducers'
import { getRegionCode } from 'src/utils/phoneNumbers'

function getCountryCurrencies(e164PhoneNumber: string) {
const regionCode = getRegionCode(e164PhoneNumber)
Expand Down
21 changes: 10 additions & 11 deletions src/navigator/SettingsMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,27 @@ import deviceInfoModule from 'react-native-device-info'
import { ScrollView } from 'react-native-gesture-handler'
import { useSelector } from 'react-redux'
import { defaultCountryCodeSelector, e164NumberSelector, nameSelector } from 'src/account/selectors'
import { phoneNumberVerifiedSelector } from 'src/app/selectors'
import { phoneNumberVerifiedSelector, walletConnectEnabledSelector } from 'src/app/selectors'
import ContactCircleSelf from 'src/components/ContactCircleSelf'
import { SettingsItemTextValue } from 'src/components/SettingsItem'
import Touchable from 'src/components/Touchable'
import Help from 'src/icons/navigator/Help'
import Envelope from 'src/icons/Envelope'
import ForwardChevron from 'src/icons/ForwardChevron'
import Lock from 'src/icons/Lock'
import Help from 'src/icons/navigator/Help'
import Wallet from 'src/icons/navigator/Wallet'
import Preferences from 'src/icons/Preferences'
import Stack from 'src/icons/Stack'
import { headerWithCloseButton } from 'src/navigator/Headers'
import { navigate } from 'src/navigator/NavigationService'
import { Screens } from 'src/navigator/Screens'
import { StackParamList } from 'src/navigator/types'
import colors, { Colors } from 'src/styles/colors'
import { typeScale } from 'src/styles/fonts'
import { Spacing } from 'src/styles/styles'
import { parsePhoneNumber } from '@celo/phone-utils'
import ForwardChevron from 'src/icons/ForwardChevron'
import Wallet from 'src/icons/navigator/Wallet'
import Preferences from 'src/icons/Preferences'
import Lock from 'src/icons/Lock'
import Stack from 'src/icons/Stack'
import { selectSessions } from 'src/walletConnect/selectors'
import { walletConnectEnabledSelector } from 'src/app/selectors'
import variables from 'src/styles/variables'
import { SettingsItemTextValue } from 'src/components/SettingsItem'
import { parsePhoneNumber } from 'src/utils/phoneNumbers'
import { selectSessions } from 'src/walletConnect/selectors'

type Props = NativeStackScreenProps<StackParamList, Screens.SettingsMenu>

Expand Down
2 changes: 1 addition & 1 deletion src/navigator/types.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { Countries } from '@celo/phone-utils'
import { KycSchema } from '@fiatconnect/fiatconnect-types'
import { SendOrigin, WalletConnectPairingOrigin } from 'src/analytics/types'
import { EarnTabType } from 'src/earn/types'
Expand All @@ -15,6 +14,7 @@ import { Recipient } from 'src/recipients/recipient'
import { QrCode, TransactionDataInput } from 'src/send/types'
import { AssetTabType } from 'src/tokens/types'
import { NetworkId, TokenTransaction, TokenTransfer } from 'src/transactions/types'
import { Countries } from 'src/utils/Countries'
import { Currency } from 'src/utils/currencies'
import { SerializableTransactionRequest } from 'src/viem/preparedTransactionSerialization'
import { ActionRequestProps } from 'src/walletConnect/screens/ActionRequest'
Expand Down
2 changes: 1 addition & 1 deletion src/networkInfo/saga.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { getRegionCodeFromCountryCode } from '@celo/phone-utils'
import NetInfo, { NetInfoState } from '@react-native-community/netinfo'
import { getIpAddress } from 'react-native-device-info'
import { eventChannel } from 'redux-saga'
Expand All @@ -7,6 +6,7 @@ import { isE2EEnv } from 'src/config'
import { setNetworkConnectivity, updateUserLocationData } from 'src/networkInfo/actions'
import Logger from 'src/utils/Logger'
import { fetchWithTimeout } from 'src/utils/fetchWithTimeout'
import { getRegionCodeFromCountryCode } from 'src/utils/phoneNumbers'
import networkConfig from 'src/web3/networkConfig'
import { call, cancelled, put, select, spawn, take } from 'typed-redux-saga'

Expand Down
2 changes: 1 addition & 1 deletion src/onboarding/registration/SelectCountry.test.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { Countries } from '@celo/phone-utils'
import { fireEvent, render } from '@testing-library/react-native'
import * as React from 'react'
import 'react-native'
import { Provider } from 'react-redux'
import i18n from 'src/i18n'
import { Screens } from 'src/navigator/Screens'
import SelectCountry from 'src/onboarding/registration/SelectCountry'
import { Countries } from 'src/utils/Countries'
import { createMockStore, getMockStackScreenProps } from 'test/utils'

const onSelectCountry = jest.fn()
Expand Down
Loading

0 comments on commit 172df1e

Please sign in to comment.