ci(release): publish latest release

parent 73588225
......@@ -4,7 +4,7 @@ Search Improvements: Enjoy an improved search algorithm, with more relevant info
Other changes:
- Improved backup discovery
- Added haptics when repositioning favorited tokens and wallets
- Improved token selector behavior, with more relevant network filtering, as well as an improved experience when flipping input and output.
- Improvements to NFT spam detection
- Various bug fixes and performance improvements
\ No newline at end of file
extension/1.21.0
\ No newline at end of file
mobile/1.51.1
\ No newline at end of file
......@@ -11,8 +11,6 @@ import { EIP712Message, isEIP712TypedData } from 'src/app/features/dappRequests/
import { isPermit2, isUniswapXSwapRequest } from 'src/app/features/dappRequests/types/Permit2Types'
import { Flex, Text } from 'ui/src'
import { toSupportedChainId } from 'uniswap/src/features/chains/utils'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag } from 'uniswap/src/features/gating/hooks'
import { useHasAccountMismatchCallback } from 'uniswap/src/features/smartWallet/mismatch/hooks'
import { ExplorerDataType, getExplorerLink } from 'uniswap/src/utils/linking'
import { isAddress } from 'utilities/src/addresses'
......@@ -46,7 +44,6 @@ export function SignTypedDataRequestContent({ dappRequest }: SignTypedDataReques
function SignTypedDataRequestContentInner({ dappRequest }: SignTypedDataRequestProps): JSX.Element | null {
const { t } = useTranslation()
const enablePermitMismatchUx = useFeatureFlag(FeatureFlags.EnablePermitMismatchUX)
const getHasMismatch = useHasAccountMismatchCallback()
const parsedTypedData = JSON.parse(dappRequest.typedData)
......@@ -59,7 +56,7 @@ function SignTypedDataRequestContentInner({ dappRequest }: SignTypedDataRequestP
const chainId = toSupportedChainId(domainChainId)
const hasMismatch = chainId ? getHasMismatch(chainId) : false
if (enablePermitMismatchUx && hasMismatch) {
if (hasMismatch) {
return <ActionCanNotBeCompletedContent />
}
......
......@@ -32,7 +32,7 @@ type TokenBalanceListProps = {
export const TokenBalanceList = memo(function _TokenBalanceList({ owner }: TokenBalanceListProps): JSX.Element {
return (
<Flex grow>
<TokenBalanceListContextProvider isExternalProfile={false} owner={owner}>
<TokenBalanceListContextProvider isExternalProfile={false} owner={owner} onPressToken={() => {}}>
<TokenBalanceListInner />
</TokenBalanceListContextProvider>
</Flex>
......@@ -202,14 +202,14 @@ function TokenContextMenu({
}: PropsWithChildren<{
portfolioBalance: PortfolioBalance
}>): JSX.Element {
const { menuActions } = useTokenContextMenu({
const contextMenu = useTokenContextMenu({
currencyId: portfolioBalance.currencyInfo.currencyId,
isBlocked: portfolioBalance.currencyInfo.safetyInfo?.tokenList === TokenList.Blocked,
tokenSymbolForNotification: portfolioBalance?.currencyInfo?.currency?.symbol,
portfolioBalance,
})
const menuOptions = menuActions.map((action) => ({
const menuOptions = contextMenu.menuActions.map((action) => ({
label: action.title,
onPress: action.onPress,
Icon: action.Icon,
......
......@@ -71,9 +71,9 @@ if (isCI && datadogPropertiesAvailable) {
apply from: "../../../../node_modules/@datadog/mobile-react-native/datadog-sourcemaps.gradle"
}
def devVersionName = "1.51"
def betaVersionName = "1.51"
def prodVersionName = "1.51"
def devVersionName = "1.51.1"
def betaVersionName = "1.51.1"
def prodVersionName = "1.51.1"
android {
ndkVersion rootProject.ext.ndkVersion
......
......@@ -3210,7 +3210,7 @@ PODS:
- Yoga
- RNDateTimePicker (8.2.0):
- React-Core
- RNDeviceInfo (10.0.2):
- RNDeviceInfo (10.11.0):
- React-Core
- RNFastImage (8.6.3):
- React-Core
......@@ -3963,7 +3963,7 @@ SPEC CHECKSUMS:
RNCAsyncStorage: 826b603ae9c0f88b5ac4e956801f755109fa4d5c
RNCMaskedView: affff96123106435ddc9799a57a8ba8edf17fe27
RNDateTimePicker: 40ffda97d071a98a10fdca4fa97e3977102ccd14
RNDeviceInfo: 0a7c1d2532aa7691f9b9925a27e43af006db4dae
RNDeviceInfo: bf8a32acbcb875f568217285d1793b0e8588c974
RNFastImage: 246de6b52d7642992cfd01e2005dda36d00a6660
RNFBApp: 4122dd41d8d7ff017b6ecf777a6224f5b349ca04
RNFBAuth: 1632cefd787a43ba952fa52ff016e7b69fe355cb
......
......@@ -3060,7 +3060,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
......@@ -3113,7 +3113,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore;
......@@ -3166,7 +3166,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore;
......@@ -3219,7 +3219,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore;
......@@ -3257,7 +3257,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
......@@ -3293,7 +3293,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests;
......@@ -3328,7 +3328,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests;
......@@ -3363,7 +3363,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests;
......@@ -3410,7 +3410,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
......@@ -3456,7 +3456,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.widgets;
......@@ -3502,7 +3502,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.widgets;
......@@ -3548,7 +3548,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.widgets;
......@@ -3590,7 +3590,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
......@@ -3633,7 +3633,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.WidgetIntentExtension;
......@@ -3676,7 +3676,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.WidgetIntentExtension;
......@@ -3719,7 +3719,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.WidgetIntentExtension;
......@@ -3755,7 +3755,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
......@@ -3793,7 +3793,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
......@@ -3995,7 +3995,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
......@@ -4040,7 +4040,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.OneSignalNotificationServiceExtension;
......@@ -4151,7 +4151,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
......@@ -4223,7 +4223,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.OneSignalNotificationServiceExtension;
......@@ -4334,7 +4334,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
......@@ -4406,7 +4406,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.51;
MARKETING_VERSION = 1.51.1;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.OneSignalNotificationServiceExtension;
......
......@@ -130,7 +130,7 @@
"react-native-appsflyer": "6.13.1",
"react-native-bootsplash": "6.3.1",
"react-native-context-menu-view": "1.15.0",
"react-native-device-info": "10.0.2",
"react-native-device-info": "10.11.0",
"react-native-dotenv": "3.2.0",
"react-native-fast-image": "8.6.3",
"react-native-gesture-handler": "2.21.2",
......
......@@ -8,7 +8,7 @@ import { default as React, StrictMode, useCallback, useEffect, useLayoutEffect,
import { I18nextProvider } from 'react-i18next'
import { LogBox, NativeModules, StatusBar } from 'react-native'
import appsFlyer from 'react-native-appsflyer'
import DeviceInfo from 'react-native-device-info'
import DeviceInfo, { getUniqueIdSync } from 'react-native-device-info'
import { GestureHandlerRootView } from 'react-native-gesture-handler'
import { MMKV } from 'react-native-mmkv'
import { OneSignal } from 'react-native-onesignal'
......@@ -79,7 +79,6 @@ import { attachUnhandledRejectionHandler, setAttributesToDatadog } from 'utiliti
import { DDRumAction, DDRumTiming } from 'utilities/src/logger/datadog/datadogEvents'
import { logger } from 'utilities/src/logger/logger'
import { isIOS } from 'utilities/src/platform'
import { useAsyncData } from 'utilities/src/react/hooks'
import { AnalyticsNavigationContextProvider } from 'utilities/src/telemetry/trace/AnalyticsNavigationContext'
import { ErrorBoundary } from 'wallet/src/components/ErrorBoundary/ErrorBoundary'
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
......@@ -122,27 +121,22 @@ function App(): JSX.Element | null {
attachUnhandledRejectionHandler()
setAttributesToDatadog({ buildNumber: DeviceInfo.getBuildNumber() }).catch(() => undefined)
}
}, [])
// We want to ensure deviceID is used as the identifier to link with analytics
const fetchAndSetDeviceId = useCallback(async (): Promise<string> => {
return setDatadogUserWithUniqueId(undefined)
setDatadogUserWithUniqueId(undefined)
}, [])
const deviceId = useAsyncData(fetchAndSetDeviceId).data
const [datadogSessionSampleRate, setDatadogSessionSampleRate] = React.useState<number | undefined>(undefined)
Storage._setProvider(statsigMMKVStorageProvider)
const statsigUser: StatsigUser = useMemo(
() => ({
...(deviceId ? { userID: deviceId } : {}),
userID: getUniqueIdSync(),
custom: {
app: StatsigCustomAppValue.Mobile,
},
}),
[deviceId],
[],
)
const onStatsigInit = (): void => {
......
......@@ -29,8 +29,6 @@ import { spacing } from 'ui/src/theme'
import { EthMethod } from 'uniswap/src/features/dappRequests/types'
import { isSignTypedDataRequest } from 'uniswap/src/features/dappRequests/utils'
import { useTransactionGasFee } from 'uniswap/src/features/gas/hooks'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag } from 'uniswap/src/features/gating/hooks'
import { useHasAccountMismatchCallback } from 'uniswap/src/features/smartWallet/mismatch/hooks'
import { MobileEventName, ModalName } from 'uniswap/src/features/telemetry/constants'
import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send'
......@@ -62,8 +60,6 @@ export function WalletConnectRequestModal({ onClose, request }: Props): JSX.Elem
const didOpenFromDeepLink = useSelector(selectDidOpenFromDeepLink)
const chainId = request.chainId
const enablePermitMismatchUx = useFeatureFlag(FeatureFlags.EnablePermitMismatchUX)
const tx: providers.TransactionRequest | undefined = useMemo(() => {
if (isTransactionRequest(request)) {
return { ...request.transaction, chainId }
......@@ -258,7 +254,7 @@ export function WalletConnectRequestModal({ onClose, request }: Props): JSX.Elem
)
}
if (enablePermitMismatchUx && hasMismatch && isSignTypedDataRequest(request)) {
if (hasMismatch && isSignTypedDataRequest(request)) {
return <ActionCannotBeCompletedContent request={request} onReject={onReject} />
}
......
......@@ -14,7 +14,6 @@ import { useAppFiatCurrency } from 'uniswap/src/features/fiatCurrency/hooks'
import { useCurrentLanguageInfo } from 'uniswap/src/features/language/hooks'
import { useHideSmallBalancesSetting, useHideSpamTokensSetting } from 'uniswap/src/features/settings/hooks'
import { MobileUserPropertyName, setUserProperty } from 'uniswap/src/features/telemetry/user'
import { logger } from 'utilities/src/logger/logger'
import { isAndroid } from 'utilities/src/platform'
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import { analytics } from 'utilities/src/telemetry/analytics/analytics'
......@@ -78,13 +77,7 @@ export function TraceUserProperties(): null {
// Set user properties for datadog
useEffect(() => {
setDatadogUserWithUniqueId(activeAccount?.address).catch(() =>
logger.warn(
'TraceUserProperties',
'TraceUserProperties',
'Failed to set datadog current active address attribute',
),
)
setDatadogUserWithUniqueId(activeAccount?.address)
}, [activeAccount?.address])
// Set user properties for amplitude
......
......@@ -5,6 +5,7 @@ import { SearchEmptySection } from 'src/components/explore/search/SearchEmptySec
import { SearchResultsSection } from 'src/components/explore/search/SearchResultsSection'
import { Flex, Text, TouchableArea, flexStyles } from 'ui/src'
import { useTranslation } from 'react-i18next'
import { UniverseChainId } from 'uniswap/src/features/chains/types'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag } from 'uniswap/src/features/gating/hooks'
......@@ -63,15 +64,33 @@ function NewExploreSearchResultsList({
debouncedSearchQuery: string | null
debouncedParsedSearchQuery: string | null
}): JSX.Element {
const { t } = useTranslation()
const [activeTab, setActiveTab] = useState<SearchTab>(SearchTab.All)
// So that the linter errors if someone adds a new tab without updating the switch statement
// eslint-disable-next-line consistent-return
const getTabLabel = (tab: SearchTab): string => {
switch (tab) {
case SearchTab.All:
return t('common.all')
case SearchTab.Tokens:
return t('common.tokens')
case SearchTab.Pools:
return t('common.pools')
case SearchTab.Wallets:
return t('explore.search.section.wallets')
case SearchTab.NFTCollections:
return t('common.nfts')
}
}
return (
<Trace section={SectionName.ExploreSearch}>
<Flex row px="$spacing20" pt="$spacing16" pb="$spacing8" gap="$spacing16">
{MOBILE_SEARCH_TABS.map((tab) => (
<TouchableArea key={tab} onPress={() => setActiveTab(tab)}>
<Text color={activeTab === tab ? '$neutral1' : '$neutral2'} variant="buttonLabel2">
{tab}
{getTabLabel(tab)}
</Text>
</TouchableArea>
))}
......
import { DdSdkReactNative } from '@datadog/mobile-react-native'
import { getUniqueIdSync } from 'react-native-device-info'
import { MobileUserPropertyName } from 'uniswap/src/features/telemetry/user'
import { getUniqueId } from 'utilities/src/device/getUniqueId'
export async function setDatadogUserWithUniqueId(activeAddress: Maybe<Address>): Promise<string> {
const uniqueId = await getUniqueId()
export function setDatadogUserWithUniqueId(activeAddress: Maybe<Address>): void {
DdSdkReactNative.setUser({
id: uniqueId,
id: getUniqueIdSync(),
...(activeAddress ? { [MobileUserPropertyName.ActiveWalletAddress]: activeAddress } : {}),
}).catch(() => undefined)
return uniqueId
}
......@@ -87,7 +87,7 @@
"react-i18next": "14.1.0",
"react-native": "0.76.9",
"react-native-appsflyer": "6.13.1",
"react-native-device-info": "10.0.2",
"react-native-device-info": "10.11.0",
"react-native-gesture-handler": "2.21.2",
"react-native-localize": "2.2.6",
"react-native-mmkv": "2.10.1",
......
......@@ -27,7 +27,7 @@
"promise": "8.3.0",
"react": "18.3.1",
"react-native": "0.76.9",
"react-native-device-info": "10.0.2",
"react-native-device-info": "10.11.0",
"react-test-renderer": "18.3.1",
"redux": "4.2.1",
"subscriptions-transport-ws": "0.11.0",
......
import { memo, useMemo } from 'react'
import { memo, useCallback } from 'react'
import { useTranslation } from 'react-i18next'
import { Flex, Shine, Text, TouchableArea, isWeb, useIsDarkMode } from 'ui/src'
import { TokenLogo } from 'uniswap/src/components/CurrencyLogo/TokenLogo'
......@@ -45,14 +45,8 @@ export const TokenBalanceItem = memo(function _TokenBalanceItem({
// Ensure items rerender when theme is switched
useIsDarkMode()
// Only return a function if onPressToken is provided, otherwise onPress is always defined and this element will intercept all clicks.
const onPress = useMemo(() => {
if (!onPressToken) {
return undefined
}
return (): void => {
onPressToken(currencyInfo.currencyId)
}
const onPress = useCallback((): void => {
onPressToken?.(currencyInfo.currencyId)
}, [currencyInfo.currencyId, onPressToken])
const shortenedSymbol = getSymbolDisplayText(currency.symbol)
......
......@@ -33,7 +33,7 @@ type TokenBalanceListContextState = {
isWarmLoading: boolean
rows: Array<TokenBalanceListRow>
setHiddenTokensExpanded: Dispatch<SetStateAction<boolean>>
onPressToken?: (currencyId: CurrencyId) => void
onPressToken: (currencyId: CurrencyId) => void
}
export const TokenBalanceListContext = createContext<TokenBalanceListContextState | undefined>(undefined)
......@@ -46,7 +46,7 @@ export function TokenBalanceListContextProvider({
}: PropsWithChildren<{
owner: Address
isExternalProfile: boolean
onPressToken?: (currencyId: CurrencyId) => void
onPressToken: (currencyId: CurrencyId) => void
}>): JSX.Element {
const {
data: balancesById,
......
......@@ -16930,7 +16930,7 @@ __metadata:
react-native-bootsplash: 6.3.1
react-native-clean-project: 4.0.1
react-native-context-menu-view: 1.15.0
react-native-device-info: 10.0.2
react-native-device-info: 10.11.0
react-native-dotenv: 3.2.0
react-native-fast-image: 8.6.3
react-native-gesture-handler: 2.21.2
......@@ -39692,12 +39692,12 @@ __metadata:
languageName: node
linkType: hard
"react-native-device-info@npm:10.0.2":
version: 10.0.2
resolution: "react-native-device-info@npm:10.0.2"
"react-native-device-info@npm:10.11.0":
version: 10.11.0
resolution: "react-native-device-info@npm:10.11.0"
peerDependencies:
react-native: "*"
checksum: 751274e5e2cec4f47f70a8b8ca7f3d7ce465a6dd022a5f935fd1a3fd81e4cb1a8b1072ee02d26047ba57da887b8dba0ea67888b238db4de6e0dbfa68fc079f13
checksum: 3f2de34df4e95e87291673fe69b09d3b96f9088177a8dadd92eccec86549cea63ca08ab82f120d4150eb0302ac721ad8a5e4b3a8136c9f54f0212e4c055762b0
languageName: node
linkType: hard
......@@ -46066,7 +46066,7 @@ __metadata:
react-i18next: 14.1.0
react-native: 0.76.9
react-native-appsflyer: 6.13.1
react-native-device-info: 10.0.2
react-native-device-info: 10.11.0
react-native-dotenv: 3.2.0
react-native-gesture-handler: 2.21.2
react-native-localize: 2.2.6
......@@ -46590,7 +46590,7 @@ __metadata:
promise: 8.3.0
react: 18.3.1
react-native: 0.76.9
react-native-device-info: 10.0.2
react-native-device-info: 10.11.0
react-test-renderer: 18.3.1
redux: 4.2.1
subscriptions-transport-ws: 0.11.0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment