Skip to content

Commit bfe9329

Browse files
ci(release): publish latest release
1 parent 16fb8a1 commit bfe9329

File tree

914 files changed

+37948
-33841
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

914 files changed

+37948
-33841
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
diff --git a/dist/cjs/createComponent.native.js b/dist/cjs/createComponent.native.js
2+
index ddcbfbc5112e148ff6a33fffd986d763b9f32248..fd8b81f75d0a9fc414fbda5eea02d9405d57a89f 100644
3+
--- a/dist/cjs/createComponent.native.js
4+
+++ b/dist/cjs/createComponent.native.js
5+
@@ -98,7 +98,7 @@ function createComponent(staticConfig) {
6+
defaultProps,
7+
defaultPropsKeyOrder: defaultProps ? Object.keys(defaultProps) : []
8+
});
9+
- var component = /* @__PURE__ */ import_react.default.forwardRef(function(propsIn, forwardedRef) {
10+
+ var OldComponent = /* @__PURE__ */ import_react.default.forwardRef(function(propsIn, forwardedRef) {
11+
var _themeState_state, _hooks_usePropsTransform, _hooks_useEvents, _config_animations, internalID = process.env.NODE_ENV === "development" ? import_react.default.useId() : "";
12+
if (process.env.NODE_ENV === "development" && startVisualizer && (startVisualizer(), startVisualizer = void 0), !hasSetupBaseViews) {
13+
var _hooks_getBaseViews;
14+
@@ -548,6 +548,13 @@ If you meant to do this, you can disable this warning - either change untilMeasu
15+
delete globalThis.willPrint, time.print(), time = null;
16+
}, 50))), content;
17+
});
18+
+ // UNISWAP PATCH: Using key to avoid conditionally calling useAnimation hook
19+
+ var component = /* @__PURE__ */ import_react.default.forwardRef(function(propsIn, forwardedRef) {
20+
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OldComponent, {
21+
+ ref: forwardedRef,
22+
+ ...propsIn,
23+
+ }, "animation" in propsIn ? 1 : 0);
24+
+ });
25+
staticConfig.componentName && (component.displayName = staticConfig.componentName);
26+
var res = component;
27+
(process.env.TAMAGUI_FORCE_MEMO || staticConfig.memo) && (res = /* @__PURE__ */ import_react.default.memo(res)), res.staticConfig = staticConfig;
28+
diff --git a/dist/esm/createComponent.native.js b/dist/esm/createComponent.native.js
29+
index 40466f28af50e22730462702a96e2c8b41969276..92f8f589a72098efc72e58f7cf64fb80e00787d9 100644
30+
--- a/dist/esm/createComponent.native.js
31+
+++ b/dist/esm/createComponent.native.js
32+
@@ -90,7 +90,7 @@ function createComponent(staticConfig) {
33+
defaultProps,
34+
defaultPropsKeyOrder: defaultProps ? Object.keys(defaultProps) : []
35+
});
36+
- var component = /* @__PURE__ */ React.forwardRef(function(propsIn, forwardedRef) {
37+
+ var OldComponent = /* @__PURE__ */ React.forwardRef(function(propsIn, forwardedRef) {
38+
var _themeState_state, _hooks_usePropsTransform, _hooks_useEvents, _config_animations, internalID = process.env.NODE_ENV === "development" ? React.useId() : "";
39+
if (process.env.NODE_ENV === "development" && startVisualizer && (startVisualizer(), startVisualizer = void 0), !hasSetupBaseViews) {
40+
var _hooks_getBaseViews;
41+
@@ -540,6 +540,13 @@ If you meant to do this, you can disable this warning - either change untilMeasu
42+
delete globalThis.willPrint, time.print(), time = null;
43+
}, 50))), content;
44+
});
45+
+ // UNISWAP PATCH: Using key to avoid conditionally calling useAnimation hook
46+
+ var component = /* @__PURE__ */ import_react.default.forwardRef(function(propsIn, forwardedRef) {
47+
+ return /* @__PURE__ */ _jsx(OldComponent, {
48+
+ ref: forwardedRef,
49+
+ ...propsIn,
50+
+ }, "animation" in propsIn ? 1 : 0);
51+
+ });
52+
staticConfig.componentName && (component.displayName = staticConfig.componentName);
53+
var res = component;
54+
(process.env.TAMAGUI_FORCE_MEMO || staticConfig.memo) && (res = /* @__PURE__ */ React.memo(res)), res.staticConfig = staticConfig;

CODEOWNERS

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @uniswap/web-admins

