Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
interface
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
LuckySwap
interface
Commits
ea3b63f5
Commit
ea3b63f5
authored
Feb 03, 2025
by
Uniswap Labs Service Account
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ci(release): publish latest release
parent
3fb4d7cc
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
119 additions
and
115 deletions
+119
-115
RELEASE
RELEASE
+6
-1
VERSION
VERSION
+1
-1
build.gradle
apps/mobile/android/app/build.gradle
+3
-3
project.pbxproj
apps/mobile/ios/Uniswap.xcodeproj/project.pbxproj
+24
-24
AccountHeader.test.tsx.snap
...onents/accounts/__snapshots__/AccountHeader.test.tsx.snap
+0
-10
ExploreSections.tsx
apps/mobile/src/components/explore/ExploreSections.tsx
+15
-15
handleOffRampReturnLinkSaga.ts
...e/src/features/deepLinking/handleOffRampReturnLinkSaga.ts
+12
-9
FiatOnRampScreen.tsx
apps/mobile/src/screens/FiatOnRampScreen.tsx
+7
-6
useHomeScreenState.tsx
apps/mobile/src/screens/HomeScreen/useHomeScreenState.tsx
+6
-3
hooks.ts
packages/uniswap/src/features/fiatOnRamp/hooks.ts
+31
-19
utils.ts
packages/uniswap/src/features/fiatOnRamp/utils.ts
+2
-0
types.ts
packages/uniswap/src/features/telemetry/types.ts
+3
-7
AnimatedUnitagDisplayName.native.tsx
.../components/accounts/AnimatedUnitagDisplayName.native.tsx
+2
-13
api.ts
packages/wallet/src/features/fiatOnRamp/api.ts
+3
-1
OffRampTransferSummaryItem.tsx
.../SummaryCards/SummaryItems/OffRampTransferSummaryItem.tsx
+1
-1
extractFiatOnRampTransactionDetails.ts
...history/conversion/extractFiatOnRampTransactionDetails.ts
+1
-1
SendReviewDetails.tsx
...llet/src/features/transactions/send/SendReviewDetails.tsx
+2
-1
No files found.
RELEASE
View file @
ea3b63f5
We are back with some small updates! Here’s the latest:
We are back with a new feature:
Fiat Offramp: Users can now sell their crypto back into cash and have it deposit to their bank account, centralized exchange account, and more!
Other changes:
- More robust dapp information on Activity screen
- Reduced onboarding screens for new wallets
- Improved volume-based sorting on our Explore page
- Various bug fixes and performance improvements
\ No newline at end of file
VERSION
View file @
ea3b63f5
extension/1.14.0
\ No newline at end of file
mobile/1.44.1
\ No newline at end of file
apps/mobile/android/app/build.gradle
View file @
ea3b63f5
...
...
@@ -89,9 +89,9 @@ if (isCI && datadogPropertiesAvailable && !isE2E) {
apply
from:
"../../../../node_modules/@datadog/mobile-react-native/datadog-sourcemaps.gradle"
}
def
devVersionName
=
"1.44"
def
betaVersionName
=
"1.44"
def
prodVersionName
=
"1.44"
def
devVersionName
=
"1.44
.1
"
def
betaVersionName
=
"1.44
.1
"
def
prodVersionName
=
"1.44
.1
"
android
{
ndkVersion
rootProject
.
ext
.
ndkVersion
...
...
apps/mobile/ios/Uniswap.xcodeproj/project.pbxproj
View file @
ea3b63f5
...
...
@@ -2230,7 +2230,7 @@
"@executable_path/Frameworks"
,
"@loader_path/Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_ENABLE_DEBUG_INFO
=
INCLUDE_SOURCE
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_DEBUG"
;
...
...
@@ -2283,7 +2283,7 @@
"@executable_path/Frameworks"
,
"@loader_path/Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
schemes.WidgetsCore
;
...
...
@@ -2336,7 +2336,7 @@
"@executable_path/Frameworks"
,
"@loader_path/Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
schemes.WidgetsCore
;
...
...
@@ -2389,7 +2389,7 @@
"@executable_path/Frameworks"
,
"@loader_path/Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
schemes.WidgetsCore
;
...
...
@@ -2427,7 +2427,7 @@
GCC_C_LANGUAGE_STANDARD
=
gnu11
;
GENERATE_INFOPLIST_FILE
=
YES
;
IPHONEOS_DEPLOYMENT_TARGET
=
15.0
;
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_ENABLE_DEBUG_INFO
=
INCLUDE_SOURCE
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_DEBUG"
;
...
...
@@ -2463,7 +2463,7 @@
GCC_C_LANGUAGE_STANDARD
=
gnu11
;
GENERATE_INFOPLIST_FILE
=
YES
;
IPHONEOS_DEPLOYMENT_TARGET
=
15.0
;
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
schemes.WidgetsCoreTests
;
...
...
@@ -2498,7 +2498,7 @@
GCC_C_LANGUAGE_STANDARD
=
gnu11
;
GENERATE_INFOPLIST_FILE
=
YES
;
IPHONEOS_DEPLOYMENT_TARGET
=
15.0
;
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
schemes.WidgetsCoreTests
;
...
...
@@ -2533,7 +2533,7 @@
GCC_C_LANGUAGE_STANDARD
=
gnu11
;
GENERATE_INFOPLIST_FILE
=
YES
;
IPHONEOS_DEPLOYMENT_TARGET
=
15.0
;
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
schemes.WidgetsCoreTests
;
...
...
@@ -2580,7 +2580,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_ENABLE_DEBUG_INFO
=
INCLUDE_SOURCE
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_DEBUG"
;
...
...
@@ -2626,7 +2626,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.uniswap.mobile.widgets
;
...
...
@@ -2672,7 +2672,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.uniswap.mobile.dev.widgets
;
...
...
@@ -2718,7 +2718,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.uniswap.mobile.beta.widgets
;
...
...
@@ -2760,7 +2760,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_ENABLE_DEBUG_INFO
=
INCLUDE_SOURCE
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_DEBUG"
;
...
...
@@ -2803,7 +2803,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.uniswap.mobile.WidgetIntentExtension
;
...
...
@@ -2846,7 +2846,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.uniswap.mobile.dev.WidgetIntentExtension
;
...
...
@@ -2889,7 +2889,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.uniswap.mobile.beta.WidgetIntentExtension
;
...
...
@@ -2925,7 +2925,7 @@
"$(inherited)"
,
"@executable_path/Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
OTHER_LDFLAGS
=
(
"$(inherited)"
,
"-ObjC"
,
...
...
@@ -2963,7 +2963,7 @@
"$(inherited)"
,
"@executable_path/Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
OTHER_LDFLAGS
=
(
"$(inherited)"
,
"-ObjC"
,
...
...
@@ -3164,7 +3164,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_ENABLE_DEBUG_INFO
=
INCLUDE_SOURCE
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_DEBUG"
;
...
...
@@ -3210,7 +3210,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.uniswap.mobile.OneSignalNotificationServiceExtension
;
...
...
@@ -3322,7 +3322,7 @@
"$(inherited)"
,
"@executable_path/Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
OTHER_LDFLAGS
=
(
"$(inherited)"
,
"-ObjC"
,
...
...
@@ -3394,7 +3394,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.uniswap.mobile.beta.OneSignalNotificationServiceExtension
;
...
...
@@ -3506,7 +3506,7 @@
"$(inherited)"
,
"@executable_path/Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
OTHER_LDFLAGS
=
(
"$(inherited)"
,
"-ObjC"
,
...
...
@@ -3578,7 +3578,7 @@
"@executable_path/Frameworks"
,
"@executable_path/../../Frameworks"
,
);
MARKETING_VERSION
=
1.44
;
MARKETING_VERSION
=
1.44
.1
;
MTL_FAST_MATH
=
YES
;
OTHER_SWIFT_FLAGS
=
"$(inherited) -D EXPO_CONFIGURATION_RELEASE"
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.uniswap.mobile.dev.OneSignalNotificationServiceExtension
;
...
...
apps/mobile/src/components/accounts/__snapshots__/AccountHeader.test.tsx.snap
View file @
ea3b63f5
...
...
@@ -208,16 +208,6 @@ exports[`AccountHeader renders correctly 1`] = `
}
>
<View
collapsable={false}
forwardedRef={[Function]}
jestAnimatedStyle={
{
"value": {
"opacity": 0,
"width": 0,
},
}
}
style={
{
"flexDirection": "row",
...
...
apps/mobile/src/components/explore/ExploreSections.tsx
View file @
ea3b63f5
import
{
TokenRankingsResponse
,
Token
Stats
}
from
'
@uniswap/client-explore/dist/uniswap/explore/v1/service_pb
'
import
{
TokenRankingsResponse
,
Token
RankingsStat
}
from
'
@uniswap/client-explore/dist/uniswap/explore/v1/service_pb
'
import
React
,
{
useCallback
,
useEffect
,
useState
}
from
'
react
'
import
{
useTranslation
}
from
'
react-i18next
'
import
{
ListRenderItem
,
ListRenderItemInfo
,
StyleSheet
}
from
'
react-native
'
...
...
@@ -229,24 +229,24 @@ const tokenKey = (token: TokenItemDataWithMetadata, index: number): string => {
}
-
${
index
}
`
}
function
token
StatsToTokenItemData
(
tokenStat
:
TokenStats
):
TokenItemData
|
null
{
const
formattedChain
=
fromGraphQLChain
(
tokenStat
.
chain
)
function
token
RankingStatsToTokenItemData
(
tokenRankingStat
:
TokenRankingsStat
):
TokenItemData
|
null
{
const
formattedChain
=
fromGraphQLChain
(
token
Ranking
Stat
.
chain
)
if
(
!
formattedChain
)
{
return
null
}
return
{
name
:
tokenStat
.
name
??
''
,
logoUrl
:
tokenStat
.
logo
??
''
,
name
:
token
Ranking
Stat
.
name
??
''
,
logoUrl
:
token
Ranking
Stat
.
logo
??
''
,
chainId
:
formattedChain
,
address
:
tokenStat
.
address
,
symbol
:
tokenStat
.
symbol
??
''
,
price
:
tokenStat
.
price
?.
value
,
marketCap
:
tokenStat
.
fullyDilutedValuation
?.
value
,
pricePercentChange24h
:
tokenStat
.
pricePercentChange1Day
?.
value
,
volume24h
:
tokenStat
.
volume1Day
?.
value
,
totalValueLocked
:
token
Stat
.
volume1Day
?.
value
,
address
:
token
Ranking
Stat
.
address
,
symbol
:
token
Ranking
Stat
.
symbol
??
''
,
price
:
token
Ranking
Stat
.
price
?.
value
,
marketCap
:
token
Ranking
Stat
.
fullyDilutedValuation
?.
value
,
pricePercentChange24h
:
token
Ranking
Stat
.
pricePercentChange1Day
?.
value
,
volume24h
:
token
Ranking
Stat
.
volume1Day
?.
value
,
totalValueLocked
:
token
RankingStat
.
totalValueLocked
?.
value
,
}
}
...
...
@@ -290,9 +290,9 @@ function useTokenItems(
const
tokenMetadataDisplayType
=
getTokenMetadataDisplayType
(
orderBy
)
const
topTokens
:
TokenItemDataWithMetadata
[]
|
undefined
=
data
.
tokenRankings
[
orderBy
]?.
tokens
?.
reduce
(
(
acc
:
TokenItemDataWithMetadata
[],
tokenStat
)
=>
{
if
(
tokenStat
)
{
const
tokenItemData
=
token
StatsToTokenItemData
(
token
Stat
)
(
acc
:
TokenItemDataWithMetadata
[],
token
Ranking
Stat
)
=>
{
if
(
token
Ranking
Stat
)
{
const
tokenItemData
=
token
RankingStatsToTokenItemData
(
tokenRanking
Stat
)
if
(
tokenItemData
)
{
acc
.
push
({
tokenItemData
,
tokenMetadataDisplayType
})
}
...
...
apps/mobile/src/features/deepLinking/handleOffRampReturnLinkSaga.ts
View file @
ea3b63f5
...
...
@@ -36,8 +36,6 @@ function* _handleOffRampReturnLink(url: URL) {
throw
new
Error
(
'
Missing externalTransactionId or moonpay data in fiat offramp deep link
'
)
}
sendAnalyticsEvent
(
FiatOffRampEventName
.
FiatOffRampWidgetCompleted
,
{
externalTransactionId
})
let
offRampTransferDetails
:
OffRampTransferDetailsResponse
|
undefined
try
{
...
...
@@ -51,6 +49,7 @@ function* _handleOffRampReturnLink(url: URL) {
}
catch
(
error
)
{
logger
.
error
(
error
,
{
tags
:
{
file
:
'
handleOffRampReturnLinkSaga
'
,
function
:
'
handleOffRampReturnLink
'
},
extra
:
{
url
:
url
.
toString
()
},
})
throw
new
Error
(
'
Failed to fetch offramp transfer details
'
)
}
...
...
@@ -62,6 +61,16 @@ function* _handleOffRampReturnLink(url: URL) {
const
{
tokenAddress
,
baseCurrencyCode
,
baseCurrencyAmount
,
depositWalletAddress
,
logos
,
provider
,
chainId
}
=
offRampTransferDetails
const
analyticsProperties
=
{
cryptoCurrency
:
baseCurrencyCode
,
currencyAmount
:
baseCurrencyAmount
,
serviceProvider
:
provider
,
chainId
,
externalTransactionId
,
}
sendAnalyticsEvent
(
FiatOffRampEventName
.
FiatOffRampWidgetCompleted
,
analyticsProperties
)
const
currencyTradeableAsset
:
TradeableAsset
=
{
address
:
tokenAddress
,
chainId
:
Number
(
chainId
)
as
UniverseChainId
,
...
...
@@ -72,13 +81,7 @@ function* _handleOffRampReturnLink(url: URL) {
name
:
provider
,
logoUrl
:
logos
.
lightLogo
,
onSubmitCallback
:
()
=>
{
sendAnalyticsEvent
(
FiatOffRampEventName
.
FiatOffRampFundsSent
,
{
cryptoCurrency
:
baseCurrencyCode
,
currencyAmount
:
baseCurrencyAmount
,
serviceProvider
:
provider
,
chainId
,
externalTransactionId
,
})
sendAnalyticsEvent
(
FiatOffRampEventName
.
FiatOffRampFundsSent
,
analyticsProperties
)
},
moonpayCurrencyCode
:
baseCurrencyCode
,
meldCurrencyCode
:
baseCurrencyCode
,
...
...
apps/mobile/src/screens/FiatOnRampScreen.tsx
View file @
ea3b63f5
...
...
@@ -398,12 +398,13 @@ export function FiatOnRampScreen({ navigation }: Props): JSX.Element {
const
notAvailableInThisRegion
=
supportedFiatCurrencies
?.
length
===
0
const
{
errorText
}
=
useParseFiatOnRampError
(
!
notAvailableInThisRegion
&&
quotesError
,
meldSupportedFiatCurrency
.
code
,
exceedsBalanceError
,
quotes
?.
length
===
0
,
)
const
{
errorText
}
=
useParseFiatOnRampError
({
error
:
!
notAvailableInThisRegion
&&
quotesError
,
currencyCode
:
meldSupportedFiatCurrency
.
code
,
tokenCode
:
quoteCurrency
.
currencyInfo
?.
currency
.
symbol
,
balanceError
:
exceedsBalanceError
,
noQuotesReturned
:
quotes
?.
length
===
0
,
})
const
onSelectionChange
=
useCallback
(
(
start
:
number
,
end
:
number
)
=>
{
...
...
apps/mobile/src/screens/HomeScreen/useHomeScreenState.tsx
View file @
ea3b63f5
...
...
@@ -51,10 +51,13 @@ export function useHomeScreenState(): {
const
hasNft
=
!!
nftData
?.
nftBalances
?.
edges
.
length
const
hasTokenBalance
=
!!
Object
.
entries
(
balancesById
||
{}).
length
const
hasUsedWalletFromRemote
=
!!
hasTokenBalance
||
!!
hasNft
||
!!
hasActivity
const
hasUsedWalletFromRemote
=
hasTokenBalance
||
hasNft
||
hasActivity
const
dataIsLoading
=
areBalancesLoading
||
areNFTsLoading
||
isActivityLoading
// Note: This is to prevent loading the empty wallet state for an active
// wallet loading tabs for the first time.
const
isTabsDataLoaded
=
!
(
dataIsLoading
&&
hasUsedWalletFromCache
)
const
isTabsDataLoaded
=
hasUsedWalletFromRemote
||
(
!
areBalancesLoading
&&
!
areNFTsLoading
&&
!
isActivityLoading
)
||
hasUsedWalletFromCache
const
hasUsedWallet
=
hasUsedWalletFromCache
||
hasUsedWalletFromRemote
useEffect
(()
=>
{
...
...
packages/uniswap/src/features/fiatOnRamp/hooks.ts
View file @
ea3b63f5
...
...
@@ -273,12 +273,19 @@ export function useFiatOnRampQuotes({
}
}
export
function
useParseFiatOnRampError
(
error
:
unknown
,
currencyCode
:
string
,
balanceError
:
boolean
,
noQuotesReturned
:
boolean
,
):
{
export
function
useParseFiatOnRampError
({
error
,
currencyCode
,
tokenCode
,
balanceError
,
noQuotesReturned
,
}:
{
error
:
unknown
currencyCode
:
string
tokenCode
?:
string
balanceError
:
boolean
noQuotesReturned
:
boolean
}):
{
errorText
:
string
|
undefined
}
{
const
{
t
}
=
useTranslation
()
...
...
@@ -289,28 +296,33 @@ export function useParseFiatOnRampError(
if
(
balanceError
)
{
errorText
=
t
(
'
fiatOffRamp.error.balance
'
)
}
if
(
noQuotesReturned
)
{
errorText
=
t
(
'
fiatOnRamp.error.noQuotes
'
)
}
if
(
!
error
)
{
return
{
errorText
}
}
errorText
=
noQuotesReturned
?
t
(
'
fiatOnRamp.error.noQuotes
'
)
:
t
(
'
fiatOnRamp.error.default
'
)
errorText
=
t
(
'
fiatOnRamp.error.default
'
)
if
(
isFiatOnRampApiError
(
error
))
{
if
(
isInvalidRequestAmountTooLow
(
error
))
{
const
formattedAmount
=
formatNumberOrString
({
value
:
error
.
data
.
context
.
minimumAllowed
,
type
:
NumberType
.
FiatStandard
,
const
formatMinMaxError
=
(
amount
:
number
,
unit
?:
string
):
string
=>
{
return
(
formatNumberOrString
({
value
:
amount
,
type
:
unit
===
'
token
'
?
NumberType
.
TokenTx
:
NumberType
.
FiatStandard
,
currencyCode
,
})
errorText
=
t
(
'
fiatOnRamp.error.min
'
,
{
amount
:
formattedAmount
})
})
+
(
unit
===
'
token
'
?
`
${
tokenCode
}
`
:
''
)
)
}
if
(
isInvalidRequestAmountTooLow
(
error
))
{
const
{
minimumAllowed
,
unit
}
=
error
.
data
.
context
errorText
=
t
(
'
fiatOnRamp.error.min
'
,
{
amount
:
formatMinMaxError
(
minimumAllowed
,
unit
)
})
}
else
if
(
isInvalidRequestAmountTooHigh
(
error
))
{
const
formattedAmount
=
formatNumberOrString
({
value
:
error
.
data
.
context
.
maximumAllowed
,
type
:
NumberType
.
FiatStandard
,
currencyCode
,
})
errorText
=
t
(
'
fiatOnRamp.error.max
'
,
{
amount
:
formattedAmount
})
const
{
maximumAllowed
,
unit
}
=
error
.
data
.
context
errorText
=
t
(
'
fiatOnRamp.error.max
'
,
{
amount
:
formatMinMaxError
(
maximumAllowed
,
unit
)
})
}
}
...
...
packages/uniswap/src/features/fiatOnRamp/utils.ts
View file @
ea3b63f5
...
...
@@ -35,6 +35,7 @@ export interface InvalidRequestAmountTooLow extends FORApiError {
errorName
:
'
InvalidRequestAmountTooLow
'
context
:
{
minimumAllowed
:
number
unit
?:
'
token
'
|
'
fiat
'
}
}
}
...
...
@@ -54,6 +55,7 @@ export interface InvalidRequestAmountTooHigh extends FORApiError {
errorName
:
'
InvalidRequestAmountTooHigh
'
context
:
{
maximumAllowed
:
number
unit
?:
'
token
'
|
'
fiat
'
}
}
}
...
...
packages/uniswap/src/features/telemetry/types.ts
View file @
ea3b63f5
...
...
@@ -306,11 +306,7 @@ export type FORTransactionUpdatedProperties = {
serviceProvider
:
string
}
export
type
FORWidgetCompletedProperties
=
ITraceContext
&
{
externalTransactionId
:
Maybe
<
string
>
}
export
type
FORFundsSentProperties
=
ITraceContext
&
{
export
type
OfframpSendTransactionProperties
=
ITraceContext
&
{
cryptoCurrency
:
string
currencyAmount
:
number
serviceProvider
:
string
...
...
@@ -383,8 +379,8 @@ export type UniverseEventProperties = {
[
FiatOffRampEventName
.
FiatOffRampUnsupportedTokenBack
]:
FORUnsupportedTokenSelectedProperties
[
FiatOffRampEventName
.
FiatOffRampUnsupportedTokenSwap
]:
FORUnsupportedTokenSelectedProperties
[
FiatOffRampEventName
.
FiatOffRampWidgetOpened
]:
FORWidgetOpenedProperties
[
FiatOffRampEventName
.
FiatOffRampWidgetCompleted
]:
FORWidgetCompleted
Properties
[
FiatOffRampEventName
.
FiatOffRampFundsSent
]:
FORFundsSent
Properties
[
FiatOffRampEventName
.
FiatOffRampWidgetCompleted
]:
OfframpSendTransaction
Properties
[
FiatOffRampEventName
.
FiatOffRampFundsSent
]:
OfframpSendTransaction
Properties
[
FiatOnRampEventName
.
FiatOnRampAmountEntered
]:
FORAmountEnteredProperties
[
FiatOnRampEventName
.
FiatOnRampTokenSelected
]:
FORTokenSelectedProperties
[
FiatOnRampEventName
.
FiatOnRampTransactionUpdated
]:
FORTransactionUpdatedProperties
...
...
packages/wallet/src/components/accounts/AnimatedUnitagDisplayName.native.tsx
View file @
ea3b63f5
import
{
SharedEventName
}
from
'
@uniswap/analytics-events
'
import
{
BaseSyntheticEvent
,
memo
,
useCallback
,
useMemo
,
use
Ref
,
use
State
}
from
'
react
'
import
{
BaseSyntheticEvent
,
memo
,
useCallback
,
useMemo
,
useState
}
from
'
react
'
import
{
LayoutChangeEvent
}
from
'
react-native
'
import
{
useDispatch
}
from
'
react-redux
'
import
{
AnimatePresence
,
Flex
,
Text
,
TouchableArea
,
getTokenValue
}
from
'
ui/src
'
...
...
@@ -89,7 +89,6 @@ function _AnimatedUnitagDisplayName({
row
width=
{
viewWidth
}
opacity=
{
isLayoutReady
?
1
:
0
}
animation=
"100ms"
enterStyle=
{
{
opacity
:
0
}
}
exitStyle=
{
{
opacity
:
0
}
}
>
...
...
@@ -146,27 +145,17 @@ function _AnimatedUnitagDisplayName({
export
function
useLayoutWidth
(
pause
=
false
):
{
width
:
number
onLayout
:
(
event
:
LayoutChangeEvent
)
=>
void
remeasure
:
()
=>
void
}
{
const
[
width
,
setWidth
]
=
useState
(
0
)
const
isWidthSet
=
useRef
(
false
)
const
onLayout
=
(
event
:
LayoutChangeEvent
):
void
=>
{
if
(
pause
)
{
return
}
setWidth
(
event
.
nativeEvent
.
layout
.
width
)
if
(
event
.
nativeEvent
.
layout
.
width
>
0
)
{
isWidthSet
.
current
=
true
}
}
const
remeasure
=
useCallback
(()
=>
{
setWidth
(
0
)
isWidthSet
.
current
=
false
},
[])
return
{
width
,
onLayout
,
remeasure
}
return
{
width
,
onLayout
}
}
export
const
AnimatedUnitagDisplayName
=
memo
(
_AnimatedUnitagDisplayName
)
packages/wallet/src/features/fiatOnRamp/api.ts
View file @
ea3b63f5
...
...
@@ -23,7 +23,9 @@ export async function fetchFORTransaction(
forceFetch
:
boolean
,
activeAccountAddress
:
Address
|
null
,
):
Promise
<
FORTransactionDetails
|
undefined
>
{
const
isOffRamp
=
previousTransactionDetails
.
typeInfo
.
type
===
TransactionType
.
LocalOffRamp
const
isOffRamp
=
previousTransactionDetails
.
typeInfo
.
type
===
TransactionType
.
LocalOffRamp
||
previousTransactionDetails
.
typeInfo
.
type
===
TransactionType
.
OffRampSale
const
isRecent
=
dayjs
(
previousTransactionDetails
.
addedTime
).
isAfter
(
dayjs
().
subtract
(
FIAT_ONRAMP_FORCE_FETCH_TX_TIMEOUT
,
'
ms
'
),
)
...
...
packages/wallet/src/features/transactions/SummaryCards/SummaryItems/OffRampTransferSummaryItem.tsx
View file @
ea3b63f5
...
...
@@ -29,7 +29,7 @@ export function OffRampTransferSummaryItem({
<TransactionSummaryLayout
caption={t('fiatOffRamp.summary.total', {
cryptoAmount,
fiatAmount: cryptoSaleAmount,
fiatAmount:
destinationTokenAmount === 0 ? destinationTokenSymbol :
cryptoSaleAmount,
})}
icon={
<LogoWithTxStatus
...
...
packages/wallet/src/features/transactions/history/conversion/extractFiatOnRampTransactionDetails.ts
View file @
ea3b63f5
...
...
@@ -88,7 +88,7 @@ export function extractFORTransactionDetails(
routing
:
Routing
.
CLASSIC
,
id
:
transaction
.
externalSessionId
,
chainId
,
hash
:
transaction
.
cryptoDetails
.
blockchainTransactionId
||
''
,
hash
:
isOffRamp
?
''
:
transaction
.
cryptoDetails
.
blockchainTransactionId
||
''
,
// Don't merge offramp transactions
addedTime
:
new
Date
(
transaction
.
createdAt
).
getTime
(),
status
:
statusToTransactionInfoStatus
(
transaction
.
status
),
from
:
isOffRamp
?
activeAccountAddress
:
transaction
.
cryptoDetails
.
walletAddress
,
...
...
packages/wallet/src/features/transactions/send/SendReviewDetails.tsx
View file @
ea3b63f5
...
...
@@ -90,7 +90,8 @@ export function SendReviewDetails({
onCloseModal
?.()
triggerTransferPendingNotification
()
navigateToAccountActivityList
()
},
[
navigateToAccountActivityList
,
onCloseModal
,
triggerTransferPendingNotification
])
fiatOffRampMetaData
?.
onSubmitCallback
?.()
},
[
navigateToAccountActivityList
,
onCloseModal
,
triggerTransferPendingNotification
,
fiatOffRampMetaData
])
const
transferERC20Callback
=
useSendERC20Callback
(
txId
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment