Skip to content

Commit

Permalink
ci(release): publish latest release
Browse files Browse the repository at this point in the history
  • Loading branch information
hello-happy-puppy committed May 22, 2024
1 parent 6f70e0b commit 12e3725
Show file tree
Hide file tree
Showing 524 changed files with 21,051 additions and 39,018 deletions.
Binary file modified .yarn/patches/lightweight-charts-npm-4.1.1-01f161d9b6.patch
Binary file not shown.
53 changes: 46 additions & 7 deletions RELEASE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
IPFS hash of the deployment:
- CIDv0: `QmTpccVs1zJ53DxsUVGfYDtekJLEkYkcz7ytv7ztQLAQoK`
- CIDv1: `bafybeicrorjzrhlzqcfsojgjsfofublb2gz6s3nl7v2r2vefkxe5ws7w6i`
- CIDv0: `QmSR8nYexuW3tYLMY62XR3PCG7tcT9QWpeVkHNX6wnZn3p`
- CIDv1: `bafybeib4stith4o7l5dyd5uejt25qoxfndl57qj2gfc5sgpsmpe6lcb3y4`

The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).

Expand All @@ -10,15 +10,54 @@ You can also access the Uniswap Interface from an IPFS gateway.
Your Uniswap settings are never remembered across different URLs.

