ci(release): publish latest release

parent 91d554d4
...@@ -2,5 +2,6 @@ We are back with a large update: Smart wallets are here! Enable smart wallets fr ...@@ -2,5 +2,6 @@ We are back with a large update: Smart wallets are here! Enable smart wallets fr
Other changes: Other changes:
- When connected to Uniswap Web, you’ll see a new verification check mark so that you know you’re on the right website. - Users can now enjoy multi-account signing, as well as 1 click Auth support, when connecting to external dapps via WalletConnect
- When connecting to external dapps, users can benefit from better malicious dapp detection.
- Various bug fixes and performance improvements - Various bug fixes and performance improvements
\ No newline at end of file
extension/1.22.2 mobile/1.52.2
\ No newline at end of file \ No newline at end of file
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
"react-native-reanimated": "3.16.7", "react-native-reanimated": "3.16.7",
"react-native-svg": "15.10.1", "react-native-svg": "15.10.1",
"react-native-web": "0.19.13", "react-native-web": "0.19.13",
"react-player": "2.16.0",
"react-qr-code": "2.0.12", "react-qr-code": "2.0.12",
"react-redux": "8.0.5", "react-redux": "8.0.5",
"react-router-dom": "6.10.0", "react-router-dom": "6.10.0",
......
...@@ -2,6 +2,7 @@ import { useApolloClient } from '@apollo/client' ...@@ -2,6 +2,7 @@ import { useApolloClient } from '@apollo/client'
import { SharedEventName } from '@uniswap/analytics-events' import { SharedEventName } from '@uniswap/analytics-events'
import { memo, useCallback, useEffect, useState } from 'react' import { memo, useCallback, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import ReactPlayer from 'react-player'
import { useDispatch, useSelector } from 'react-redux' import { useDispatch, useSelector } from 'react-redux'
import { ActivityTab } from 'src/app/components/tabs/ActivityTab' import { ActivityTab } from 'src/app/components/tabs/ActivityTab'
import { NftsTab } from 'src/app/components/tabs/NftsTab' import { NftsTab } from 'src/app/components/tabs/NftsTab'
...@@ -43,19 +44,19 @@ import { setSmartWalletConsent } from 'wallet/src/features/wallet/slice' ...@@ -43,19 +44,19 @@ import { setSmartWalletConsent } from 'wallet/src/features/wallet/slice'
const MemoizedVideo = memo(() => ( const MemoizedVideo = memo(() => (
<Flex borderRadius="$rounded12" overflow="hidden" height="auto" maxWidth="100%" aspectRatio="16 / 9"> <Flex borderRadius="$rounded12" overflow="hidden" height="auto" maxWidth="100%" aspectRatio="16 / 9">
<video <ReactPlayer
src={SMART_WALLET_UPGRADE_VIDEO} url={SMART_WALLET_UPGRADE_VIDEO}
width="100%"
height="100%"
playing={true}
muted={true}
style={{ style={{
width: '100%',
height: '100%',
objectFit: 'cover', objectFit: 'cover',
}} }}
autoPlay fallback={undefined}
muted
/> />
</Flex> </Flex>
)) ))
MemoizedVideo.displayName = 'MemoizedVideo' MemoizedVideo.displayName = 'MemoizedVideo'
export const HomeScreen = memo(function _HomeScreen(): JSX.Element { export const HomeScreen = memo(function _HomeScreen(): JSX.Element {
......
...@@ -7,8 +7,6 @@ import { navigate } from 'src/app/navigation/state' ...@@ -7,8 +7,6 @@ import { navigate } from 'src/app/navigation/state'
import { Flex, Text, getTokenValue, useMedia } from 'ui/src' import { Flex, Text, getTokenValue, useMedia } from 'ui/src'
import { ArrowDownCircle, Bank, CoinConvert, SendAction } from 'ui/src/components/icons' import { ArrowDownCircle, Bank, CoinConvert, SendAction } from 'ui/src/components/icons'
import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag } from 'uniswap/src/features/gating/hooks'
import { ElementName } from 'uniswap/src/features/telemetry/constants' import { ElementName } from 'uniswap/src/features/telemetry/constants'
import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send'
import { TestnetModeModal } from 'uniswap/src/features/testnets/TestnetModeModal' import { TestnetModeModal } from 'uniswap/src/features/testnets/TestnetModeModal'
...@@ -74,7 +72,6 @@ export const PortfolioActionButtons = memo(function _PortfolioActionButtons(): J ...@@ -74,7 +72,6 @@ export const PortfolioActionButtons = memo(function _PortfolioActionButtons(): J
const { t } = useTranslation() const { t } = useTranslation()
const media = useMedia() const media = useMedia()
const { isTestnetModeEnabled } = useEnabledChains() const { isTestnetModeEnabled } = useEnabledChains()
const isFiatOffRampEnabled = useFeatureFlag(FeatureFlags.FiatOffRamp)
const onSendClick = (): void => { const onSendClick = (): void => {
sendAnalyticsEvent(SharedEventName.ELEMENT_CLICKED, { sendAnalyticsEvent(SharedEventName.ELEMENT_CLICKED, {
...@@ -126,11 +123,7 @@ export const PortfolioActionButtons = memo(function _PortfolioActionButtons(): J ...@@ -126,11 +123,7 @@ export const PortfolioActionButtons = memo(function _PortfolioActionButtons(): J
/> />
<Flex row shrink gap="$spacing8" width={isGrid ? '100%' : '50%'}> <Flex row shrink gap="$spacing8" width={isGrid ? '100%' : '50%'}>
<ActionButton Icon={<CoinConvert />} label={t('home.label.swap')} onClick={onSwapClick} /> <ActionButton Icon={<CoinConvert />} label={t('home.label.swap')} onClick={onSwapClick} />
<ActionButton <ActionButton Icon={<Bank />} label={t('home.label.buy')} onClick={onBuyClick} />
Icon={<Bank />}
label={isFiatOffRampEnabled ? t('home.label.for') : t('home.label.buy')}
onClick={onBuyClick}
/>
</Flex> </Flex>
<Flex row shrink gap="$spacing8" width={isGrid ? '100%' : '50%'}> <Flex row shrink gap="$spacing8" width={isGrid ? '100%' : '50%'}>
<ActionButton Icon={<SendAction />} label={t('home.label.send')} onClick={onSendClick} /> <ActionButton Icon={<SendAction />} label={t('home.label.send')} onClick={onSendClick} />
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"manifest_version": 3, "manifest_version": 3,
"name": "Uniswap Extension", "name": "Uniswap Extension",
"description": "The Uniswap Extension is a self-custody crypto wallet that's built for swapping.", "description": "The Uniswap Extension is a self-custody crypto wallet that's built for swapping.",
"version": "1.22.2", "version": "1.23.0",
"minimum_chrome_version": "116", "minimum_chrome_version": "116",
"icons": { "icons": {
"16": "assets/icon16.png", "16": "assets/icon16.png",
......
...@@ -71,9 +71,9 @@ if (isCI && datadogPropertiesAvailable) { ...@@ -71,9 +71,9 @@ if (isCI && datadogPropertiesAvailable) {
apply from: "../../../../node_modules/@datadog/mobile-react-native/datadog-sourcemaps.gradle" apply from: "../../../../node_modules/@datadog/mobile-react-native/datadog-sourcemaps.gradle"
} }
def devVersionName = "1.53" def devVersionName = "1.52.2"
def betaVersionName = "1.53" def betaVersionName = "1.52.2"
def prodVersionName = "1.53" def prodVersionName = "1.52.2"
android { android {
ndkVersion rootProject.ext.ndkVersion ndkVersion rootProject.ext.ndkVersion
......
...@@ -10,16 +10,17 @@ module.exports = function (api) { ...@@ -10,16 +10,17 @@ module.exports = function (api) {
plugins = [ plugins = [
...plugins, ...plugins,
process.env.NODE_ENV === 'test' // Disable compiler to fix mobile theme issues and media queries
? null // process.env.NODE_ENV === 'test'
: [ // ? null
'@tamagui/babel-plugin', // : [
{ // '@tamagui/babel-plugin',
components: ['ui'], // {
// experimentalFlattenThemesOnNative: true, // components: ['ui'],
config: '../../packages/ui/src/tamagui.config.ts', // // experimentalFlattenThemesOnNative: true,
}, // config: '../../packages/ui/src/tamagui.config.ts',
], // },
// ],
[ [
'module-resolver', 'module-resolver',
......
...@@ -2821,7 +2821,7 @@ ...@@ -2821,7 +2821,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@loader_path/Frameworks", "@loader_path/Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
...@@ -2874,7 +2874,7 @@ ...@@ -2874,7 +2874,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@loader_path/Frameworks", "@loader_path/Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore;
...@@ -2927,7 +2927,7 @@ ...@@ -2927,7 +2927,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@loader_path/Frameworks", "@loader_path/Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore;
...@@ -2980,7 +2980,7 @@ ...@@ -2980,7 +2980,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@loader_path/Frameworks", "@loader_path/Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore;
...@@ -3018,7 +3018,7 @@ ...@@ -3018,7 +3018,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1; IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
...@@ -3054,7 +3054,7 @@ ...@@ -3054,7 +3054,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1; IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests;
...@@ -3089,7 +3089,7 @@ ...@@ -3089,7 +3089,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1; IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests;
...@@ -3124,7 +3124,7 @@ ...@@ -3124,7 +3124,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.1; IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests;
...@@ -3171,7 +3171,7 @@ ...@@ -3171,7 +3171,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
...@@ -3217,7 +3217,7 @@ ...@@ -3217,7 +3217,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.widgets; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.widgets;
...@@ -3263,7 +3263,7 @@ ...@@ -3263,7 +3263,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.widgets; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.widgets;
...@@ -3309,7 +3309,7 @@ ...@@ -3309,7 +3309,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.widgets; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.widgets;
...@@ -3351,7 +3351,7 @@ ...@@ -3351,7 +3351,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
...@@ -3394,7 +3394,7 @@ ...@@ -3394,7 +3394,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.WidgetIntentExtension; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.WidgetIntentExtension;
...@@ -3437,7 +3437,7 @@ ...@@ -3437,7 +3437,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.WidgetIntentExtension; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.WidgetIntentExtension;
...@@ -3480,7 +3480,7 @@ ...@@ -3480,7 +3480,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.WidgetIntentExtension; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.WidgetIntentExtension;
...@@ -3516,7 +3516,7 @@ ...@@ -3516,7 +3516,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",
"-ObjC", "-ObjC",
...@@ -3554,7 +3554,7 @@ ...@@ -3554,7 +3554,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",
"-ObjC", "-ObjC",
...@@ -3756,7 +3756,7 @@ ...@@ -3756,7 +3756,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
...@@ -3801,7 +3801,7 @@ ...@@ -3801,7 +3801,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.OneSignalNotificationServiceExtension; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.OneSignalNotificationServiceExtension;
...@@ -3912,7 +3912,7 @@ ...@@ -3912,7 +3912,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",
"-ObjC", "-ObjC",
...@@ -3984,7 +3984,7 @@ ...@@ -3984,7 +3984,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.OneSignalNotificationServiceExtension; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.OneSignalNotificationServiceExtension;
...@@ -4095,7 +4095,7 @@ ...@@ -4095,7 +4095,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",
"-ObjC", "-ObjC",
...@@ -4167,7 +4167,7 @@ ...@@ -4167,7 +4167,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.53; MARKETING_VERSION = 1.52.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.OneSignalNotificationServiceExtension; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.OneSignalNotificationServiceExtension;
......
#!/bin/bash #!/bin/bash
MAX_SIZE=24 MAX_SIZE=23.5
MAX_BUFFER=0.5 MAX_BUFFER=0.5
# Check OS type and use appropriate stat command # Check OS type and use appropriate stat command
......
...@@ -175,7 +175,9 @@ export function* handleGetCapabilities({ ...@@ -175,7 +175,9 @@ export function* handleGetCapabilities({
const detailsMap = delegationStatusResponse.delegationDetails[accountAddress] const detailsMap = delegationStatusResponse.delegationDetails[accountAddress]
if (detailsMap) { if (detailsMap) {
const hasAtLeastOneDelegation = Object.values(detailsMap).some((details) => !!details.currentDelegationAddress) const hasAtLeastOneDelegation = Object.values(detailsMap).some(
(details) => !!details.currentDelegationAddress && !details.isWalletDelegatedToUniswap,
)
hasNoExistingDelegations = !hasAtLeastOneDelegation hasNoExistingDelegations = !hasAtLeastOneDelegation
} }
......
...@@ -296,7 +296,7 @@ export function HomeScreen(props?: AppStackScreenProp<MobileScreens.Home>): JSX. ...@@ -296,7 +296,7 @@ export function HomeScreen(props?: AppStackScreenProp<MobileScreens.Home>): JSX.
} }
return ( return (
<Flex borderRadius="$rounded16" width="100%" aspectRatio={16 / 9} overflow="hidden"> <Flex borderRadius="$rounded16" width="100%" aspectRatio={16 / 9} overflow="hidden" mb="$spacing8">
<Video <Video
source={SMART_WALLET_UPGRADE_VIDEO} source={SMART_WALLET_UPGRADE_VIDEO}
poster={SMART_WALLET_UPGRADE_FALLBACK} poster={SMART_WALLET_UPGRADE_FALLBACK}
......
import { NativeStackScreenProps } from '@react-navigation/native-stack' import { NativeStackScreenProps } from '@react-navigation/native-stack'
import React, { ComponentProps, useCallback } from 'react' import React, { ComponentProps, useCallback } from 'react'
import { Trans, useTranslation } from 'react-i18next' import { Trans, useTranslation } from 'react-i18next'
import { ScrollView } from 'react-native' import { ScrollView, StyleSheet } from 'react-native'
import Animated, { useAnimatedStyle, withTiming } from 'react-native-reanimated' import Animated, { useAnimatedStyle, withTiming } from 'react-native-reanimated'
import { navigate } from 'src/app/navigation/rootNavigation' import { navigate } from 'src/app/navigation/rootNavigation'
import { OnboardingStackParamList } from 'src/app/navigation/types' import { OnboardingStackParamList } from 'src/app/navigation/types'
import { OnboardingScreen } from 'src/features/onboarding/OnboardingScreen' import { OnboardingScreen } from 'src/features/onboarding/OnboardingScreen'
import { Button, Flex, Loader, Text, TouchableArea, useLayoutAnimationOnChange } from 'ui/src' import {
Button,
Flex,
LinearGradient,
Loader,
Text,
TouchableArea,
useLayoutAnimationOnChange,
useSporeColors,
} from 'ui/src'
import { WalletFilled } from 'ui/src/components/icons' import { WalletFilled } from 'ui/src/components/icons'
import { spacing } from 'ui/src/theme' import { opacify, spacing } from 'ui/src/theme'
import { BaseCard } from 'uniswap/src/components/BaseCard/BaseCard' import { BaseCard } from 'uniswap/src/components/BaseCard/BaseCard'
import { FeatureFlags } from 'uniswap/src/features/gating/flags' import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' import { useFeatureFlag } from 'uniswap/src/features/gating/hooks'
...@@ -31,6 +40,7 @@ export function SelectWalletScreen({ navigation, route: { params } }: Props): JS ...@@ -31,6 +40,7 @@ export function SelectWalletScreen({ navigation, route: { params } }: Props): JS
const { t } = useTranslation() const { t } = useTranslation()
const { selectImportedAccounts, getImportedAccountsAddresses } = useOnboardingContext() const { selectImportedAccounts, getImportedAccountsAddresses } = useOnboardingContext()
const importedAddresses = getImportedAccountsAddresses() const importedAddresses = getImportedAccountsAddresses()
const colors = useSporeColors()
const { const {
importableAccounts, importableAccounts,
...@@ -103,6 +113,13 @@ export function SelectWalletScreen({ navigation, route: { params } }: Props): JS ...@@ -103,6 +113,13 @@ export function SelectWalletScreen({ navigation, route: { params } }: Props): JS
<Loader.Wallets repeat={5} /> <Loader.Wallets repeat={5} />
</Flex> </Flex>
) : ( ) : (
<Flex flexGrow={1} flexShrink={1}>
<LinearGradient
colors={[colors.surface1.val, opacify(0, colors.surface1.val)]}
end={{ x: 0, y: 1 }}
start={{ x: 0, y: 0 }}
style={ListSheet.topGradient}
/>
<ScrollView testID={TestID.SelectWalletScreenLoaded}> <ScrollView testID={TestID.SelectWalletScreenLoaded}>
<Flex height="$spacing12" /> <Flex height="$spacing12" />
<Flex gap="$gap12"> <Flex gap="$gap12">
...@@ -130,12 +147,20 @@ export function SelectWalletScreen({ navigation, route: { params } }: Props): JS ...@@ -130,12 +147,20 @@ export function SelectWalletScreen({ navigation, route: { params } }: Props): JS
})} })}
</Flex> </Flex>
</ScrollView> </ScrollView>
<LinearGradient
colors={[opacify(0, colors.surface1.val), colors.surface1.val]}
end={{ x: 0, y: 1 }}
start={{ x: 0, y: 0 }}
style={ListSheet.bottomGradient}
/>
</Flex>
)} )}
<Animated.View <Animated.View
style={[ style={[
opacityStyle, opacityStyle,
{ {
marginBottom: spacing.spacing16, marginBottom: spacing.spacing16,
marginTop: spacing.spacing16,
marginHorizontal: spacing.spacing24, marginHorizontal: spacing.spacing24,
}, },
]} ]}
...@@ -175,6 +200,24 @@ export function SelectWalletScreen({ navigation, route: { params } }: Props): JS ...@@ -175,6 +200,24 @@ export function SelectWalletScreen({ navigation, route: { params } }: Props): JS
) )
} }
const ListSheet = StyleSheet.create({
bottomGradient: {
bottom: 0,
height: spacing.spacing16,
left: 0,
position: 'absolute',
width: '100%',
},
topGradient: {
height: spacing.spacing16,
left: 0,
position: 'absolute',
top: 0,
width: '100%',
zIndex: 1,
},
})
function CustomHighlightText(props: ComponentProps<typeof Text>): JSX.Element { function CustomHighlightText(props: ComponentProps<typeof Text>): JSX.Element {
return <Text variant="buttonLabel4" color="$neutral1" {...props} /> return <Text variant="buttonLabel4" color="$neutral1" {...props} />
} }
import { FlashList } from '@shopify/flash-list'
import React, { useCallback } from 'react' import React, { useCallback } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useDispatch } from 'react-redux' import { useDispatch } from 'react-redux'
import { useReactNavigationModal } from 'src/components/modals/useReactNavigationModal' import { useReactNavigationModal } from 'src/components/modals/useReactNavigationModal'
import { Flex, Text, TouchableArea } from 'ui/src' import { Flex, Text, TouchableArea } from 'ui/src'
import { AnimatedBottomSheetFlashList } from 'ui/src/components/AnimatedFlashList/AnimatedFlashList'
import { Check } from 'ui/src/components/icons' import { Check } from 'ui/src/components/icons'
import { Modal } from 'uniswap/src/components/modals/Modal' import { Modal } from 'uniswap/src/components/modals/Modal'
import { FiatCurrency, ORDERED_CURRENCIES } from 'uniswap/src/features/fiatCurrency/constants' import { FiatCurrency, ORDERED_CURRENCIES } from 'uniswap/src/features/fiatCurrency/constants'
...@@ -29,7 +29,11 @@ export function SettingsFiatCurrencyModal(): JSX.Element { ...@@ -29,7 +29,11 @@ export function SettingsFiatCurrencyModal(): JSX.Element {
<Text pb="$spacing12" textAlign="center" variant="subheading1"> <Text pb="$spacing12" textAlign="center" variant="subheading1">
{t('settings.setting.currency.title')} {t('settings.setting.currency.title')}
</Text> </Text>
<FlashList data={ORDERED_CURRENCIES} keyExtractor={(item: FiatCurrency) => item} renderItem={renderItem} /> <AnimatedBottomSheetFlashList
data={ORDERED_CURRENCIES}
keyExtractor={(item: FiatCurrency) => item}
renderItem={renderItem}
/>
</Modal> </Modal>
) )
} }
......
...@@ -10,7 +10,7 @@ import Trace from 'uniswap/src/features/telemetry/Trace' ...@@ -10,7 +10,7 @@ import Trace from 'uniswap/src/features/telemetry/Trace'
import { ElementName, ModalNameType } from 'uniswap/src/features/telemetry/constants' import { ElementName, ModalNameType } from 'uniswap/src/features/telemetry/constants'
import { SwapFormContext } from 'uniswap/src/features/transactions/swap/contexts/SwapFormContext' import { SwapFormContext } from 'uniswap/src/features/transactions/swap/contexts/SwapFormContext'
import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { TestID } from 'uniswap/src/test/fixtures/testIDs'
import { isWeb } from 'utilities/src/platform' import { isMobileApp, isWeb } from 'utilities/src/platform'
type WarningModalContentProps = { type WarningModalContentProps = {
onClose?: () => void onClose?: () => void
...@@ -49,7 +49,7 @@ export function WarningModalContent({ ...@@ -49,7 +49,7 @@ export function WarningModalContent({
titleComponent, titleComponent,
caption, caption,
captionComponent, captionComponent,
rejectText: rejectText, rejectText,
acknowledgeText, acknowledgeText,
severity = WarningSeverity.Medium, severity = WarningSeverity.Medium,
children, children,
...@@ -63,6 +63,8 @@ export function WarningModalContent({ ...@@ -63,6 +63,8 @@ export function WarningModalContent({
const colors = useSporeColors() const colors = useSporeColors()
const { headerText: alertHeaderTextColor } = getAlertColor(severity) const { headerText: alertHeaderTextColor } = getAlertColor(severity)
const buttonSize = isMobileApp ? 'medium' : 'small'
return ( return (
<Flex <Flex
centered centered
...@@ -107,14 +109,14 @@ export function WarningModalContent({ ...@@ -107,14 +109,14 @@ export function WarningModalContent({
<Flex row alignSelf="stretch" gap="$spacing12" pt={children ? '$spacing12' : '$spacing24'}> <Flex row alignSelf="stretch" gap="$spacing12" pt={children ? '$spacing12' : '$spacing24'}>
{rejectText && ( {rejectText && (
<Trace logPress element={ElementName.BackButton} modal={modalName} properties={analyticsProperties}> <Trace logPress element={ElementName.BackButton} modal={modalName} properties={analyticsProperties}>
<Button emphasis="secondary" onPress={onReject ?? onClose}> <Button size={buttonSize} emphasis="secondary" onPress={onReject ?? onClose}>
{rejectText} {rejectText}
</Button> </Button>
</Trace> </Trace>
)} )}
{acknowledgeText && ( {acknowledgeText && (
<Trace logPress element={ElementName.Confirm} modal={modalName} properties={analyticsProperties}> <Trace logPress element={ElementName.Confirm} modal={modalName} properties={analyticsProperties}>
<Button testID={TestID.Confirm} onPress={onAcknowledge}> <Button size={buttonSize} testID={TestID.Confirm} onPress={onAcknowledge}>
{acknowledgeText} {acknowledgeText}
</Button> </Button>
</Trace> </Trace>
......
...@@ -79,7 +79,6 @@ export const uniswapUrls = { ...@@ -79,7 +79,6 @@ export const uniswapUrls = {
swapFeeInfo: createHelpArticleUrl('20131678274957'), swapFeeInfo: createHelpArticleUrl('20131678274957'),
passkeysInfo: createHelpArticleUrl('35522111260173'), passkeysInfo: createHelpArticleUrl('35522111260173'),
smartWalletDelegation: createHelpArticleUrl('36391987158797'), smartWalletDelegation: createHelpArticleUrl('36391987158797'),
smartWalletNetworkCost: createHelpArticleUrl('8370337377805'),
swapProtection: createHelpArticleUrl('18814993155853'), swapProtection: createHelpArticleUrl('18814993155853'),
swapSlippage: createHelpArticleUrl('8643879653261-What-is-Price-Slippage-'), swapSlippage: createHelpArticleUrl('8643879653261-What-is-Price-Slippage-'),
tokenWarning: createHelpArticleUrl('8723118437133-What-are-token-warnings-'), tokenWarning: createHelpArticleUrl('8723118437133-What-are-token-warnings-'),
......
import { useEffect, useState } from 'react' import { useCallback, useEffect, useState } from 'react'
import { getChromeWithThrow } from 'utilities/src/chrome/chrome' import { getChromeWithThrow } from 'utilities/src/chrome/chrome'
import { logger } from 'utilities/src/logger/logger'
import { isExtension } from 'utilities/src/platform' import { isExtension } from 'utilities/src/platform'
import { useAsyncData } from 'utilities/src/react/hooks'
export function useIsChromeWindowFocused(): boolean { export function useIsChromeWindowFocused(): boolean {
const [isFocused, setIsFocused] = useState(true) const [isFocused, setIsFocused] = useState(true)
useEffect(() => { useAsyncData(
useCallback(async () => {
if (!isExtension) { if (!isExtension) {
// This hook is ignored and always returns `true` when not in the Extension.
return undefined return undefined
} }
const chrome = getChromeWithThrow()
const onFocusChangedListener = async (): Promise<void> => { const onFocusChangedListener = async (): Promise<void> => {
const { focused } = await chrome.windows.getCurrent() const { focused } = await chrome.windows.getCurrent()
setIsFocused(focused) setIsFocused(focused)
} }
// Get initial state // We run this on first render to get the initial state.
onFocusChangedListener().catch((error) => { await onFocusChangedListener()
logger.error(error, {
tags: {
file: 'useIsChromeWindowFocused.ts',
function: 'useIsChromeWindowFocused',
},
})
})
const chrome = getChromeWithThrow()
chrome.windows.onFocusChanged.addListener(onFocusChangedListener) chrome.windows.onFocusChanged.addListener(onFocusChangedListener)
// Remove listener when component unmounts
return () => { return () => {
chrome.windows.onFocusChanged.removeListener(onFocusChangedListener) chrome.windows.onFocusChanged.removeListener(onFocusChangedListener)
} }
}, []) }, []),
)
return isFocused return isFocused
} }
......
...@@ -13,7 +13,6 @@ export enum FeatureFlags { ...@@ -13,7 +13,6 @@ export enum FeatureFlags {
Datadog, Datadog,
DisableSwap7702, DisableSwap7702,
EmbeddedWallet, EmbeddedWallet,
FiatOffRamp,
InstantTokenBalanceUpdate, InstantTokenBalanceUpdate,
MonadTestnet, MonadTestnet,
MonadTestnetDown, MonadTestnetDown,
...@@ -59,6 +58,7 @@ export enum FeatureFlags { ...@@ -59,6 +58,7 @@ export enum FeatureFlags {
AATestWeb, AATestWeb,
ConversionTracking, ConversionTracking,
DummyFlagTest, DummyFlagTest,
FiatOffRamp,
GoogleConversionTracking, GoogleConversionTracking,
GqlTokenLists, GqlTokenLists,
LimitsFees, LimitsFees,
...@@ -82,7 +82,6 @@ export const SHARED_FEATURE_FLAG_NAMES = new Map<FeatureFlags, string>([ ...@@ -82,7 +82,6 @@ export const SHARED_FEATURE_FLAG_NAMES = new Map<FeatureFlags, string>([
[FeatureFlags.EmbeddedWallet, 'embedded_wallet'], [FeatureFlags.EmbeddedWallet, 'embedded_wallet'],
[FeatureFlags.EnablePermitMismatchUX, 'enable_permit2_mismatch_ux'], [FeatureFlags.EnablePermitMismatchUX, 'enable_permit2_mismatch_ux'],
[FeatureFlags.ExecuteTransactionV2, 'new_execute_transaction_arch'], [FeatureFlags.ExecuteTransactionV2, 'new_execute_transaction_arch'],
[FeatureFlags.FiatOffRamp, 'fiat_offramp'],
[FeatureFlags.ForceDisableWalletGetCapabilities, 'force_disable_wallet_get_capabilities'], [FeatureFlags.ForceDisableWalletGetCapabilities, 'force_disable_wallet_get_capabilities'],
[FeatureFlags.ForcePermitTransactions, 'force_permit_transactions'], [FeatureFlags.ForcePermitTransactions, 'force_permit_transactions'],
[FeatureFlags.InstantTokenBalanceUpdate, 'instant-token-balance-update'], [FeatureFlags.InstantTokenBalanceUpdate, 'instant-token-balance-update'],
...@@ -110,6 +109,7 @@ export const WEB_FEATURE_FLAG_NAMES = new Map<FeatureFlags, string>([ ...@@ -110,6 +109,7 @@ export const WEB_FEATURE_FLAG_NAMES = new Map<FeatureFlags, string>([
[FeatureFlags.BatchedSwaps, 'batched_swaps'], [FeatureFlags.BatchedSwaps, 'batched_swaps'],
[FeatureFlags.ConversionTracking, 'conversion-tracking'], [FeatureFlags.ConversionTracking, 'conversion-tracking'],
[FeatureFlags.DummyFlagTest, 'dummy_flag_test'], [FeatureFlags.DummyFlagTest, 'dummy_flag_test'],
[FeatureFlags.FiatOffRamp, 'fiat_offramp'],
[FeatureFlags.GoogleConversionTracking, 'google_conversion_tracking'], [FeatureFlags.GoogleConversionTracking, 'google_conversion_tracking'],
[FeatureFlags.GqlTokenLists, 'gql_token_lists'], [FeatureFlags.GqlTokenLists, 'gql_token_lists'],
[FeatureFlags.LimitsFees, 'limits_fees'], [FeatureFlags.LimitsFees, 'limits_fees'],
......
...@@ -17,13 +17,11 @@ export function NetworkCostBanner({ bannerText, url }: NetworkCostBannerProps): ...@@ -17,13 +17,11 @@ export function NetworkCostBanner({ bannerText, url }: NetworkCostBannerProps):
return ( return (
<TouchableArea <TouchableArea
row
centered
borderWidth="$spacing1" borderWidth="$spacing1"
borderColor="$surface3" borderColor="$surface3"
borderRadius="$rounded12" borderRadius="$rounded12"
p="$padding16" p="$padding16"
gap="$gap12" alignSelf="stretch"
onPress={handleOnPress} onPress={handleOnPress}
> >
<Flex row alignItems="center" justifyContent="space-between" gap="$spacing12"> <Flex row alignItems="center" justifyContent="space-between" gap="$spacing12">
......
...@@ -30,6 +30,7 @@ import { ...@@ -30,6 +30,7 @@ import {
} from 'uniswap/src/features/tokens/safetyUtils' } from 'uniswap/src/features/tokens/safetyUtils'
import { useDismissedTokenWarnings } from 'uniswap/src/features/tokens/slice/hooks' import { useDismissedTokenWarnings } from 'uniswap/src/features/tokens/slice/hooks'
import { currencyIdToAddress } from 'uniswap/src/utils/currencyId' import { currencyIdToAddress } from 'uniswap/src/utils/currencyId'
import { isMobileApp } from 'utilities/src/platform'
export interface FoTPercent { export interface FoTPercent {
buyFeePercent?: number buyFeePercent?: number
...@@ -199,7 +200,18 @@ function TokenWarningModalContent({ ...@@ -199,7 +200,18 @@ function TokenWarningModalContent({
<Text variant="body3" color="$neutral3"> <Text variant="body3" color="$neutral3">
<Trans <Trans
i18nKey="common.poweredBy" i18nKey="common.poweredBy"
components={{ name: <BlockaidLogo minHeight={10} minWidth={50} color="$neutral3" /> }} components={{
name: (
<BlockaidLogo
minHeight={10}
minWidth={50}
// Using the "size" prop does not work as expected for non-square icon like this one
// Found that only specifying width fixes all alignment and size issues on mobile
size={isMobileApp ? ({ width: 50 } as { width: number; height: number }) : undefined}
color="$neutral3"
/>
),
}}
/> />
</Text> </Text>
</Flex> </Flex>
......
...@@ -52,7 +52,7 @@ export function NetworkFeeWarning({ ...@@ -52,7 +52,7 @@ export function NetworkFeeWarning({
isMobileApp && ( isMobileApp && (
<NetworkCostBanner <NetworkCostBanner
bannerText={t('smartWallet.banner.networkCost', { chainName: getChainInfo(chainId).label })} bannerText={t('smartWallet.banner.networkCost', { chainName: getChainInfo(chainId).label })}
url={uniswapUrls.helpArticleUrls.smartWalletNetworkCost} url={uniswapUrls.helpArticleUrls.smartWalletDelegation}
/> />
) )
} }
...@@ -123,10 +123,12 @@ function InfoButton({ ...@@ -123,10 +123,12 @@ function InfoButton({
}): JSX.Element | null { }): JSX.Element | null {
if (includesDelegation && isMobileApp) { if (includesDelegation && isMobileApp) {
return ( return (
<Flex mb="$spacing8">
<LearnMoreLink <LearnMoreLink
textVariant={isWeb ? 'body4' : undefined} textVariant={isWeb ? 'body4' : 'buttonLabel3'}
url={uniswapUrls.helpArticleUrls.smartWalletNetworkCost} url={uniswapUrls.helpArticleUrls.networkFeeInfo}
/> />
</Flex>
) )
} }
......
...@@ -311,7 +311,7 @@ export function NetworkCostTooltipClassic({ chainId }: { chainId: UniverseChainI ...@@ -311,7 +311,7 @@ export function NetworkCostTooltipClassic({ chainId }: { chainId: UniverseChainI
logo={<NetworkLogo chainId={chainId} size={16} />} logo={<NetworkLogo chainId={chainId} size={16} />}
/> />
<SwapDetailsTooltip.Description <SwapDetailsTooltip.Description
learnMoreUrl={uniswapUrls.helpArticleUrls.smartWalletNetworkCost} learnMoreUrl={uniswapUrls.helpArticleUrls.networkFeeInfo}
text={t('transaction.networkCost.description')} text={t('transaction.networkCost.description')}
/> />
</SwapDetailsTooltip.Outer> </SwapDetailsTooltip.Outer>
......
...@@ -55,6 +55,7 @@ export function SmartWalletModal({ ...@@ -55,6 +55,7 @@ export function SmartWalletModal({
}: SmartWalletModalProps): JSX.Element { }: SmartWalletModalProps): JSX.Element {
return ( return (
<Modal <Modal
renderBehindTopInset
alignment={alignment} alignment={alignment}
isModalOpen={isOpen} isModalOpen={isOpen}
name={modalName} name={modalName}
...@@ -69,10 +70,10 @@ export function SmartWalletModal({ ...@@ -69,10 +70,10 @@ export function SmartWalletModal({
px={isExtension ? null : '$spacing24'} px={isExtension ? null : '$spacing24'}
mb={isExtension ? null : '$spacing48'} mb={isExtension ? null : '$spacing48'}
gap="$spacing16" gap="$spacing16"
pt={isExtension ? null : video ? '$spacing24' : '$spacing12'}
> >
{video ? video : icon} {video ? video : icon}
<Flex flexDirection="column" alignItems="center" gap="$gap8">
<Flex flexDirection="column" alignItems="center" gap="$spacing8">
<Text variant="subheading2" color="$neutral1"> <Text variant="subheading2" color="$neutral1">
{title} {title}
</Text> </Text>
......
...@@ -16782,6 +16782,7 @@ __metadata: ...@@ -16782,6 +16782,7 @@ __metadata:
react-native-reanimated: 3.16.7 react-native-reanimated: 3.16.7
react-native-svg: 15.10.1 react-native-svg: 15.10.1
react-native-web: 0.19.13 react-native-web: 0.19.13
react-player: 2.16.0
react-qr-code: 2.0.12 react-qr-code: 2.0.12
react-redux: 8.0.5 react-redux: 8.0.5
react-refresh: 0.14.0 react-refresh: 0.14.0
...@@ -24142,7 +24143,7 @@ __metadata: ...@@ -24142,7 +24143,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0, deepmerge@npm:^4.3.1": "deepmerge@npm:^4.0.0, deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0, deepmerge@npm:^4.3.1":
version: 4.3.1 version: 4.3.1
resolution: "deepmerge@npm:4.3.1" resolution: "deepmerge@npm:4.3.1"
checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052
...@@ -34143,6 +34144,13 @@ __metadata: ...@@ -34143,6 +34144,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"load-script@npm:^1.0.0":
version: 1.0.0
resolution: "load-script@npm:1.0.0"
checksum: 8458e3f07b4a86f8d9d66e47a987811491a5d013af23ba7b371c6d3c9dc899885b072ccf65abf7874c10cb197d4975eacd8a7a125bfb38dbbcb267539f5dc1e9
languageName: node
linkType: hard
"loader-runner@npm:^4.2.0": "loader-runner@npm:^4.2.0":
version: 4.3.0 version: 4.3.0
resolution: "loader-runner@npm:4.3.0" resolution: "loader-runner@npm:4.3.0"
...@@ -34893,7 +34901,7 @@ __metadata: ...@@ -34893,7 +34901,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"memoize-one@npm:>=3.1.1 <6, memoize-one@npm:^5.0.0": "memoize-one@npm:>=3.1.1 <6, memoize-one@npm:^5.0.0, memoize-one@npm:^5.1.1":
version: 5.2.1 version: 5.2.1
resolution: "memoize-one@npm:5.2.1" resolution: "memoize-one@npm:5.2.1"
checksum: a3cba7b824ebcf24cdfcd234aa7f86f3ad6394b8d9be4c96ff756dafb8b51c7f71320785fbc2304f1af48a0467cbbd2a409efc9333025700ed523f254cb52e3d checksum: a3cba7b824ebcf24cdfcd234aa7f86f3ad6394b8d9be4c96ff756dafb8b51c7f71320785fbc2304f1af48a0467cbbd2a409efc9333025700ed523f254cb52e3d
...@@ -40760,6 +40768,21 @@ __metadata: ...@@ -40760,6 +40768,21 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"react-player@npm:2.16.0":
version: 2.16.0
resolution: "react-player@npm:2.16.0"
dependencies:
deepmerge: ^4.0.0
load-script: ^1.0.0
memoize-one: ^5.1.1
prop-types: ^15.7.2
react-fast-compare: ^3.0.1
peerDependencies:
react: ">=16.6.0"
checksum: 9cc78a6099fdf06bbb2e1db75aa57461fb152eb6207a00e6e026dde0675b6f4ad02a45cab7b6c18a9f19e001bf9695a5be0cbe7606eca57a0af501ced717fbe9
languageName: node
linkType: hard
"react-popper@npm:2.3.0": "react-popper@npm:2.3.0":
version: 2.3.0 version: 2.3.0
resolution: "react-popper@npm:2.3.0" resolution: "react-popper@npm:2.3.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