diff --git a/RELEASE b/RELEASE
index 708484fbe0d..962f6bf660c 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,3 +1,8 @@
-- Onboarding improvements
-- Adds fallback support method for opening the side panel on chrome failure
+Here are the latest updates:
+
+Native Asset Top Up: Easily access our fiat on ramp feature if you don’t have enough native asset on a network to complete a transaction.
+
+Other changes:
+
- Various bug fixes and performance improvements
+- Improved gas estimation for Send transactions
diff --git a/VERSION b/VERSION
index da438b7e9f7..e5142648116 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-extension/1.2.1
\ No newline at end of file
+mobile/1.32
\ No newline at end of file
diff --git a/apps/extension/src/app/PopupApp.tsx b/apps/extension/src/app/PopupApp.tsx
deleted file mode 100644
index cbb527860bf..00000000000
--- a/apps/extension/src/app/PopupApp.tsx
+++ /dev/null
@@ -1,149 +0,0 @@
-import '@tamagui/core/reset.css'
-import 'src/app/Global.css'
-
-import { useEffect } from 'react'
-import { I18nextProvider, useTranslation } from 'react-i18next'
-import { useDispatch } from 'react-redux'
-import { RouterProvider } from 'react-router-dom'
-import { PersistGate } from 'redux-persist/integration/react'
-import { ExtensionStatsigProvider } from 'src/app/StatsigProvider'
-import { GraphqlProvider } from 'src/app/apollo'
-import { ErrorElement } from 'src/app/components/ErrorElement'
-import { TraceUserProperties } from 'src/app/components/Trace/TraceUserProperties'
-import { DappContextProvider } from 'src/app/features/dapp/DappContext'
-import { SentryAppNameTag, initializeSentry, sentryCreateHashRouter } from 'src/app/sentry'
-import { initExtensionAnalytics } from 'src/app/utils/analytics'
-import { getLocalUserId } from 'src/app/utils/storage'
-import { getReduxPersistor, getReduxStore } from 'src/store/store'
-import { Button, Flex, Image, Text } from 'ui/src'
-import { CHROME_LOGO, UNISWAP_LOGO } from 'ui/src/assets'
-import { iconSizes, spacing } from 'ui/src/theme'
-import Trace from 'uniswap/src/features/telemetry/Trace'
-import { ElementName } from 'uniswap/src/features/telemetry/constants'
-import { UnitagUpdaterContextProvider } from 'uniswap/src/features/unitags/context'
-import i18n from 'uniswap/src/i18n/i18n'
-import { ExtensionScreens } from 'uniswap/src/types/screens/extension'
-import { logger } from 'utilities/src/logger/logger'
-import { ErrorBoundary } from 'wallet/src/components/ErrorBoundary/ErrorBoundary'
-import { LocalizationContextProvider } from 'wallet/src/features/language/LocalizationContext'
-import { syncAppWithDeviceLanguage } from 'wallet/src/features/language/slice'
-import { SharedProvider } from 'wallet/src/provider'
-
-getLocalUserId()
- .then((userId) => {
- initializeSentry(SentryAppNameTag.Popup, userId)
- })
- .catch((error) => {
- logger.error(error, {
- tags: { file: 'PopupApp.tsx', function: 'getLocalUserId' },
- })
- })
-
-const router = sentryCreateHashRouter([
- {
- path: '',
- element: ,
- errorElement: ,
- },
-])
-
-function PopupContent(): JSX.Element {
- const { t } = useTranslation()
- const dispatch = useDispatch()
-
- useEffect(() => {
- dispatch(syncAppWithDeviceLanguage())
- }, [dispatch])
-
- const searchParams = new URLSearchParams(window.location.search)
- const tabId = searchParams.get('tabId')
- const windowId = searchParams.get('windowId')
-
- const tabIdNumber = tabId ? Number(tabId) : undefined
- const windowIdNumber = windowId ? Number(windowId) : undefined
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
- {t('extension.popup.chrome.title')}
-
-
- {t('extension.popup.chrome.description')}
-
-
-
-
-
-
-
-
-
-
- )
-}
-
-// TODO WALL-4313 - Backup for some broken chrome.sidePanel.open functionality
-// Consider removing this once the issue is resolved or leaving as fallback
-export default function PopupApp(): JSX.Element {
- // initialize analytics on load
- useEffect(() => {
- initExtensionAnalytics().catch(() => undefined)
- }, [])
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
-}
diff --git a/apps/extension/src/app/navigation/utils.ts b/apps/extension/src/app/navigation/utils.ts
index f690045e889..1ba94376f68 100644
--- a/apps/extension/src/app/navigation/utils.ts
+++ b/apps/extension/src/app/navigation/utils.ts
@@ -36,7 +36,7 @@ export const useExtensionNavigation = (): {
export async function focusOrCreateOnboardingTab(page?: string): Promise {
const extension = await chrome.management.getSelf()
- const tabs = await chrome.tabs.query({ url: `chrome-extension://${extension.id}/onboarding.html*` })
+ const tabs = await chrome.tabs.query({ url: `chrome-extension://${extension.id}/*` })
const tab = tabs[0]
const url = 'onboarding.html#/' + (page ? page : TopLevelRoutes.Onboarding)
@@ -68,44 +68,6 @@ export async function focusOrCreateOnboardingTab(page?: string): Promise {
})
}
-export async function focusOrCreateDappRequestWindow(tabId: number | undefined, windowId: number): Promise {
- const extension = await chrome.management.getSelf()
-
- const window = await chrome.windows.getCurrent()
-
- const tabs = await chrome.tabs.query({ url: `chrome-extension://${extension.id}/popup.html*` })
- const tab = tabs[0]
-
- // Centering within current window
- const height = 410
- const width = 330
- const top = Math.round((window.top ?? 0) + ((window.height ?? height) - height) / 2)
- const left = Math.round((window.left ?? 0) + ((window.width ?? width) - width) / 2)
- let url = `popup.html?windowId=${windowId}`
- if (tabId) {
- url += `&tabId=${tabId}`
- }
-
- if (!tab?.id) {
- await chrome.windows.create({
- url,
- type: 'popup',
- top,
- left,
- width,
- height,
- })
- return
- }
-
- await chrome.tabs.update(tab.id, {
- url,
- active: true,
- highlighted: true,
- })
- await chrome.windows.update(tab.windowId, { focused: true, top, left, width, height })
-}
-
/**
* To avoid opening too many tabs while also ensuring that we don't take over the user's active tab,
* we only update the URL of the active tab if it's already in a specific route of the Uniswap interface.
diff --git a/apps/extension/src/app/sentry.ts b/apps/extension/src/app/sentry.ts
index 513cb535205..33515d8a76c 100644
--- a/apps/extension/src/app/sentry.ts
+++ b/apps/extension/src/app/sentry.ts
@@ -19,7 +19,6 @@ export const enum SentryAppNameTag {
Onboarding = 'onboarding',
ContentScript = 'content-script',
Background = 'background',
- Popup = 'popup',
}
export function initializeSentry(appNameTag: SentryAppNameTag, sentryUserId: string): void {
diff --git a/apps/extension/src/background/utils/chromeSidePanelUtils.ts b/apps/extension/src/background/utils/chromeSidePanelUtils.ts
index 8696d81e4c0..c566362777e 100644
--- a/apps/extension/src/background/utils/chromeSidePanelUtils.ts
+++ b/apps/extension/src/background/utils/chromeSidePanelUtils.ts
@@ -1,4 +1,3 @@
-import { focusOrCreateDappRequestWindow } from 'src/app/navigation/utils'
import { logger } from 'utilities/src/logger/logger'
export async function openSidePanel(tabId: number | undefined, windowId: number): Promise {
@@ -9,10 +8,6 @@ export async function openSidePanel(tabId: number | undefined, windowId: number)
windowId,
})
} catch (error) {
- // TODO WALL-4313 - Backup for some broken chrome.sidePanel.open functionality
- // Consider removing this once the issue is resolved or leaving as fallback
- await focusOrCreateDappRequestWindow(tabId, windowId)
-
logger.error(error, {
tags: {
file: 'background/background.ts',
diff --git a/apps/extension/src/manifest.json b/apps/extension/src/manifest.json
index e107f435782..a7d174c4cf4 100644
--- a/apps/extension/src/manifest.json
+++ b/apps/extension/src/manifest.json
@@ -2,7 +2,7 @@
"manifest_version": 3,
"name": "Uniswap Extension",
"description": "The Uniswap Extension is a self-custody crypto wallet that's built for swapping.",
- "version": "1.2.1",
+ "version": "1.2.0",
"minimum_chrome_version": "116",
"icons": {
"16": "assets/icon16.png",
diff --git a/apps/extension/src/popup.html b/apps/extension/src/popup.html
deleted file mode 100644
index 15cc3f3f894..00000000000
--- a/apps/extension/src/popup.html
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Uniswap Extension
-
-
-
-
-
-
-
-
diff --git a/apps/extension/src/popup/popup.tsx b/apps/extension/src/popup/popup.tsx
deleted file mode 100644
index 8fff4d84eca..00000000000
--- a/apps/extension/src/popup/popup.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-// eslint-disable-next-line @typescript-eslint/triple-slash-reference
-///
-
-import { createRoot } from 'react-dom/client'
-import { OptionalStrictMode } from 'src/app/components/OptionalStrictMode'
-import PopupApp from 'src/app/PopupApp'
-import { initializeSentry, SentryAppNameTag } from 'src/app/sentry'
-import { getLocalUserId } from 'src/app/utils/storage'
-import { initializeReduxStore } from 'src/store/store'
-import { logger } from 'utilities/src/logger/logger'
-;(globalThis as any).regeneratorRuntime = undefined // eslint-disable-line @typescript-eslint/no-explicit-any
-// The globalThis.regeneratorRuntime = undefined addresses a potentially unsafe-eval problem
-// see https://github.com/facebook/regenerator/issues/378#issuecomment-802628326
-
-getLocalUserId()
- .then((userId) => {
- initializeSentry(SentryAppNameTag.Popup, userId)
- })
- .catch((error) => {
- logger.error(error, {
- tags: { file: 'popup.tsx', function: 'getLocalUserId' },
- })
- })
-async function initPopup(): Promise {
- await initializeReduxStore({ readOnly: true })
-
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- const container = document.getElementById('popup-root')!
- const root = createRoot(container)
-
- root.render(
-
-
- ,
- )
-}
-
-initPopup().catch((error) => {
- logger.error(error, {
- tags: {
- file: 'popup.tsx',
- function: 'initPopup',
- },
- })
-})
diff --git a/apps/extension/src/store/store.ts b/apps/extension/src/store/store.ts
index f351b0f3729..d7fcc4cfe1b 100644
--- a/apps/extension/src/store/store.ts
+++ b/apps/extension/src/store/store.ts
@@ -58,7 +58,7 @@ const setupStore = (preloadedState?: PreloadedState): ReturnType
let store: ReturnType | undefined
let persistor: ReturnType | undefined
-export async function initializeReduxStore(args?: { readOnly?: boolean }): Promise<{
+export async function initializeReduxStore(): Promise<{
store: ReturnType
persistor: ReturnType
}> {
@@ -69,12 +69,6 @@ export async function initializeReduxStore(args?: { readOnly?: boolean }): Promi
store = setupStore(oldStore)
persistor = persistStore(store)
- if (args?.readOnly) {
- // This means the store will be initialized with the persisted state from disk, but it won't persist any changes.
- // Only useful for use cases where we don't want to modify the state (for example, a popup window instead of the sidebar).
- persistor.pause()
- }
-
// We wait a few seconds to make sure the store is fully initialized and persisted before deleting the old storage.
// This is needed because otherwise the background script might think the user is not onboarded if it reads the storage while it's being migrated.
if (oldStore) {
diff --git a/apps/extension/webpack.config.js b/apps/extension/webpack.config.js
index c94eea912e1..096cb64fd24 100644
--- a/apps/extension/webpack.config.js
+++ b/apps/extension/webpack.config.js
@@ -172,7 +172,6 @@ module.exports = (env) => {
sidebar: './src/sidebar/sidebar.tsx',
injected: './src/contentScript/injected.ts',
ethereum: './src/contentScript/ethereum.ts',
- popup: './src/popup/popup.tsx',
},
output: {
filename: '[name].js',
diff --git a/apps/mobile/src/app/App.tsx b/apps/mobile/src/app/App.tsx
index 46640688bb3..7c9829a023f 100644
--- a/apps/mobile/src/app/App.tsx
+++ b/apps/mobile/src/app/App.tsx
@@ -93,8 +93,7 @@ if (!__DEV__ && !isDetoxBuild) {
environment: getSentryEnvironment(),
dsn: config.sentryDsn,
attachViewHierarchy: true,
- // DataDog would do this for us now
- enableCaptureFailedRequests: false,
+ enableCaptureFailedRequests: true,
tracesSampleRate: getSentryTracesSamplingRate(),
integrations: [
new Sentry.ReactNativeTracing({
@@ -175,26 +174,24 @@ function App(): JSX.Element | null {
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
)
}
@@ -248,38 +245,40 @@ function AppOuter(): JSX.Element | null {
-
-
-
-
-
-
-
-
- {
- routingInstrumentation.registerNavigationContainer(navigationRef)
- }}
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {
+ routingInstrumentation.registerNavigationContainer(navigationRef)
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/mobile/src/app/modals/AccountSwitcherModal.tsx b/apps/mobile/src/app/modals/AccountSwitcherModal.tsx
index 563f1e1edb0..e020f3a8f65 100644
--- a/apps/mobile/src/app/modals/AccountSwitcherModal.tsx
+++ b/apps/mobile/src/app/modals/AccountSwitcherModal.tsx
@@ -269,7 +269,9 @@ export function AccountSwitcher({ onClose }: { onClose: () => void }): JSX.Eleme
-
+
+
+
diff --git a/apps/mobile/src/app/modals/__snapshots__/AccountSwitcherModal.test.tsx.snap b/apps/mobile/src/app/modals/__snapshots__/AccountSwitcherModal.test.tsx.snap
index 076e03a3860..24db7b7aa3c 100644
--- a/apps/mobile/src/app/modals/__snapshots__/AccountSwitcherModal.test.tsx.snap
+++ b/apps/mobile/src/app/modals/__snapshots__/AccountSwitcherModal.test.tsx.snap
@@ -363,51 +363,57 @@ exports[`AccountSwitcher renders correctly 1`] = `
style={
{
"flexDirection": "column",
- "flexShrink": 1,
+ "maxHeight": NaN,
}
}
>
- ExpoLinearGradient
- }
- bounces={false}
- collapsable={false}
- data={[]}
- getItem={[Function]}
- getItemCount={[Function]}
- jestAnimatedStyle={
+
-
-
-
-
- ExpoLinearGradient
+ ExpoLinearGradient
+
+
+
+ ExpoLinearGradient
+
, 'onPress'> & {
accounts: Account[]
isVisible?: boolean
@@ -26,7 +23,7 @@ type AccountWithPortfolioValue = {
portfolioValue: number | undefined
}
-const ViewOnlyHeader = (): JSX.Element => {
+const ViewOnlyHeaderContent = (): JSX.Element => {
const { t } = useTranslation()
return (
@@ -37,6 +34,19 @@ const ViewOnlyHeader = (): JSX.Element => {
)
}
+enum AccountListItemType {
+ SignerHeader,
+ SignerAccount,
+ ViewOnlyHeader,
+ ViewOnlyAccount,
+}
+
+type AccountListItem =
+ | { type: AccountListItemType.SignerHeader }
+ | { type: AccountListItemType.SignerAccount; account: AccountWithPortfolioValue }
+ | { type: AccountListItemType.ViewOnlyHeader }
+ | { type: AccountListItemType.ViewOnlyAccount; account: AccountWithPortfolioValue }
+
const SignerHeader = (): JSX.Element => {
const { t } = useTranslation()
return (
@@ -107,6 +117,45 @@ export function AccountList({ accounts, onPress, isVisible }: AccountListProps):
[onPress],
)
+ const accountsToRender = useMemo(() => {
+ const items: AccountListItem[] = []
+
+ if (hasSignerAccounts) {
+ items.push({ type: AccountListItemType.SignerHeader })
+ items.push(...signerAccounts.map((account) => ({ type: AccountListItemType.SignerAccount, account })))
+ }
+
+ if (hasViewOnlyAccounts) {
+ items.push({ type: AccountListItemType.ViewOnlyHeader })
+ items.push(...viewOnlyAccounts.map((account) => ({ type: AccountListItemType.ViewOnlyAccount, account })))
+ }
+
+ return items
+ }, [hasSignerAccounts, hasViewOnlyAccounts, signerAccounts, viewOnlyAccounts])
+
+ const renderItem = useCallback(
+ ({ item }: { item: AccountListItem }) => {
+ switch (item.type) {
+ case AccountListItemType.SignerHeader:
+ return
+ case AccountListItemType.ViewOnlyHeader:
+ return
+ case AccountListItemType.SignerAccount:
+ case AccountListItemType.ViewOnlyAccount:
+ return renderAccountCardItem(item.account)
+ }
+ },
+ [renderAccountCardItem],
+ )
+
+ const keyExtractor = useCallback(
+ (item: AccountListItem, index: number) =>
+ item.type === AccountListItemType.SignerAccount || item.type === AccountListItemType.ViewOnlyAccount
+ ? item.account.account.address
+ : item.type.toString() + index,
+ [],
+ )
+
return (
{/* TODO(MOB-646): attempt to switch gradients to react-native-svg#LinearGradient and avoid new clear color */}
@@ -116,24 +165,7 @@ export function AccountList({ accounts, onPress, isVisible }: AccountListProps):
start={{ x: 0, y: 1 }}
style={ListSheet.topGradient}
/>
- = MIN_ACCOUNTS_TO_ENABLE_SCROLL}
- showsVerticalScrollIndicator={false}
- >
- {hasSignerAccounts && (
- <>
-
- {signerAccounts.map(renderAccountCardItem)}
- >
- )}
- {hasViewOnlyAccounts && (
- <>
-
- {viewOnlyAccounts.map(renderAccountCardItem)}
- >
- )}
-
+
ExpoLinearGradient
-
-
-
-
-
- }
- bounces={false}
collapsable={false}
- data={[]}
+ data={
+ [
+ {
+ "type": 0,
+ },
+ {
+ "account": {
+ "account": {
+ "address": "0x82D56A352367453f74FC0dC7B071b311da373Fa6",
+ "backups": [
+ "cloud",
+ ],
+ "derivationIndex": 0,
+ "mnemonicId": "0x82D56A352367453f74FC0dC7B071b311da373Fa6",
+ "name": "Test Account",
+ "timeImportedMs": 10,
+ "type": "signerMnemonic",
+ },
+ "isPortfolioValueLoading": false,
+ "portfolioValue": 55,
+ },
+ "type": 1,
+ },
+ ]
+ }
getItem={[Function]}
getItemCount={[Function]}
- jestAnimatedStyle={
- {
- "value": {},
- }
- }
+ handlerTag={1}
+ handlerType="NativeViewGestureHandler"
keyExtractor={[Function]}
- keyboardShouldPersistTaps="always"
onContentSizeChange={[Function]}
+ onGestureHandlerEvent={[Function]}
+ onGestureHandlerStateChange={[Function]}
onLayout={[Function]}
onMomentumScrollBegin={[Function]}
onMomentumScrollEnd={[Function]}
@@ -47,18 +53,26 @@ exports[`AccountList renders without error 1`] = `
onScrollEndDrag={[Function]}
removeClippedSubviews={false}
renderItem={[Function]}
- scrollEnabled={false}
- scrollEventThrottle={16}
- sentry-label="VirtualizedList"
- showsHorizontalScrollIndicator={false}
- showsVerticalScrollIndicator={false}
+ renderScrollComponent={[Function]}
+ scrollEventThrottle={0.0001}
stickyHeaderIndices={[]}
viewabilityConfigCallbackPairs={[]}
+ waitFor={
+ [
+ {
+ "current": null,
+ },
+ {
+ "current": null,
+ },
+ ]
+ }
>
+
+
{
- setShowWarningModal(false)
+ setShowBuyNativeTokenModal(false)
}}
/>
)}
diff --git a/packages/ui/src/assets/index.ts b/packages/ui/src/assets/index.ts
index d2c90774a49..19513d3d9d6 100644
--- a/packages/ui/src/assets/index.ts
+++ b/packages/ui/src/assets/index.ts
@@ -21,7 +21,6 @@ export const AVATARS_LIGHT = require('./misc/avatars-light.png')
export const AVATARS_DARK = require('./misc/avatars-dark.png')
export const APP_SCREENSHOT_LIGHT = require('./misc/app-screenshot-light.png')
export const APP_SCREENSHOT_DARK = require('./misc/app-screenshot-dark.png')
-export const CHROME_LOGO = require('./logos/png/chrome-logo.png')
export const DOT_GRID = require('./misc/dot-grid.png')
export const UNITAGS_BANNER_VERTICAL_LIGHT = require('./graphics/unitags-banner-v-light.png')
export const UNITAGS_BANNER_VERTICAL_DARK = require('./graphics/unitags-banner-v-dark.png')
diff --git a/packages/ui/src/assets/logos/png/chrome-logo.png b/packages/ui/src/assets/logos/png/chrome-logo.png
deleted file mode 100644
index e1ef3e9105e..00000000000
Binary files a/packages/ui/src/assets/logos/png/chrome-logo.png and /dev/null differ
diff --git a/packages/ui/src/theme/fonts.ts b/packages/ui/src/theme/fonts.ts
index e9c33fb7cc9..7aa22ca8031 100644
--- a/packages/ui/src/theme/fonts.ts
+++ b/packages/ui/src/theme/fonts.ts
@@ -2,7 +2,6 @@
// eslint-disable-next-line no-restricted-imports
import { createFont, isWeb } from '@tamagui/core'
import { needsSmallFont } from 'ui/src/utils/needs-small-font'
-import { isInterface } from 'utilities/src/platform'
// TODO(EXT-148): remove this type and use Tamagui's FontTokens
export type TextVariantTokens = keyof typeof fonts
@@ -48,9 +47,9 @@ const MEDIUM_WEIGHT = '500'
const MEDIUM_WEIGHT_WEB = '535'
const defaultWeights = {
- book: isInterface ? BOOK_WEIGHT_WEB : BOOK_WEIGHT,
- true: isInterface ? BOOK_WEIGHT_WEB : BOOK_WEIGHT,
- medium: isInterface ? MEDIUM_WEIGHT_WEB : MEDIUM_WEIGHT,
+ book: isWeb ? BOOK_WEIGHT_WEB : BOOK_WEIGHT,
+ true: isWeb ? BOOK_WEIGHT_WEB : BOOK_WEIGHT,
+ medium: isWeb ? MEDIUM_WEIGHT_WEB : MEDIUM_WEIGHT,
}
export const fonts = {
diff --git a/packages/uniswap/src/components/modals/BottomSheetModal.native.tsx b/packages/uniswap/src/components/modals/BottomSheetModal.native.tsx
index 31c0b9f1981..bcff3ff75d2 100644
--- a/packages/uniswap/src/components/modals/BottomSheetModal.native.tsx
+++ b/packages/uniswap/src/components/modals/BottomSheetModal.native.tsx
@@ -19,7 +19,7 @@ import { BottomSheetModalProps } from 'uniswap/src/components/modals/BottomSheet
import { HandleBar } from 'uniswap/src/components/modals/HandleBar'
import Trace from 'uniswap/src/features/telemetry/Trace'
import { useKeyboardLayout } from 'uniswap/src/utils/useKeyboardLayout'
-import { isAndroid, isIOS } from 'utilities/src/platform'
+import { isIOS } from 'utilities/src/platform'
/**
* (android only)
@@ -250,8 +250,6 @@ function BottomSheetModalContents({
{...background}
{...backdrop}
ref={modalRef}
- // Adds vertical pan gesture activate offset to avoid nested scroll gesture handler conflicts on android
- activeOffsetY={isAndroid ? 12 : undefined}
animatedPosition={animatedPosition}
backgroundStyle={backgroundStyle}
containerComponent={containerComponent}
diff --git a/packages/uniswap/src/features/telemetry/constants/trace.ts b/packages/uniswap/src/features/telemetry/constants/trace.ts
index 7131785dee8..138ae9a463e 100644
--- a/packages/uniswap/src/features/telemetry/constants/trace.ts
+++ b/packages/uniswap/src/features/telemetry/constants/trace.ts
@@ -127,7 +127,6 @@ export const ElementName = {
EmptyStateReceive: 'empty-state-receive',
Enable: 'enable',
EtherscanView: 'etherscan-view',
- ExtensionPopupOpenButton: 'extension-popup-open-button',
FiatOnRampTokenSelector: 'fiat-on-ramp-token-selector',
FiatOnRampWidgetButton: 'fiat-on-ramp-widget-button',
FiatOnRampCountryPicker: 'fiat-on-ramp-country-picker',
diff --git a/packages/uniswap/src/i18n/locales/source/en-US.json b/packages/uniswap/src/i18n/locales/source/en-US.json
index 7dfd5698972..d86c2c61c6f 100644
--- a/packages/uniswap/src/i18n/locales/source/en-US.json
+++ b/packages/uniswap/src/i18n/locales/source/en-US.json
@@ -258,9 +258,6 @@
"extension.lock.subtitle": "Enter your password to unlock",
"extension.lock.title": "Welcome back",
"extension.network.notSupported": "Unsupported network",
- "extension.popup.chrome.button": "Open extension",
- "extension.popup.chrome.description": "Complete this action by opening the Uniswap extension.",
- "extension.popup.chrome.title": "Continue in Uniswap",
"extension.settings.password.enter.title": "Enter your current password",
"extension.settings.password.error.wrong": "Wrong password",
"extension.settings.password.placeholder": "Current password",
diff --git a/packages/uniswap/src/i18n/locales/translations/es-ES.json b/packages/uniswap/src/i18n/locales/translations/es-ES.json
index 69d5e0af9a5..4407c60180d 100644
--- a/packages/uniswap/src/i18n/locales/translations/es-ES.json
+++ b/packages/uniswap/src/i18n/locales/translations/es-ES.json
@@ -258,9 +258,6 @@
"extension.lock.subtitle": "Ingresa tu contraseña para desbloquear",
"extension.lock.title": "Bienvenido de nuevo",
"extension.network.notSupported": "Red no compatible",
- "extension.popup.chrome.button": "Abrir extensión",
- "extension.popup.chrome.description": "Completa esta acción abriendo la extensión de Uniswap.",
- "extension.popup.chrome.title": "Continua en Uniswap",
"extension.settings.password.enter.title": "Ingresa tu contraseña actual",
"extension.settings.password.error.wrong": "Contraseña incorrecta",
"extension.settings.password.placeholder": "Contraseña actual",
diff --git a/packages/uniswap/src/i18n/locales/translations/fr-FR.json b/packages/uniswap/src/i18n/locales/translations/fr-FR.json
index 40cc5a43c62..d5d5aeee0d3 100644
--- a/packages/uniswap/src/i18n/locales/translations/fr-FR.json
+++ b/packages/uniswap/src/i18n/locales/translations/fr-FR.json
@@ -258,9 +258,6 @@
"extension.lock.subtitle": "Saisissez votre mot de passe pour déverrouiller",
"extension.lock.title": "Content de vous revoir",
"extension.network.notSupported": "Réseau non pris en charge",
- "extension.popup.chrome.button": "Ouvre l'extension",
- "extension.popup.chrome.description": "Complète cette action en ouvrant l'extension Uniswap.",
- "extension.popup.chrome.title": "Continue sur Uniswap",
"extension.settings.password.enter.title": "Saisissez votre mot de passe actuel",
"extension.settings.password.error.wrong": "Mot de passe incorrect",
"extension.settings.password.placeholder": "Mot de passe actuel",
diff --git a/packages/uniswap/src/types/screens/extension.ts b/packages/uniswap/src/types/screens/extension.ts
index 0ae58c45b5c..f666aa761c1 100644
--- a/packages/uniswap/src/types/screens/extension.ts
+++ b/packages/uniswap/src/types/screens/extension.ts
@@ -6,7 +6,6 @@ export enum HomeTabs {
export enum ExtensionScreens {
Home = 'home',
- PopupOpenExtension = 'PopupOpenExtension',
UnsupportedBrowserScreen = 'UnsupportedBrowserScreen'
}
diff --git a/packages/wallet/src/components/landing/LandingBackground.tsx b/packages/wallet/src/components/landing/LandingBackground.tsx
index bad391d6a0d..363e408c878 100644
--- a/packages/wallet/src/components/landing/LandingBackground.tsx
+++ b/packages/wallet/src/components/landing/LandingBackground.tsx
@@ -19,7 +19,7 @@ import { ONBOARDING_LANDING_DARK, ONBOARDING_LANDING_LIGHT, UNISWAP_LOGO } from
import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex'
import { useDeviceDimensions } from 'ui/src/hooks/useDeviceDimensions'
import { imageSizes } from 'ui/src/theme'
-import { isAndroid, isMobile } from 'utilities/src/platform'
+import { isAndroid } from 'utilities/src/platform'
import { ONE_SECOND_MS } from 'utilities/src/time/time'
import { useTimeout } from 'utilities/src/time/timing'
import {
@@ -355,7 +355,7 @@ export const LandingBackground = ({
if (
// Android Platform.Version is always a number
(isAndroid && typeof Platform.Version === 'number' && Platform.Version < 30) ||
- (language !== Language.English && isMobile)
+ language !== Language.English
) {
return
}
diff --git a/packages/wallet/src/features/language/saga.ts b/packages/wallet/src/features/language/saga.ts
index 88d4ff6eee9..2475e761a19 100644
--- a/packages/wallet/src/features/language/saga.ts
+++ b/packages/wallet/src/features/language/saga.ts
@@ -4,7 +4,6 @@ import { call, put, select, takeLatest } from 'typed-redux-saga'
import i18n from 'uniswap/src/i18n/i18n'
import { getDeviceLocales } from 'utilities/src/device/locales'
import { logger } from 'utilities/src/logger/logger'
-import { isMobile } from 'utilities/src/platform'
import {
Language,
Locale,
@@ -39,9 +38,7 @@ function* appLanguageSaga(action: ReturnType) {
logger.warn('language/saga', 'appLanguageSaga', 'Sync of language setting state and i18n instance failed')
}
- if (isMobile) {
- yield* call(restartAppIfRTL, localeToSet)
- }
+ yield* call(restartAppIfRTL, localeToSet)
}
function getDeviceLanguage(): Language {