RELEASE

+18-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
1-
Back with some brief updates! This version largely comprised of:
2-
- Various bug fixes
3-
- Improved helpcenter articles
4-
- More localized error boundaries
1+
IPFS hash of the deployment:
2+
- CIDv0: `QmPcDN4EiXdJ2e4eH6cYKAGiYRrAh8W2hgbmDUf5GKzRGi`
3+
- CIDv1: `bafybeias3bjepuy326a66fc6lsm7wr7kfo7v5z7qvjgho2s5ge4s734mk4`
4+
5+
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
6+
7+
You can also access the Uniswap Interface from an IPFS gateway.
8+
**BEWARE**: The Uniswap interface uses [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) to remember your settings, such as which tokens you have imported.
9+
**You should always use an IPFS gateway that enforces origin separation**, or our hosted deployment of the latest release at [app.uniswap.org](https://app.uniswap.org).
10+
Your Uniswap settings are never remembered across different URLs.
11+
12+
IPFS gateways:
13+
- https://bafybeias3bjepuy326a66fc6lsm7wr7kfo7v5z7qvjgho2s5ge4s734mk4.ipfs.dweb.link/
14+
- [ipfs://QmPcDN4EiXdJ2e4eH6cYKAGiYRrAh8W2hgbmDUf5GKzRGi/](ipfs://QmPcDN4EiXdJ2e4eH6cYKAGiYRrAh8W2hgbmDUf5GKzRGi/)
15+
16+
### 5.76.1 (2025-03-13)
17+
18+

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
extension/1.17.0
1+
web/5.76.1

apps/extension/.eslintrc.js

+22-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
const rulesDirPlugin = require('eslint-plugin-rulesdir')
2+
rulesDirPlugin.RULES_DIR = '../../packages/uniswap/eslint_rules'
3+
14
module.exports = {
25
root: true,
3-
extends: ['@uniswap/eslint-config/native'],
6+
extends: ['@uniswap/eslint-config/native-app'],
7+
plugins: ['rulesdir'],
48
ignorePatterns: [
59
'node_modules',
610
'dist',
@@ -20,6 +24,7 @@ module.exports = {
2024
ecmaVersion: 2018,
2125
sourceType: 'module',
2226
},
27+
rules: {},
2328
overrides: [
2429
{
2530
files: ['src/assets/index.ts', 'src/contentScript/index.tsx'],
@@ -38,6 +43,21 @@ module.exports = {
3843
],
3944
},
4045
},
46+
{
47+
files: ['**/contentScript/injected.ts'],
48+
rules: {
49+
'no-restricted-syntax': [
50+
'error',
51+
{
52+
selector: 'CallExpression[callee.object.name="logger"][callee.property.name!=/^(debug)$/]',
53+
message:
54+
'Only logger.debug is allowed in this file. Please handle errors and info logs explicitly using ErrorLog and InfoLog message passing.',
55+
},
56+
],
57+
},
58+
},
4159
],
42-
rules: {},
60+
rules: {
61+
'rulesdir/i18n': 'error',
62+
},
4363
}

apps/extension/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"@uniswap/v3-sdk": "3.25.2",
1717
"@uniswap/v4-sdk": "1.21.2",
1818
"dotenv-webpack": "8.0.1",
19+
"eslint-plugin-rulesdir": "0.2.2",
1920
"ethers": "5.7.2",
2021
"eventemitter3": "5.0.1",
2122
"framer-motion": "10.17.6",

apps/extension/src/app/apollo.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { ApolloProvider } from '@apollo/client'
22
import { PropsWithChildren } from 'react'
33
import { localStorage } from 'redux-persist-webextension-storage'
44
import { getReduxStore } from 'src/store/store'
5-
// eslint-disable-next-line no-restricted-imports
5+
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
66
import { usePersistedApolloClient } from 'wallet/src/data/apollo/usePersistedApolloClient'
77

88
// Extension local storage has 10 MB limit, so we want to be very careful to leave enough space for the redux store + any other data that we might want to store in local storage

apps/extension/src/app/components/ComingSoon.tsx

-33
This file was deleted.

apps/extension/src/app/components/PasswordInput.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { forwardRef } from 'react'
22
import { useTranslation } from 'react-i18next'
33
import { TextInput } from 'react-native'
44
import { Input, InputProps } from 'src/app/components/Input'
5-
import { DeprecatedButton, Flex, FlexProps, IconProps, Text } from 'ui/src'
5+
import { Flex, FlexProps, IconProps, Text, TouchableArea } from 'ui/src'
66
import { Eye, EyeOff } from 'ui/src/components/icons'
77
import { PasswordStrength, getPasswordStrengthTextAndColor } from 'wallet/src/utils/password'
88

@@ -34,16 +34,17 @@ export const PasswordInput = forwardRef<TextInput, PasswordInputProps>(function
3434
<StrengthIndicator strength={passwordStrength} />
3535
) : (
3636
onToggleHideInput && (
37-
<DeprecatedButton
37+
<TouchableArea
3838
backgroundColor="$transparent"
3939
hoverStyle={hoverStyle}
4040
position="absolute"
4141
pressStyle={hoverStyle}
4242
right="$spacing8"
43+
p="$spacing12"
4344
onPress={(): void => onToggleHideInput(!hideInput)}
4445
>
4546
{hideInput ? <Eye {...iconProps} /> : <EyeOff {...iconProps} />}
46-
</DeprecatedButton>
47+
</TouchableArea>
4748
)
4849
)}
4950
</Flex>

apps/extension/src/app/components/Trace/TraceUserProperties.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useAppFiatCurrencyInfo } from 'uniswap/src/features/fiatCurrency/hooks'
55
import { useCurrentLanguage } from 'uniswap/src/features/language/hooks'
66
import { useHideSmallBalancesSetting, useHideSpamTokensSetting } from 'uniswap/src/features/settings/hooks'
77
import { ExtensionUserPropertyName, setUserProperty } from 'uniswap/src/features/telemetry/user'
8-
// eslint-disable-next-line no-restricted-imports
8+
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
99
import { analytics } from 'utilities/src/telemetry/analytics/analytics'
1010
import { useGatingUserPropertyUsernames } from 'wallet/src/features/gating/userPropertyHooks'
1111
import { useActiveAccount, useSignerAccounts, useViewOnlyAccounts } from 'wallet/src/features/wallet/hooks'

