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 Jul 15, 2024
1 parent 08d6805 commit d69a638
Show file tree
Hide file tree
Showing 1,786 changed files with 20,296 additions and 24,164 deletions.
30 changes: 14 additions & 16 deletions .depcheckrc
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
ignores: [
# Dependencies that depcheck thinks are unused but are actually used
'@graphql-codegen/*',
'@commitlint/*',
'i18next',
"@graphql-codegen/*",
"@commitlint/*",
"i18next",
# Dependencies that depcheck thinks are missing but are actually present or never used
'@yarnpkg/core',
'@yarnpkg/cli',
'clipanion',
'@yarnpkg/fslib',
'bufferutil',
'utf-8-validate',
'@yarnpkg/parsers',
'@yarnpkg/plugin-git',
'semver',
'typanion',
'turbo-ignore',
'prettier',
'prettier-plugin-organize-imports',
"@yarnpkg/core",
"@yarnpkg/cli",
"clipanion",
"@yarnpkg/fslib",
"bufferutil",
"utf-8-validate",
"@yarnpkg/parsers",
"@yarnpkg/plugin-git",
"semver",
"typanion",
"turbo-ignore",
]
49 changes: 0 additions & 49 deletions .prettierignore

This file was deleted.

9 changes: 0 additions & 9 deletions .prettierrc

This file was deleted.

1 change: 0 additions & 1 deletion CODEOWNERS

This file was deleted.

53 changes: 6 additions & 47 deletions RELEASE
Original file line number Diff line number Diff line change
@@ -1,50 +1,9 @@
IPFS hash of the deployment:
- CIDv0: `QmaNrzdiCZfezB1GYBZprZVoAh4KGsaZjzVH9qSmDCvZDv`
- CIDv1: `bafybeifs3vfz27oqei35fu5fg6pfgzz3eacp3rdyhg7lvm5mp63iiauomu`
Expanded network support — we now support ZKsync!

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

You can also access the Uniswap Interface from an IPFS gateway.
**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.
**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).
Your Uniswap settings are never remembered across different URLs.

