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
c46a613c
Commit
c46a613c
authored
Nov 06, 2024
by
Uniswap Labs Service Account
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ci(release): publish latest release
parent
be21e483
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
55 additions
and
64 deletions
+55
-64
RELEASE
RELEASE
+8
-7
VERSION
VERSION
+1
-1
StatsigProvider.tsx
apps/extension/src/app/StatsigProvider.tsx
+5
-1
EditLabelModal.tsx
apps/extension/src/app/features/accounts/EditLabelModal.tsx
+1
-1
ClaimUnitagScreen.tsx
...tension/src/app/features/onboarding/ClaimUnitagScreen.tsx
+1
-1
hooks.test.ts
apps/mobile/src/components/explore/hooks.test.ts
+1
-1
hooks.ts
apps/mobile/src/components/explore/hooks.ts
+1
-1
ClickableWithinGesture.web.tsx
.../components/swipeablecards/ClickableWithinGesture.web.tsx
+1
-5
ActionSheetDropdown.tsx
.../uniswap/src/components/dropdowns/ActionSheetDropdown.tsx
+3
-7
slice.ts
packages/uniswap/src/features/favorites/slice.ts
+0
-1
DecimalPadInput.tsx
...features/transactions/DecimalPadInput/DecimalPadInput.tsx
+1
-1
en-US.json
packages/uniswap/src/i18n/locales/source/en-US.json
+1
-0
LandingBackground.tsx
packages/wallet/src/components/landing/LandingBackground.tsx
+2
-2
AnimatedNumber.tsx
packages/wallet/src/features/portfolio/AnimatedNumber.tsx
+0
-1
ClaimUnitagContent.tsx
packages/wallet/src/features/unitags/ClaimUnitagContent.tsx
+20
-23
EditUnitagProfileContent.tsx
.../wallet/src/features/unitags/EditUnitagProfileContent.tsx
+5
-5
hooks.ts
packages/wallet/src/features/unitags/hooks.ts
+4
-6
No files found.
RELEASE
View file @
c46a613c
### Lots of new updates!
### Bridging
You can now swap your ETH, USDC, and more across 8+ networks! Try it by pressing the banner on your homepage.
### Bridging
### Claim usernames
You can now swap your ETH, USDC, and more across 8+ networks! Try it by pressing the banner on your homepage.
You can now claim a free uni.eth for your wallet address, a readable username that makess it easy to identify your wallet and receive crypto.
### Faster Onboarding
New users can create a wallet lightning fast.
### Multichain Explore
...
...
@@ -16,6 +16,7 @@ Users can now see all 12 chains we support on the Explore page, and can also fil
Users now have access to all ur regular features for this new chain.
### Other changes
:
### Other changes
- Various bug fixes and performance improvements
\ No newline at end of file
- Better redirect handling on fiat onramp
- Various bug fixes and performance improvements
VERSION
View file @
c46a613c
extension/1.8.0
\ No newline at end of file
mobile/1.38
\ No newline at end of file
apps/extension/src/app/StatsigProvider.tsx
View file @
c46a613c
...
...
@@ -4,6 +4,7 @@ import { getStatsigEnvironmentTier } from 'src/app/version'
import
Statsig
from
'
statsig-js
'
// Use JS package for browser
import
{
uniswapUrls
}
from
'
uniswap/src/constants/urls
'
import
{
DUMMY_STATSIG_SDK_KEY
,
StatsigCustomAppValue
}
from
'
uniswap/src/features/gating/constants
'
import
{
FeatureFlags
,
getFeatureFlagName
}
from
'
uniswap/src/features/gating/flags
'
import
{
StatsigOptions
,
StatsigProvider
,
StatsigUser
}
from
'
uniswap/src/features/gating/sdk/statsig
'
import
{
getUniqueId
}
from
'
utilities/src/device/getUniqueId
'
import
{
useAsyncData
}
from
'
utilities/src/react/hooks
'
...
...
@@ -50,7 +51,10 @@ export function ExtensionStatsigProvider({
disableErrorLogging
:
true
,
initCompletionCallback
:
()
=>
{
setInitFinished
(
true
)
initializeDatadog
(
appName
).
catch
(()
=>
undefined
)
const
datadogEnabled
=
Statsig
.
checkGate
(
getFeatureFlagName
(
FeatureFlags
.
Datadog
))
if
(
datadogEnabled
)
{
initializeDatadog
(
appName
).
catch
(()
=>
undefined
)
}
},
}
...
...
apps/extension/src/app/features/accounts/EditLabelModal.tsx
View file @
c46a613c
...
...
@@ -37,7 +37,7 @@ export function EditLabelModal({ isOpen, address, onClose }: EditLabelModalProps
const
[
inputText
,
setInputText
]
=
useState
<
string
>
(
defaultText
)
const
[
isfocused
,
setIsFocused
]
=
useState
(
false
)
const
{
canClaimUnitag
}
=
useCanActiveAddressClaimUnitag
(
address
)
const
{
canClaimUnitag
}
=
useCanActiveAddressClaimUnitag
()
const
unitagsClaimEnabled
=
useFeatureFlag
(
FeatureFlags
.
ExtensionClaimUnitag
)
const
onConfirm
=
useCallback
(
async
()
=>
{
...
...
apps/extension/src/app/features/onboarding/ClaimUnitagScreen.tsx
View file @
c46a613c
...
...
@@ -50,7 +50,7 @@ export function ClaimUnitagScreen(): JSX.Element {
onBack=
{
handleBack
}
onSkip=
{
goToNextStep
}
>
<
Flex
gap=
"$spacing16"
p
t
=
"$spacing24"
width=
"100%"
>
<
Flex
gap=
"$spacing16"
p
y
=
"$spacing24"
width=
"100%"
>
<
ClaimUnitagContent
animateY=
{
false
}
entryPoint=
{
ExtensionOnboardingFlow
.
New
}
...
...
apps/mobile/src/components/explore/hooks.test.ts
View file @
c46a613c
...
...
@@ -206,7 +206,7 @@ describe(useExploreTokenContextMenu, () => {
payload
:
{
name
:
'
swap-modal
'
,
initialState
:
{
exactAmountToken
:
'
0
'
,
exactAmountToken
:
''
,
exactCurrencyField
:
'
input
'
,
[
CurrencyField
.
INPUT
]:
null
,
[
CurrencyField
.
OUTPUT
]:
{
...
...
apps/mobile/src/components/explore/hooks.ts
View file @
c46a613c
...
...
@@ -59,7 +59,7 @@ export function useExploreTokenContextMenu({
const
onPressSwap
=
useCallback
(()
=>
{
const
swapFormState
:
TransactionState
=
{
exactCurrencyField
:
CurrencyField
.
INPUT
,
exactAmountToken
:
'
0
'
,
exactAmountToken
:
''
,
[
CurrencyField
.
INPUT
]:
null
,
[
CurrencyField
.
OUTPUT
]:
{
chainId
,
...
...
packages/ui/src/components/swipeablecards/ClickableWithinGesture.web.tsx
View file @
c46a613c
...
...
@@ -8,9 +8,5 @@ export function ClickableWithinGesture({ onPress, children }: ClickableWithinGes
onPress
?.()
}
return
(
<
TouchableArea
flex=
{
1
}
flexGrow=
{
1
}
onPress=
{
onCloseWithPropagationStop
}
>
{
children
}
</
TouchableArea
>
)
return
<
TouchableArea
onPress=
{
onCloseWithPropagationStop
}
>
{
children
}
</
TouchableArea
>
}
packages/uniswap/src/components/dropdowns/ActionSheetDropdown.tsx
View file @
c46a613c
...
...
@@ -20,7 +20,7 @@ import { BaseCard } from 'uniswap/src/components/BaseCard/BaseCard'
import
{
Scrollbar
}
from
'
uniswap/src/components/misc/Scrollbar
'
import
{
MenuItemProp
}
from
'
uniswap/src/components/modals/ActionSheetModal
'
import
{
useAppInsets
}
from
'
uniswap/src/hooks/useAppInsets
'
import
{
isAndroid
,
isInterface
,
is
MobileApp
,
is
Touchable
}
from
'
utilities/src/platform
'
import
{
isAndroid
,
isInterface
,
isTouchable
}
from
'
utilities/src/platform
'
const
DEFAULT_MIN_WIDTH
=
225
...
...
@@ -178,15 +178,11 @@ const ActionSheetBackdropWithContent = memo(function ActionSheetBackdropWithCont
closeOnSelect
:
boolean
}):
JSX
.
Element
{
/*
We need to add key to Portal
on mobile
, becuase of a bug in tamagui.
We need to add key to Portal, becuase of a bug in tamagui.
Remove when https://linear.app/uniswap/issue/WALL-4817/tamaguis-portal-stops-reacting-to-re-renders is done
*/
const
key
=
useMemo
(
()
=>
(
isMobileApp
?
Math
.
random
()
:
undefined
),
// eslint-disable-next-line react-hooks/exhaustive-deps
[
closeDropdown
,
styles
,
isOpen
,
toggleMeasurements
,
contentProps
,
closeOnSelect
],
)
return
(
<
Portal
key=
{
key
}
zIndex=
{
styles
?.
dropdownZIndex
||
zIndices
.
popover
}
>
<
Portal
key=
{
Math
.
random
()
}
zIndex=
{
styles
?.
dropdownZIndex
||
zIndices
.
popover
}
>
<
AnimatePresence
custom=
{
{
isOpen
}
}
>
{
isOpen
&&
toggleMeasurements
&&
(
<>
...
...
packages/uniswap/src/features/favorites/slice.ts
View file @
c46a613c
...
...
@@ -90,7 +90,6 @@ export const slice = createSlice({
{
payload
:
{
nftKey
,
isSpam
}
}:
PayloadAction
<
{
nftKey
:
string
;
isSpam
?:
boolean
}
>
,
)
=>
{
const
isVisible
=
state
.
nftsVisibility
[
nftKey
]?.
isVisible
??
!
isSpam
state
.
nftsVisibility
[
nftKey
]
=
{
isVisible
:
!
isVisible
}
},
},
...
...
packages/uniswap/src/features/transactions/DecimalPadInput/DecimalPadInput.tsx
View file @
c46a613c
...
...
@@ -83,7 +83,7 @@ export const DecimalPadInput = memo(
useEffect
(()
=>
{
updateDisabledKeys
(
valueRef
.
current
)
// eslint-disable-next-line react-hooks/exhaustive-deps
},
[
valueRef
,
selectionRef
])
},
[
valueRef
,
selectionRef
,
maxDecimals
])
useImperativeHandle
(
ref
,
()
=>
({
updateDisabledKeys
():
void
{
...
...
packages/uniswap/src/i18n/locales/source/en-US.json
View file @
c46a613c
...
...
@@ -2216,6 +2216,7 @@
"unitags.username.error.chars"
:
"Usernames can only contain letters and numbers"
,
"unitags.username.error.max"
:
"Usernames cannot be more than {{number}} characters"
,
"unitags.username.error.min"
:
"Usernames must be at least {{number}} characters"
,
"unitags.username.error.uppercase"
:
"Usernames can only contain lowercase letters and numbers"
,
"uwulink.error.insufficientTokens"
:
"Not enough {{tokenSymbol}} on {{chain}}"
,
"v2.notAvailable"
:
"Uniswap V2 is not available on this network."
,
"v2.switchTo"
:
"Switch to v2"
,
...
...
packages/wallet/src/components/landing/LandingBackground.tsx
View file @
c46a613c
...
...
@@ -15,7 +15,7 @@ import Animated, {
import
{
Circle
,
Defs
,
Svg
}
from
'
react-native-svg
'
import
{
Flex
,
FlexProps
,
Image
,
isWeb
,
useIsDarkMode
}
from
'
ui/src
'
import
{
Jiggly
}
from
'
ui/src/animations
'
import
{
UNISWAP_
APP_ICON
,
UNISWAP_
LOGO
}
from
'
ui/src/assets
'
import
{
UNISWAP_LOGO
}
from
'
ui/src/assets
'
import
{
AnimatedFlex
}
from
'
ui/src/components/layout/AnimatedFlex
'
import
{
imageSizes
}
from
'
ui/src/theme
'
import
{
ONE_SECOND_MS
}
from
'
utilities/src/time/time
'
...
...
@@ -93,7 +93,7 @@ const OnboardingAnimation = ({
<
Image
height=
{
isWeb
?
LOGO_SIZE_WEB
:
imageSizes
.
image100
}
resizeMode=
"contain"
source=
{
isWeb
?
UNISWAP_LOGO
:
UNISWAP_APP_ICON
}
source=
{
UNISWAP_LOGO
}
width=
{
isWeb
?
LOGO_SIZE_WEB
:
imageSizes
.
image100
}
/>
</
Jiggly
>
...
...
packages/wallet/src/features/portfolio/AnimatedNumber.tsx
View file @
c46a613c
...
...
@@ -385,7 +385,6 @@ const ReanimatedNumber = ({
<
Text
allowFontScaling=
{
false
}
style=
{
[
AnimatedFontStyles
.
fontStyle
,
{
height
:
DIGIT_HEIGHT
,
fontFamily
:
fonts
.
buttonLabel1
.
family
}]
}
opacity=
{
0
}
>
{
loadingPlaceholderText
}
</
Text
>
...
...
packages/wallet/src/features/unitags/ClaimUnitagContent.tsx
View file @
c46a613c
...
...
@@ -145,7 +145,7 @@ export function ClaimUnitagContent({
onSetFontSize
(
text
+
UNITAG_SUFFIX_CHARS_ONLY
)
}
setUnitagInputValue
(
text
?.
trim
()
.
toLocaleLowerCase
()
)
setUnitagInputValue
(
text
?.
trim
())
},
[
inputPlaceholder
,
onSetFontSize
],
)
...
...
@@ -327,29 +327,26 @@ export function ClaimUnitagContent({
)
}
</
AnimatePresence
>
</
AnimatedFlex
>
{
unitagAddress
&&
(
<
AnimatedFlex
row
alignItems=
"center"
gap=
"$spacing8"
style=
{
addressViewAnimatedStyle
}
onPress=
{
onPressAddressTooltip
}
<
AnimatedFlex
row
alignItems=
"center"
gap=
"$spacing8"
style=
{
addressViewAnimatedStyle
}
onPress=
{
onPressAddressTooltip
}
>
<
Text
color=
"$neutral2"
variant=
"subheading2"
>
{
shortenAddress
(
unitagAddress
??
ADDRESS_ZERO
)
}
</
Text
>
<
TouchableArea
onPress=
{
():
void
=>
{
dismissNativeKeyboard
()
setShowInfoModal
(
true
)
}
}
>
<
Text
color=
"$neutral2"
variant=
"subheading2"
>
{
shortenAddress
(
unitagAddress
??
ADDRESS_ZERO
)
}
</
Text
>
<
TouchableArea
onPress=
{
():
void
=>
{
dismissNativeKeyboard
()
setShowInfoModal
(
true
)
}
}
>
<
InfoCircleFilled
color=
{
colors
.
neutral3
.
get
()
}
size=
"$icon.20"
/>
</
TouchableArea
>
</
AnimatedFlex
>
)
}
<
Flex
row
gap=
"$spacing8"
minHeight=
{
fonts
.
body2
.
lineHeight
}
mt=
{
unitagAddress
?
undefined
:
'
$spacing24
'
}
>
<
InfoCircleFilled
color=
{
colors
.
neutral3
.
get
()
}
size=
"$icon.20"
/>
</
TouchableArea
>
</
AnimatedFlex
>
<
Flex
row
gap=
"$spacing8"
minHeight=
{
fonts
.
body2
.
lineHeight
}
>
<
Text
color=
"$statusCritical"
textAlign=
"center"
variant=
"body2"
>
{
canClaimUnitagNameError
}
</
Text
>
...
...
packages/wallet/src/features/unitags/EditUnitagProfileContent.tsx
View file @
c46a613c
...
...
@@ -44,7 +44,6 @@ import { useWalletSigners } from 'wallet/src/features/wallet/context'
import
{
useAccount
}
from
'
wallet/src/features/wallet/hooks
'
import
{
DisplayNameType
}
from
'
wallet/src/features/wallet/types
'
const
BIO_TEXT_INPUT_LINES
=
6
const
PADDING_WIDTH
=
isExtension
?
'
$none
'
:
'
$spacing16
'
const
isProfileMetadataEdited
=
(
...
...
@@ -347,14 +346,13 @@ export function EditUnitagProfileContent({
{
!
loading
?
(
<
TextInput
autoCorrect
multiline=
{
isMobileApp
}
maxHeight=
{
fonts
.
body1
.
lineHeight
*
BIO_TEXT_INPUT_LINES
}
rows=
{
BIO_TEXT_INPUT_LINES
}
height=
{
fonts
.
subheading1
.
lineHeight
}
placeholder=
{
t
(
'
unitags.profile.bio.placeholder
'
)
}
value=
{
bioInput
}
verticalAlign=
"top"
onChangeText=
{
setBioInput
}
{
...
inputProps
}
p
t=
"$spacing4"
m
t=
"$spacing4"
/>
)
:
null
}
{
!
loading
?
(
...
...
@@ -364,8 +362,10 @@ export function EditUnitagProfileContent({
autoCapitalize=
"none"
autoComplete=
"off"
autoCorrect=
{
false
}
height=
{
fonts
.
subheading1
.
lineHeight
}
placeholder=
{
t
(
'
unitags.editProfile.placeholder
'
)
}
value=
{
twitterInput
}
verticalAlign=
"top"
onChangeText=
{
onSetTwitterInput
}
{
...
inputProps
}
/>
...
...
packages/wallet/src/features/unitags/hooks.ts
View file @
c46a613c
...
...
@@ -38,14 +38,10 @@ import { SignerManager } from 'wallet/src/features/wallet/signing/SignerManager'
const
MIN_UNITAG_LENGTH
=
3
const
MAX_UNITAG_LENGTH
=
20
export
const
useCanActiveAddressClaimUnitag
=
(
address
?:
Address
,
):
{
export
const
useCanActiveAddressClaimUnitag
=
():
{
canClaimUnitag
:
boolean
}
=>
{
const
activeAddress
=
useActiveAccountAddressWithThrow
()
const
targetAddress
=
address
??
activeAddress
const
{
data
:
deviceId
}
=
useAsyncData
(
getUniqueId
)
const
{
refetchUnitagsCounter
}
=
useUnitagUpdater
()
const
skip
=
!
deviceId
...
...
@@ -54,7 +50,7 @@ export const useCanActiveAddressClaimUnitag = (
params
:
skip
?
undefined
:
{
address
:
target
Address
,
address
:
active
Address
,
deviceId
,
},
})
...
...
@@ -123,6 +119,8 @@ export const getUnitagFormatError = (unitag: string, t: TFunction): string | und
return
t
(
'
unitags.username.error.max
'
,
{
number
:
MAX_UNITAG_LENGTH
,
})
}
else
if
(
unitag
!==
unitag
.
toLowerCase
())
{
return
t
(
'
unitags.username.error.uppercase
'
)
}
else
if
(
!
UNITAG_VALID_REGEX
.
test
(
unitag
))
{
return
t
(
'
unitags.username.error.chars
'
)
}
...
...
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