apps/extension/src/app/components/loading/LoadingSpinner.tsx

-28
This file was deleted.

apps/extension/src/app/components/loading/SelectWalletSkeleton.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { SkeletonBox } from 'src/app/components/loading/SkeletonBox'
22
import { Flex } from 'ui/src'
3-
import { WALLET_PREVIEW_CARD_HEIGHT } from 'wallet/src/components/WalletPreviewCard/WalletPreviewCard'
3+
import { WALLET_PREVIEW_CARD_MIN_HEIGHT } from 'wallet/src/components/WalletPreviewCard/WalletPreviewCard'
44

55
export function SelectWalletsSkeleton({ repeat = 3 }: { repeat?: number }): JSX.Element {
66
return (
@@ -20,7 +20,7 @@ function WalletSkeleton({ opacity }: { opacity: number }): JSX.Element {
2020
borderColor="$surface3"
2121
borderRadius="$rounded20"
2222
borderWidth="$spacing1"
23-
height={WALLET_PREVIEW_CARD_HEIGHT}
23+
height={WALLET_PREVIEW_CARD_MIN_HEIGHT}
2424
justifyContent="flex-start"
2525
opacity={opacity}
2626
overflow="hidden"

apps/extension/src/app/components/loading/SkeletonBox.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ export function SkeletonBox({
1212
height: number | string
1313
borderRadius?: string
1414
}): JSX.Element {
15+
// eslint-disable-next-line react/forbid-elements
1516
return <div className="skeleton-box" style={{ width, height, borderRadius }} />
1617
}

apps/extension/src/app/components/modal/InfoModal.tsx

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ReactNode } from 'react'
2-
import { Anchor, DeprecatedButton, Flex, Text, TouchableArea, useSporeColors } from 'ui/src'
2+
import { Anchor, Button, ButtonEmphasis, Flex, Text, TouchableArea, useSporeColors } from 'ui/src'
33
import { X } from 'ui/src/components/icons'
44
import { zIndexes } from 'ui/src/theme'
55
import { Modal } from 'uniswap/src/components/modals/Modal'
@@ -14,7 +14,7 @@ export interface ModalProps {
1414
title: string
1515
description: string
1616
buttonText: string
17-
buttonTheme?: 'primary' | 'secondary' | 'tertiary'
17+
buttonEmphasis?: ButtonEmphasis
1818
onButtonPress?: () => void
1919
linkText?: string
2020
linkUrl?: string
@@ -29,7 +29,7 @@ export function InfoModal({
2929
title,
3030
description,
3131
buttonText,
32-
buttonTheme,
32+
buttonEmphasis,
3333
onButtonPress,
3434
linkText,
3535
linkUrl,
@@ -60,9 +60,11 @@ export function InfoModal({
6060
{description}
6161
</Text>
6262
</Flex>
63-
<DeprecatedButton size="medium" theme={buttonTheme} width="100%" onPress={onButtonPress}>
64-
{buttonText}
65-
</DeprecatedButton>
63+
<Flex row alignSelf="stretch">
64+
<Button size="medium" emphasis={buttonEmphasis} onPress={onButtonPress}>
65+
{buttonText}
66+
</Button>
67+
</Flex>
6668
{linkText && linkUrl && (
6769
<Anchor href={linkUrl} lineHeight={16} p="$spacing12" target="_blank" textDecorationLine="none">
6870
<Text color="$neutral2" textAlign="center" variant="buttonLabel3">

apps/extension/src/app/core/PopupApp.tsx

+17-14
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { ErrorElement } from 'src/app/components/ErrorElement'
99
import { BaseAppContainer } from 'src/app/core/BaseAppContainer'
1010
import { DatadogAppNameTag } from 'src/app/datadog'
1111
import { initExtensionAnalytics } from 'src/app/utils/analytics'
12-
import { DeprecatedButton, Flex, Image, Text } from 'ui/src'
12+
import { Button, Flex, Image, Text } from 'ui/src'
1313
import { CHROME_LOGO, UNISWAP_LOGO } from 'ui/src/assets'
1414
import { iconSizes, spacing } from 'ui/src/theme'
1515
import { syncAppWithDeviceLanguage } from 'uniswap/src/features/settings/slice'
@@ -75,19 +75,22 @@ function PopupContent(): JSX.Element {
7575
<Flex fill />
7676

7777
<Trace logPress element={ElementName.ExtensionPopupOpenButton}>
78-
<DeprecatedButton
79-
theme="primary"
80-
width="100%"
81-
onPress={async () => {
82-
if (windowIdNumber) {
83-
// eslint-disable-next-line security/detect-non-literal-fs-filename
84-
await chrome.sidePanel.open({ tabId: tabIdNumber, windowId: windowIdNumber })
85-
window.close()
86-
}
87-
}}
88-
>
89-
{t('extension.popup.chrome.button')}
90-
</DeprecatedButton>
78+
<Flex>
79+
<Button
80+
variant="branded"
81+
emphasis="primary"
82+
size="medium"
83+
width="100%"
84+
onPress={async () => {
85+
if (windowIdNumber) {
86+
await chrome.sidePanel.open({ tabId: tabIdNumber, windowId: windowIdNumber })
87+
window.close()
88+
}
89+
}}
90+
>
91+
{t('extension.popup.chrome.button')}
92+
</Button>
93+
</Flex>
9194
</Trace>
9295
</Flex>
9396
</Trace>

apps/extension/src/app/features/accounts/AccountItem.tsx

+10-16
Original file line numberDiff line numberDiff line change
@@ -160,31 +160,25 @@ export function AccountItem({ address, onAccountSelect, balanceUSD }: AccountIte
160160
size={iconSizes.icon40}
161161
variant="subheading2"
162162
/>
163-
<Flex>
164-
<Text
165-
$group-hover={{ opacity: 0 }}
166-
color="$neutral2"
167-
opacity={1}
168-
position="absolute"
169-
right={0}
170-
top="50%"
171-
transform="translateY(-50%)"
172-
variant="body3"
173-
>
174-
{formattedBalance}
175-
</Text>
176-
<ContextMenu closeOnClick itemId={address} menuOptions={menuOptions} onLeftClick>
163+
<ContextMenu closeOnClick itemId={address} menuOptions={menuOptions} onLeftClick>
164+
<Flex centered>
165+
<Text $group-hover={{ opacity: 0 }} color="$neutral2" opacity={1} variant="body3">
166+
{formattedBalance}
167+
</Text>
177168
<Flex
178169
$group-hover={{ opacity: 1 }}
179170
borderRadius="$roundedFull"
180171
hoverStyle={{ backgroundColor: '$surface2Hovered' }}
181172
opacity={0}
173+
position="absolute"
182174
p="$spacing4"
175+
right={0}
176+
top={0}
183177
>
184178
<Ellipsis color="$neutral2" size="$icon.16" />
185179
</Flex>
186-
</ContextMenu>
187-
</Flex>
180+
</Flex>
181+
</ContextMenu>
188182
</Flex>
189183
</TouchableArea>
190184
</>

0 commit comments

Comments
 (0)