IPFS gateways:
- https://bafybeifs3vfz27oqei35fu5fg6pfgzz3eacp3rdyhg7lvm5mp63iiauomu.ipfs.dweb.link/
- https://bafybeifs3vfz27oqei35fu5fg6pfgzz3eacp3rdyhg7lvm5mp63iiauomu.ipfs.cf-ipfs.com/
- [ipfs://QmaNrzdiCZfezB1GYBZprZVoAh4KGsaZjzVH9qSmDCvZDv/](ipfs://QmaNrzdiCZfezB1GYBZprZVoAh4KGsaZjzVH9qSmDCvZDv/)

## 5.39.0 (2024-07-10)


### Features

* **web:** [ext-gtm] make drawer a modal when uni extension is installed (#9560) 9f17d08
* **web:** [ext-gtm] remove extra miniport content when extension is connected (#9678) e78e6d8
* **web:** activity Row for FOR transactions (#9874) cea60c1
* **web:** add error state for FOR connection modal (#9597) 5bd5da8
* **web:** deeplinks for extension (#9782) 9c8c5bf
* **web:** empty wallet state (#9641) 67e82cc
* **web:** fiat on ramp design polish (#9860) 40ba8bc
* **web:** FOR transaction status polling (#9793) 147db24
* **web:** open FOR widget in onClick (#9826) 5658b80
* **web:** redux slice for FOR transactions (#9575) 5985d7c
* **web:** reorganize fiat on ramp components (incl. snapshots) (#9625) 60d8ebe


### Bug Fixes

* **web:** avoid datadog duplicate logs and slowdowns in web test (#9626) 2031800
* **web:** fix incorrect isToken check (#9765) 7ef1d18
* **web:** fix rive not loading in prod (#9856) 681219d
* **web:** memoize FOR transactions to avoid rerenders - hotfix staging (#9917) e4d272e
* **web:** Show chart error state if priceHistory is an empty array [staging] (#9926) 4dc66f3
* **web:** use sentence case miniP (#9759) 79ce461
* **web:** useSyncChainQuery for input currencies without chain param (#9521) 565c985


### Continuous Integration

* **web:** update sitemaps fd342d7
Better multi-network warnings — provides clear warnings when a user doesn’t have enough base asset on a network to pay gas and complete a transaction.

Other changes:

- Onboarding improvements
- Better handling of larger numbers
- Various bug fixes and performance improvements
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
web/5.39.0
mobile/1.30
3 changes: 3 additions & 0 deletions apps/mobile/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ios
android
.eslintrc.js
9 changes: 0 additions & 9 deletions apps/mobile/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -190,15 +190,6 @@ Resolve this issue by navigating to the `ios/` directory and running `pod update
- `Build target hermes-engine: Command PhaseScriptExecution failed with a nonzero exit code`
Node isn't being located correctly during the build phase. Run `which node` and copy the resulting path into `.xcode.env.local`. More context [here](https://github.com/facebook/react-native/issues/42221).

- `CocoaPods could not find compatible versions for pod "hermes-engine"`
The following commands can help you fix these types of errors:

`cd ios && pod install --repo-update`
`cd ios && pod repo update`
`cd ios && pod update hermes-engine --no-repo-update`

Context: https://uniswapteam.slack.com/archives/C02GYG8TU12/p1692640189802989?thread_ts=1692635970.952869&cid=C02GYG8TU12

### Common fixes

If something isn’t working the way it should or you’re getting a weird error when trying to run the app, try the following:
Expand Down
30 changes: 0 additions & 30 deletions apps/mobile/__mocks__/@react-navigation/native.js

This file was deleted.

5 changes: 4 additions & 1 deletion apps/mobile/__mocks__/@shopify/react-native-skia.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ import { View, ViewProps } from 'react-native'

// Source: https://github.com/Shopify/react-native-skia/issues/548#issuecomment-1157609472

const PlainView = ({ children, ...props }: PropsWithChildren<unknown>): React.CElement<ViewProps, View> => {
const PlainView = ({
children,
...props
}: PropsWithChildren<unknown>): React.CElement<ViewProps, View> => {
return React.createElement(View, props, children)
}
const noop = (): null => null
Expand Down
5 changes: 4 additions & 1 deletion apps/mobile/__mocks__/react-native-context-menu-view.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import React, { PropsWithChildren } from 'react'
import { View, ViewProps } from 'react-native'

const PlainView = ({ children, ...props }: PropsWithChildren<unknown>): React.CElement<ViewProps, View> => {
const PlainView = ({
children,
...props
}: PropsWithChildren<unknown>): React.CElement<ViewProps, View> => {
return React.createElement(View, props, children)
}

Expand Down
5 changes: 4 additions & 1 deletion apps/mobile/__mocks__/react-native-fast-image.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import React, { PropsWithChildren } from 'react'
import { Image, ImageProps } from 'react-native'

const PlainImage = ({ children, ...props }: PropsWithChildren<ImageProps>): React.CElement<ImageProps, Image> => {
const PlainImage = ({
children,
...props
}: PropsWithChildren<ImageProps>): React.CElement<ImageProps, Image> => {
return React.createElement(Image, props, children)
}

Expand Down
6 changes: 3 additions & 3 deletions apps/mobile/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -131,17 +131,17 @@ android {
dev {
isDefault(true)
applicationIdSuffix ".dev"
versionName "1.31"
versionName "1.30"
dimension "variant"
}
beta {
applicationIdSuffix ".beta"
versionName "1.31"
versionName "1.30"
dimension "variant"
}
prod {
dimension "variant"
versionName "1.31"
versionName "1.30"
}
}

Expand Down
5 changes: 2 additions & 3 deletions apps/mobile/e2e/Onboarding.e2e.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { CreateNewWallet } from 'e2e/usecases/onboarding/CreateNewWallet'
import { ImportWallet } from 'e2e/usecases/onboarding/ImportWallet'
import { WatchWallet } from 'e2e/usecases/onboarding/WatchWallet'

describe('Onboarding', () => {
Expand All @@ -13,7 +14,5 @@ describe('Onboarding', () => {

it('creates a new wallet', CreateNewWallet)
it('watches wallet', WatchWallet)
// TODO: find the way to test native input
// eslint-disable-next-line jest/no-commented-out-tests
// it('imports a testing wallet using recovery phrase', ImportWallet)
it('imports a testing wallet using recovery phrase', ImportWallet)
})
49 changes: 49 additions & 0 deletions apps/mobile/e2e/usecases/CreateNewWallet.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { by, element, expect } from 'detox'
import { TestWallet } from 'e2e/utils/fixtures'
import { ElementName } from 'uniswap/src/features/telemetry/constants'

export function CreateNewWallet(): void {
it('creates a new wallet', async () => {
// Selects "Create a new wallet" option on the landing screen
await element(by.id(ElementName.CreateAccount)).tap()

// Skips unitag flow
await element(by.id(ElementName.Skip)).tap()

// Taps "Let's keep it safe" on QRAnimation screen
await element(by.id(ElementName.Next)).tap()

// Check is both manual and cloud backup options are available on BackupScreen
await expect(element(by.id(ElementName.AddCloudBackup))).toBeVisible()
await expect(element(by.id(ElementName.AddManualBackup))).toBeVisible()

// Picks "Manual backup" option
await element(by.id(ElementName.AddManualBackup)).tap()

// Checks if ManualBackupScreen warning displays and taps "I'm ready" button
await expect(element(by.id(ElementName.Confirm))).toBeVisible()
await element(by.id(ElementName.Confirm)).tap()

// Taps continue on ManualBackupScreen
await element(by.id(ElementName.Next)).tap()

// Taps continue on manual backup confirmation screen. It is replaced by mock because detox
// can't interact with native screens
await element(by.id(ElementName.Continue)).tap()

// Skips notification setup by tapping "Maybe later" button
await element(by.id(ElementName.Skip)).tap()

// Skips biometrics setup by tapping "Maybe later" button
await element(by.id(ElementName.Skip)).tap()

// Confirms by tapping "Skip" on warning modal
await element(by.id(ElementName.Confirm)).tap()

// Confirms if user successfuly finished create new wallet flow by checking if provided wallet name is
// displayed and other
await expect(element(by.text(TestWallet.name))).toBeVisible()
await expect(element(by.id(ElementName.Swap))).toBeVisible()
await expect(element(by.id(ElementName.SearchTokensAndWallets))).toBeVisible()
})
}
32 changes: 16 additions & 16 deletions apps/mobile/e2e/usecases/onboarding/CreateNewWallet.ts
Original file line number Diff line number Diff line change
@@ -1,47 +1,47 @@
import { by, element, expect } from 'detox'
import { TestWallet } from 'e2e/utils/fixtures'
import { TestID } from 'uniswap/src/test/fixtures/testIDs'
import { ElementName } from 'uniswap/src/features/telemetry/constants'

export async function CreateNewWallet(): Promise<void> {
// Selects "Create a new wallet" option on the landing screen
await element(by.id(TestID.CreateAccount)).tap()
await element(by.id(ElementName.CreateAccount)).tap()

// Skips unitag flow
await element(by.id(TestID.Skip)).tap()
await element(by.id(ElementName.Skip)).tap()

// Taps "Let's keep it safe" on QRAnimation screen
await element(by.id(TestID.Next)).tap()
await element(by.id(ElementName.Next)).tap()

// Check is both manual and cloud backup options are available on BackupScreen
await expect(element(by.id(TestID.AddCloudBackup))).toBeVisible()
await expect(element(by.id(TestID.AddManualBackup))).toBeVisible()
await expect(element(by.id(ElementName.AddCloudBackup))).toBeVisible()
await expect(element(by.id(ElementName.AddManualBackup))).toBeVisible()

// Picks "Manual backup" option
await element(by.id(TestID.AddManualBackup)).tap()
await element(by.id(ElementName.AddManualBackup)).tap()

// Checks if ManualBackupScreen warning displays and taps "I'm ready" button
await expect(element(by.id(TestID.Confirm))).toBeVisible()
await element(by.id(TestID.Confirm)).tap()
await expect(element(by.id(ElementName.Confirm))).toBeVisible()
await element(by.id(ElementName.Confirm)).tap()

// Taps continue on ManualBackupScreen
await element(by.id(TestID.Next)).tap()
await element(by.id(ElementName.Next)).tap()

// Taps continue on manual backup confirmation screen. It is replaced by mock because detox
// can't interact with native screens
await element(by.id(TestID.Continue)).tap()
await element(by.id(ElementName.Continue)).tap()

// Skips notification setup by tapping "Maybe later" button
await element(by.id(TestID.Skip)).tap()
await element(by.id(ElementName.Skip)).tap()

// Skips biometrics setup by tapping "Maybe later" button
await element(by.id(TestID.Skip)).tap()
await element(by.id(ElementName.Skip)).tap()

// Confirms by tapping "Skip" on warning modal
await element(by.id(TestID.Confirm)).tap()
await element(by.id(ElementName.Confirm)).tap()

// Confirms if user successfuly finished create new wallet flow by checking if provided wallet name is
// displayed and other
await expect(element(by.text(TestWallet.name))).toBeVisible()
await expect(element(by.id(TestID.Swap))).toBeVisible()
await expect(element(by.id(TestID.SearchTokensAndWallets))).toBeVisible()
await expect(element(by.id(ElementName.Swap))).toBeVisible()
await expect(element(by.id(ElementName.SearchTokensAndWallets))).toBeVisible()
}
Loading

0 comments on commit d69a638

Please sign in to comment.