IPFS gateways:
- https://bafybeicrorjzrhlzqcfsojgjsfofublb2gz6s3nl7v2r2vefkxe5ws7w6i.ipfs.dweb.link/
- https://bafybeicrorjzrhlzqcfsojgjsfofublb2gz6s3nl7v2r2vefkxe5ws7w6i.ipfs.cf-ipfs.com/
- [ipfs://QmTpccVs1zJ53DxsUVGfYDtekJLEkYkcz7ytv7ztQLAQoK/](ipfs://QmTpccVs1zJ53DxsUVGfYDtekJLEkYkcz7ytv7ztQLAQoK/)
- https://bafybeib4stith4o7l5dyd5uejt25qoxfndl57qj2gfc5sgpsmpe6lcb3y4.ipfs.dweb.link/
- https://bafybeib4stith4o7l5dyd5uejt25qoxfndl57qj2gfc5sgpsmpe6lcb3y4.ipfs.cf-ipfs.com/
- [ipfs://QmSR8nYexuW3tYLMY62XR3PCG7tcT9QWpeVkHNX6wnZn3p/](ipfs://QmSR8nYexuW3tYLMY62XR3PCG7tcT9QWpeVkHNX6wnZn3p/)

### 5.28.1 (2024-05-22)
## 5.29.0 (2024-05-22)


### Features

* **web:** [multichain] show limits page in disabled state (#8164) df50ab0
* **web:** add PDP rich link previews (#8003) 564b6e1
* **web:** avoid fetching redundant on-chain receipts (#7508) 0cc8511
* **web:** unicon v2 education label (#8339) 1487fbd
* **web:** update wallet connect modal's color mode with app theme (#7993) 38a9308


### Bug Fixes

* **web:** lowercase unicon flag 626ec60
* **web:** add null check to OSCollectionsFetcher (#8188) e5077c0
* **web:** Allow viewing pool mgmt pages when disconnected (#8239) 0ac09da
* **web:** change gap on landing page (#8175) f98a7e8
* **web:** change You pay and You receive to Buy and Sell (#8198) 601d1d9
* **web:** chart dot grid size (#8085) cf94701
* **web:** check client chain for undefined (#8215) 03697e7
* **web:** check for supported network on pools page (#8224) 5c7d58d
* **web:** filtering out spam on send (#8386) (#8405) 2775043
* **web:** fix limits price parsing bug in different locales (#8199) b9613d9
* **web:** fix SEO metatags (#8286) c294e33
* **web:** hotfixing mouseover bug (#8402) 8c5cf28
* **web:** lowercase unicon flag 02dcbf7
* **web:** prevent connection from hanging when iframed - staging (#8394) 80ed62c
* **web:** set initial user state in cypress tests using localStorage (#8189) 941d8fe
* **web:** Show unsupported network in navbar (#8181) 7746ac4
* **web:** support multichain input params (#8250) 110976e
* **web:** window.ethereum fallback on mobile [prod] (#8261) 8b791cc


### Tests

* **web:** remove explicit blocknumbers (#8162) 4a83a6f


### Code Refactoring

* **web:** refactor NFT sell flow to use wagmi (#7636) 2ebaf2c
* **web:** screen size hooks (#8100) 9593763
* **web:** Use wagmi for add/remove liquidity and collecting fees (#7641) 6448ae2
* **web:** use wagmi for NFT Buys (#7633) f472ce0
* **web:** Use wagmi for Swap and Limit Order flow (#7779) 832d7ff


2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
web/5.28.1
web/5.29.0
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,11 @@ class RNEthersRSModule(reactContext: ReactApplicationContext) : ReactContextBase
override fun getName() = "RNEthersRS"

@ReactMethod fun getMnemonicIds(promise: Promise) {
promise.resolve(ethersRs.mnemonicIds)
val array = WritableNativeArray()
ethersRs.mnemonicIds.forEach {
array.pushString(it)
}
promise.resolve(array)
}

@ReactMethod fun importMnemonic(mnemonic: String, promise: Promise) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ class RnEthersRs(applicationContext: Context) {
)
}

val mnemonicIds: Array<String>
val mnemonicIds: List<String>
get() = keychain.all.keys.map {
key -> key.replace(ENTIRE_MNEMONIC_PREFIX, "")
}.toTypedArray()
}

/**
* Imports a mnemonic and returns the associated address.
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/e2e/usecases/CreateNewWallet.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { by, element, expect } from 'detox'
import { TestWallet } from 'e2e/utils/fixtures'
import { ElementName } from 'wallet/src/telemetry/constants'
import { ElementName } from 'uniswap/src/features/telemetry/constants'

export function CreateNewWallet(): void {
it('creates a new wallet', async () => {
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/e2e/usecases/onboarding/CreateNewWallet.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { by, element, expect } from 'detox'
import { TestWallet } from 'e2e/utils/fixtures'
import { ElementName } from 'wallet/src/telemetry/constants'
import { ElementName } from 'uniswap/src/features/telemetry/constants'

export async function CreateNewWallet(): Promise<void> {
// Selects "Create a new wallet" option on the landing screen
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/e2e/usecases/onboarding/ImportWallet.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { by, element, expect } from 'detox'
import { TestWallet } from 'e2e/utils/fixtures'
import { ElementName } from 'wallet/src/telemetry/constants'
import { ElementName } from 'uniswap/src/features/telemetry/constants'

export async function ImportWallet(): Promise<void> {
// Selects "Add an existing wallet" option on the landing screen
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/e2e/usecases/onboarding/WatchWallet.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { by, element, expect } from 'detox'
import { TestWatchedWallet } from 'e2e/utils/fixtures'
import { ElementName } from 'wallet/src/telemetry/constants'
import { ElementName } from 'uniswap/src/features/telemetry/constants'

export async function WatchWallet(): Promise<void> {
// Selects "Add an existing wallet" option on the landing screen
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/e2e/usecases/swap/SwapBasicInteractions.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { by, element, expect } from 'detox'
import { TestWatchedWallet } from 'e2e/utils/fixtures'
import { ElementName } from 'wallet/src/telemetry/constants'
import { ElementName } from 'uniswap/src/features/telemetry/constants'

export async function SwapBasicInteractions(): Promise<void> {
// Navigate to swap screen
Expand Down
5 changes: 1 addition & 4 deletions apps/mobile/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"link:assets": "react-native-asset",
"graphql:generate:swift": "cd ios && ./Pods/Apollo/apollo-ios-cli generate",
"hardhat": "hardhat node",
"check:circular": "../../scripts/check-circular-imports.sh ./src/app/App.tsx 8",
"check:circular": "../../scripts/check-circular-imports.sh ./src/app/App.tsx 7",
"ios": "yarn ios:prebuild && SKIP_BUNDLING=1 react-native run-ios",
"ios:prebuild": "yarn graphql:generate:swift && cd ios/WidgetsCore/MobileSchema && rm -rf !(README.md) && cd ../../.. && yarn graphql:generate:swift && yarn env:local:copy:swift",
"ios:smol": "SKIP_BUNDLING=1 react-native run-ios --simulator=\"iPhone SE (3rd generation)\"",
Expand Down Expand Up @@ -131,7 +131,6 @@
"react-native-pager-view": "6.0.1",
"react-native-permissions": "3.6.0",
"react-native-reanimated": "3.8.1",
"react-native-restart": "0.0.27",
"react-native-safe-area-context": "4.9.0",
"react-native-screens": "3.30.1",
"react-native-splash-screen": "3.3.0",
Expand Down Expand Up @@ -184,12 +183,10 @@
"postinstall-postinstall": "2.1.0",
"react-devtools": "4.28.0",
"react-dom": "18.2.0",
"react-native-apollo-devtools-client": "1.0.4",
"react-native-asset": "2.1.1",
"react-native-clean-project": "4.0.1",
"react-native-dotenv": "3.2.0",
"react-native-flipper": "0.212.0",
"react-native-mmkv-flipper-plugin": "1.0.0",
"react-native-monorepo-tools": "1.2.1",
"react-native-svg-transformer": "1.3.0",
"react-test-renderer": "18.2.0",
Expand Down
26 changes: 18 additions & 8 deletions apps/mobile/src/app/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,34 @@ import { ApolloProvider } from '@apollo/client'
import { BottomSheetModalProvider } from '@gorhom/bottom-sheet'
import * as Sentry from '@sentry/react-native'
import { PerformanceProfiler, RenderPassReport } from '@shopify/react-native-performance'
import { MMKVWrapper } from 'apollo3-cache-persist'
import { PropsWithChildren, default as React, StrictMode, useCallback, useEffect } from 'react'
import { I18nextProvider } from 'react-i18next'
import { LogBox, NativeModules, StatusBar } from 'react-native'
import appsFlyer from 'react-native-appsflyer'
import { getUniqueId } from 'react-native-device-info'
import { GestureHandlerRootView } from 'react-native-gesture-handler'
import { MMKV } from 'react-native-mmkv'
import { SafeAreaProvider } from 'react-native-safe-area-context'
import { enableFreeze } from 'react-native-screens'
import { PersistGate } from 'redux-persist/integration/react'
import { ErrorBoundary } from 'src/app/ErrorBoundary'
import { MobileWalletNavigationProvider } from 'src/app/MobileWalletNavigationProvider'
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
import { AppModals } from 'src/app/modals/AppModals'
import { NavigationContainer } from 'src/app/navigation/NavigationContainer'
import { useIsPartOfNavigationTree } from 'src/app/navigation/hooks'
import { AppStackNavigator } from 'src/app/navigation/navigation'
import { persistor, store } from 'src/app/store'
import Trace from 'src/components/Trace/Trace'
import { TraceUserProperties } from 'src/components/Trace/TraceUserProperties'
import { OfflineBanner } from 'src/components/banners/OfflineBanner'
// eslint-disable-next-line no-restricted-imports
import { usePersistedApolloClient } from 'src/data/usePersistedApolloClient'
import { initAppsFlyer } from 'src/features/analytics/appsflyer'
import { LockScreenContextProvider } from 'src/features/authentication/lockScreenContext'
import { BiometricContextProvider } from 'src/features/biometrics/context'
import { NotificationToastWrapper } from 'src/features/notifications/NotificationToastWrapper'
import { initOneSignal } from 'src/features/notifications/Onesignal'
import { sendMobileAnalyticsEvent } from 'src/features/telemetry'
import { MobileEventName } from 'src/features/telemetry/constants'
import { shouldLogScreen } from 'src/features/telemetry/directLogScreens'
import { selectAllowAnalytics } from 'src/features/telemetry/selectors'
import { selectCustomEndpoint } from 'src/features/tweaks/selectors'
import {
processWidgetEvents,
setAccountAddressesUserDefaults,
Expand All @@ -53,6 +50,9 @@ import { WALLET_EXPERIMENTS } from 'uniswap/src/features/gating/experiments'
import { WALLET_FEATURE_FLAG_NAMES } from 'uniswap/src/features/gating/flags'
import { loadStatsigOverrides } from 'uniswap/src/features/gating/overrides/customPersistedOverrides'
import { Statsig, StatsigProvider } from 'uniswap/src/features/gating/sdk/statsig'
import Trace from 'uniswap/src/features/telemetry/Trace'
import { MobileEventName } from 'uniswap/src/features/telemetry/constants'
import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send'
import { UnitagUpdaterContextProvider } from 'uniswap/src/features/unitags/context'
import i18n from 'uniswap/src/i18n/i18n'
import { CurrencyId } from 'uniswap/src/types/currency'
Expand All @@ -61,6 +61,9 @@ import { registerConsoleOverrides } from 'utilities/src/logger/console'
import { logger } from 'utilities/src/logger/logger'
import { useAsyncData } from 'utilities/src/react/hooks'
import { AnalyticsNavigationContextProvider } from 'utilities/src/telemetry/trace/AnalyticsNavigationContext'
import { ErrorBoundary } from 'wallet/src/components/ErrorBoundary/ErrorBoundary'
// eslint-disable-next-line no-restricted-imports
import { usePersistedApolloClient } from 'wallet/src/data/apollo/usePersistedApolloClient'
import { initFirebaseAppCheck } from 'wallet/src/features/appCheck'
import { useCurrentAppearanceSetting } from 'wallet/src/features/appearance/hooks'
import { selectFavoriteTokens } from 'wallet/src/features/favorites/selectors'
Expand Down Expand Up @@ -185,12 +188,19 @@ function SentryTags({ children }: PropsWithChildren): JSX.Element {
return <>{children}</>
}

const MAX_CACHE_SIZE_IN_BYTES = 1024 * 1024 * 25 // 25 MB

// Ensures redux state is available inside usePersistedApolloClient for the custom endpoint
function AppOuter(): JSX.Element | null {
const client = usePersistedApolloClient()
const customEndpoint = useAppSelector(selectCustomEndpoint)
const client = usePersistedApolloClient({
storageWrapper: new MMKVWrapper(new MMKV()),
maxCacheSizeInBytes: MAX_CACHE_SIZE_IN_BYTES,
customEndpoint,
})

const onReportPrepared = useCallback((report: RenderPassReport) => {
sendMobileAnalyticsEvent(MobileEventName.PerformanceReport, report)
sendAnalyticsEvent(MobileEventName.PerformanceReport, report)
}, [])

if (!client) {
Expand Down
19 changes: 10 additions & 9 deletions apps/mobile/src/app/MobileWalletNavigationProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@ import { exploreNavigationRef } from 'src/app/navigation/navigation'
import { useAppStackNavigation } from 'src/app/navigation/types'
import { closeModal, openModal } from 'src/features/modals/modalSlice'
import { HomeScreenTabIndex } from 'src/screens/HomeScreenTabIndex'
import { Screens } from 'src/screens/Screens'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag } from 'uniswap/src/features/gating/hooks'
import { ModalName, WalletEventName } from 'uniswap/src/features/telemetry/constants'
import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send'
import { MobileScreens } from 'uniswap/src/types/screens/mobile'
import { ShareableEntity } from 'uniswap/src/types/sharing'
import { logger } from 'utilities/src/logger/logger'
import { ScannerModalState } from 'wallet/src/components/QRCodeScanner/constants'
import {
Expand All @@ -21,8 +24,6 @@ import {
getNavigateToSwapFlowArgsInitialState,
} from 'wallet/src/contexts/WalletNavigationContext'
import { useFiatOnRampIpAddressQuery } from 'wallet/src/features/fiatOnRamp/api'
import { sendWalletAnalyticsEvent } from 'wallet/src/telemetry'
import { ModalName, ShareableEntity, WalletEventName } from 'wallet/src/telemetry/constants'
import { getNftUrl, getTokenUrl } from 'wallet/src/utils/linking'

export function MobileWalletNavigationProvider({ children }: PropsWithChildren): JSX.Element {
Expand Down Expand Up @@ -61,7 +62,7 @@ function useHandleShareNft(): (args: ShareNftArgs) => Promise<void> {

await Share.share({ message: url })

sendWalletAnalyticsEvent(WalletEventName.ShareButtonClicked, {
sendAnalyticsEvent(WalletEventName.ShareButtonClicked, {
entity: ShareableEntity.NftItem,
url,
})
Expand All @@ -88,7 +89,7 @@ function useHandleShareToken(): (args: ShareTokenArgs) => Promise<void> {
try {
await Share.share({ message: url })

sendWalletAnalyticsEvent(WalletEventName.ShareButtonClicked, {
sendAnalyticsEvent(WalletEventName.ShareButtonClicked, {
entity: ShareableEntity.Token,
url,
})
Expand All @@ -104,7 +105,7 @@ function useNavigateToHomepageTab(tab: HomeScreenTabIndex): () => void {
const { navigate } = useAppStackNavigation()

return useCallback((): void => {
navigate(Screens.Home, { tab })
navigate(MobileScreens.Home, { tab })
}, [navigate, tab])
}

Expand Down Expand Up @@ -149,9 +150,9 @@ function useNavigateToTokenDetails(): (currencyId: string) => void {
return useCallback(
(currencyId: string): void => {
if (exploreNavigationRef.isFocused()) {
exploreNavigationRef.navigate(Screens.TokenDetails, { currencyId })
exploreNavigationRef.navigate(MobileScreens.TokenDetails, { currencyId })
} else {
appNavigation.navigate(Screens.TokenDetails, { currencyId })
appNavigation.navigate(MobileScreens.TokenDetails, { currencyId })
}
},
[appNavigation]
Expand All @@ -163,7 +164,7 @@ function useNavigateToNftDetails(): (args: NavigateToNftItemArgs) => void {

return useCallback(
({ owner, address, tokenId, isSpam, fallbackData }: NavigateToNftItemArgs): void => {
navigation.navigate(Screens.NFTItem, {
navigation.navigate(MobileScreens.NFTItem, {
owner,
address,
tokenId,
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/src/app/migrations.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ import { initialModalsState } from 'src/features/modals/modalSlice'
import { initialTelemetryState } from 'src/features/telemetry/slice'
import { initialTweaksState } from 'src/features/tweaks/slice'
import { initialWalletConnectState } from 'src/features/walletConnect/walletConnectSlice'
import { ModalName } from 'uniswap/src/features/telemetry/constants'
import { ChainId } from 'uniswap/src/types/chains'
import { ScannerModalState } from 'wallet/src/components/QRCodeScanner/constants'
import {
Expand Down Expand Up @@ -103,7 +104,6 @@ import {
SignerMnemonicAccount,
} from 'wallet/src/features/wallet/accounts/types'
import { initialWalletState, SwapProtectionSetting } from 'wallet/src/features/wallet/slice'
import { ModalName } from 'wallet/src/telemetry/constants'
import {
fiatPurchaseTransactionInfo,
signerMnemonicAccount,
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/src/app/migrations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
/* eslint-disable max-lines */

import dayjs from 'dayjs'
import { ModalName } from 'uniswap/src/features/telemetry/constants'
import { ChainId } from 'uniswap/src/types/chains'
import { ExtensionOnboardingState } from 'wallet/src/features/behaviorHistory/slice'
import { toSupportedChainId } from 'wallet/src/features/chains/utils'
Expand All @@ -18,7 +19,6 @@ import {
} from 'wallet/src/features/transactions/types'
import { Account, AccountType } from 'wallet/src/features/wallet/accounts/types'
import { SwapProtectionSetting } from 'wallet/src/features/wallet/slice'
import { ModalName } from 'wallet/src/telemetry/constants'

export const OLD_DEMO_ACCOUNT_ADDRESS = '0xdd0E380579dF30E38524F9477808d9eE37E2dEa6'

Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/src/app/modals/AccountSwitcherModal.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react'
import { AccountSwitcher } from 'src/app/modals/AccountSwitcherModal'
import { preloadedMobileState, preloadedModalsState } from 'src/test/fixtures'
import { cleanup, render } from 'src/test/test-utils'
import { ModalName } from 'wallet/src/telemetry/constants'
import { ModalName } from 'uniswap/src/features/telemetry/constants'
import { ACCOUNT } from 'wallet/src/test/fixtures'
import { noOpFunction } from 'wallet/src/test/mocks'

Expand Down
Loading

0 comments on commit 12e3725

Please sign in to comment.