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 Oct 1, 2024
1 parent 6032cdd commit f5bd214
Show file tree
Hide file tree
Showing 629 changed files with 21,575 additions and 4,929 deletions.
1 change: 1 addition & 0 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @uniswap/web-admins
66 changes: 59 additions & 7 deletions RELEASE
Original file line number Diff line number Diff line change
@@ -1,11 +1,63 @@
We are back with some new updates! Here’s the latest:
IPFS hash of the deployment:
- CIDv0: `Qmd28dj63MAN4SSYPnXMSDe5bKUbnwSFKijHz59isELY4t`
- CIDv1: `bafybeig2edl4hxzvem7w6ujx735fox2jnpdaizovofieutl3rvawydroqu`

Manage dapp connections - Users can now see all dapps they’re connected to, and disconnect to one or all of them.
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).

Report Spam NFTs - You can now report spam NFTs and hide them from your feed and activity.
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://bafybeig2edl4hxzvem7w6ujx735fox2jnpdaizovofieutl3rvawydroqu.ipfs.dweb.link/
- https://bafybeig2edl4hxzvem7w6ujx735fox2jnpdaizovofieutl3rvawydroqu.ipfs.cf-ipfs.com/
- [ipfs://Qmd28dj63MAN4SSYPnXMSDe5bKUbnwSFKijHz59isELY4t/](ipfs://Qmd28dj63MAN4SSYPnXMSDe5bKUbnwSFKijHz59isELY4t/)

## 5.49.0 (2024-10-01)


### Features

* **web:** [1/2] fee tier selection modal (#12092) fa1f56d
* **web:** [2/2] fee tier selection modal (create new) (#12110) 780bbc0
* **web:** add fee tier and price range selection to migrate page (#12064) f417a3f
* **web:** add fiat values props to swap logs in new saga (#12215) 857119c
* **web:** add price impact events (#12208) 30b8c39
* **web:** add total_balances_usd prop to swap logs in new saga (#12173) 79a0b17
* **web:** add UniswapX priority orders in swap flow (#12088) d55a9bd
* **web:** add uniswapx saga to shared web flow (#11973) d10498e
* **web:** add url param to create positions page (#12212) b89e5d1
* **web:** add wrap saga for shared flow (#11971) f14a41a
* **web:** adding multiple protocols to create page (#12132) b4bff49
* **web:** changing create page based on version (#12136) bc16817
* **web:** classic swap saga (#11922) f74c332
* **web:** keep input to all networks unless output selected (#12274) e43b95d
* **web:** log SWAP_MODIFIED_IN_WALLET event in new swap saga (#12247) 16e9f56
* **web:** log SWAP_SIGNED event in new swag saga (#12170) 2494b9d
* **web:** log UniswapXOrderPostError and UniswapXSignatureRequested in new saga (#12114) 454666b
* **web:** log UniswapXOrderSubmitted in new saga (#12113) 9ae3373
* **web:** pulling from backend for create page (#12143) 8f6aa1e
* **web:** swap saga notifications (#12070) e28ec03
* **web:** v2 position page refreshed (#11972) da6c705
* **web:** v4 Position detail page (#11904) a735564


### Bug Fixes

* **web:** fix AddressQRModal eyeSize (#12318) 33f8160
* **web:** fix language file mapping (#12207) bbfe66d
* **web:** fix overflow issue in search results (#12158) fbd7358
* **web:** limit form button color should be neutralContrast (#12416) d923cdd
* **web:** shared swap landing page (#12026) fe2d0b6
* **web:** token caching fix in mini portfolio (#12149) 4c2d402
* **web:** token selector height (#12028) 3adb0d0
* **web:** use percentFromFloat (#12142) 18f819b
* **web:** use swap saga prefilled state (#12082) c6bd810


### Continuous Integration

* **web:** update sitemaps d8b4a5a

Other changes:

- Added explainers for hidden tokens, popular tokens, and hidden NFTs
- Removed activity feed items related to any hidden NFTs
- 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 @@
extension/1.6.0
web/5.49.0
3 changes: 3 additions & 0 deletions apps/extension/jest-setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { AppearanceSettingType } from 'wallet/src/features/appearance/slice'
import { TextEncoder, TextDecoder } from 'util'
import { mockSharedPersistQueryClientProvider } from 'uniswap/src/test/mocks/mockSharedPersistQueryClientProvider'
import { mockUIAssets } from 'ui/src/test/mocks/mockUIAssets'
import { mockLocalizationContext } from 'uniswap/src/test/mocks/locale'

process.env.IS_UNISWAP_EXTENSION = true

Expand Down Expand Up @@ -72,6 +73,8 @@ jest.mock('wallet/src/features/appearance/hooks', () => {
}
})

jest.mock('uniswap/src/features/language/LocalizationContext', () => mockLocalizationContext({}))

jest.mock('uniswap/src/data/apiClients/SharedPersistQueryClientProvider', () => mockSharedPersistQueryClientProvider)

mockUIAssets()
4 changes: 2 additions & 2 deletions apps/extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
"@svgr/webpack": "8.0.1",
"@tamagui/core": "1.108.4",
"@types/uuid": "9.0.1",
"@uniswap/analytics-events": "2.36.0",
"@uniswap/uniswapx-sdk": "^2.1.0-beta.8",
"@uniswap/analytics-events": "2.37.0",
"@uniswap/uniswapx-sdk": "^2.1.0-beta.14",
"@uniswap/universal-router-sdk": "2.2.0",
"@uniswap/v3-sdk": "3.14.0",
"dotenv-webpack": "8.0.1",
Expand Down
22 changes: 16 additions & 6 deletions apps/extension/src/app/OnboardingApp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ 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 { ClaimUnitagScreen } from 'src/app/features/onboarding/ClaimUnitagScreen'
import { Complete } from 'src/app/features/onboarding/Complete'
import {
CreateOnboardingSteps,
Expand Down Expand Up @@ -55,6 +56,14 @@ const unsupportedRoute: RouteObject = {
element: <UnsupportedBrowserScreen />,
}

const createSteps = {
[CreateOnboardingSteps.Password]: <PasswordCreate />,
[CreateOnboardingSteps.ViewMnemonic]: <ViewMnemonic />,
[CreateOnboardingSteps.TestMnemonic]: <TestMnemonic />,
[CreateOnboardingSteps.Naming]: <NameWallet />,
[CreateOnboardingSteps.Complete]: <Complete flow={ExtensionOnboardingFlow.New} />,
}

const allRoutes = [
{
path: '',
Expand All @@ -66,15 +75,16 @@ const allRoutes = [
},
{
path: OnboardingRoutes.Create,
element: <OnboardingStepsProvider key={OnboardingRoutes.Create} steps={createSteps} />,
},
{
path: OnboardingRoutes.Claim,
element: (
<OnboardingStepsProvider
key={OnboardingRoutes.Create}
key={OnboardingRoutes.Claim}
steps={{
[CreateOnboardingSteps.Password]: <PasswordCreate />,
[CreateOnboardingSteps.ViewMnemonic]: <ViewMnemonic />,
[CreateOnboardingSteps.TestMnemonic]: <TestMnemonic />,
[CreateOnboardingSteps.Naming]: <NameWallet />,
[CreateOnboardingSteps.Complete]: <Complete flow={ExtensionOnboardingFlow.New} />,
[CreateOnboardingSteps.ClaimUnitag]: <ClaimUnitagScreen />,
...createSteps,
}}
/>
),
Expand Down
10 changes: 5 additions & 5 deletions apps/extension/src/app/features/accounts/AccountItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { useDispatch } from 'react-redux'
import { EditLabelModal } from 'src/app/features/accounts/EditLabelModal'
import { removeAllDappConnectionsForAccount } from 'src/app/features/dapp/actions'
import { ContextMenu, Flex, MenuContentItem, Text, TouchableArea } from 'ui/src'
import { CopySheets, Edit, TrashFilled, TripleDots } from 'ui/src/components/icons'
import { CopySheets, Edit, Ellipsis, TrashFilled } from 'ui/src/components/icons'
import { iconSizes } from 'ui/src/theme'
import { WarningModal } from 'uniswap/src/components/modals/WarningModal/WarningModal'
import { WarningSeverity } from 'uniswap/src/components/modals/WarningModal/types'
Expand Down Expand Up @@ -131,15 +131,15 @@ export function AccountItem({ address, onAccountSelect, balanceUSD }: AccountIte
caption={t('account.recoveryPhrase.remove.mnemonic.description', {
walletNames: [activeAccountDisplayName?.name ?? ''],
})}
closeText={t('common.button.cancel')}
confirmText={t('common.button.continue')}
rejectText={t('common.button.cancel')}
acknowledgeText={t('common.button.continue')}
icon={<TrashFilled color="$statusCritical" size="$icon.24" strokeWidth="$spacing1" />}
isOpen={showRemoveWalletModal}
modalName={ModalName.RemoveWallet}
severity={WarningSeverity.High}
title={t('account.wallet.remove.title', { name: displayName?.name ?? '' })}
onClose={() => setShowRemoveWalletModal(false)}
onConfirm={onRemoveWallet}
onAcknowledge={onRemoveWallet}
/>
<EditLabelModal address={address} isOpen={showEditLabelModal} onClose={() => setShowEditLabelModal(false)} />
<TouchableArea
Expand Down Expand Up @@ -179,7 +179,7 @@ export function AccountItem({ address, onAccountSelect, balanceUSD }: AccountIte
opacity={0}
p="$spacing4"
>
<TripleDots color="$neutral2" size="$icon.16" />
<Ellipsis color="$neutral2" size="$icon.16" />
</Flex>
</ContextMenu>
</Flex>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,15 +166,15 @@ export function AccountSwitcherScreen(): JSX.Element {
/>
<WarningModal
caption={t('account.recoveryPhrase.remove.import.description')}
closeText={t('common.button.cancel')}
confirmText={t('common.button.continue')}
rejectText={t('common.button.cancel')}
acknowledgeText={t('common.button.continue')}
icon={<WalletFilled color="$statusCritical" size="$icon.24" />}
isOpen={showRemoveWalletModal}
modalName={ModalName.RemoveWallet}
severity={WarningSeverity.High}
title={t('account.wallet.button.import')}
onClose={() => setShowRemoveWalletModal(false)}
onConfirm={onNavigateToRemoveWallet}
onAcknowledge={onNavigateToRemoveWallet}
/>
<CreateWalletModal
isOpen={showCreateWalletModal}
Expand Down
38 changes: 18 additions & 20 deletions apps/extension/src/app/features/dapp/store.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { cloneDeep } from '@apollo/client/utilities'
import EventEmitter from 'eventemitter3'
import { getOrderedConnectedAddresses, isConnectedAccount } from 'src/app/features/dapp/utils'
import { UniverseChainId, WalletChainId } from 'uniswap/src/types/chains'
Expand Down Expand Up @@ -223,31 +224,28 @@ function removeAccountDappConnections(account: Account): void {
* @returns the updated state
*/
function removeDappConnectionHelper(initialState: DappState, dappUrl: string, account?: Account): DappState {
const dappUrlState = initialState[dappUrl]
const newState = cloneDeep(initialState)
const dappInfo = newState[dappUrl]

if (!dappUrlState) {
if (!dappInfo) {
return initialState
}

const updatedAccounts = account
? dappUrlState.connectedAccounts?.filter((existingAccount) => existingAccount.address !== account.address)
: []

const activeConnected = updatedAccounts[0]
if (activeConnected) {
return {
...initialState,
[dappUrl]: {
...dappUrlState,
connectedAccounts: updatedAccounts,
activeConnectedAddress: activeConnected.address,
},
}
} else {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { [dappUrl]: _, ...restState } = initialState
return restState
dappInfo.connectedAccounts = dappInfo.connectedAccounts.filter(
(existingAccount) => existingAccount.address !== account?.address,
)

const nextConnectedAccount = dappInfo.connectedAccounts[0]

if (!nextConnectedAccount || !account) {
delete newState[dappUrl]
return newState
}

if (dappInfo.activeConnectedAddress === account.address) {
dappInfo.activeConnectedAddress = nextConnectedAccount.address
}
return newState
}

function removeAllDappConnections(): void {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,14 +237,14 @@ export function DappRequestFooter({
px="$spacing8"
/>
<Flex row gap="$spacing12" pt="$spacing8">
<Button flex={1} flexBasis={1} size="small" theme="secondary" onPress={handleOnCancel}>
<Button flex={1} flexBasis={1} size="medium" theme="secondary" onPress={handleOnCancel}>
{t('common.button.cancel')}
</Button>
<Button
disabled={isConfirmDisabled}
flex={1}
flexBasis={1}
size="small"
size="medium"
theme="primary"
onPress={handleOnConfirm}
>
Expand Down
2 changes: 1 addition & 1 deletion apps/extension/src/app/features/dappRequests/accounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export function* saveAccount({ url, favIconUrl }: SenderTabInfo) {
const dappInfo = yield* call(dappStore.getDappInfo, dappUrl)

if (!dappUrl || !activeAccount) {
return
return undefined
}

yield* call(saveDappConnection, dappUrl, activeAccount, favIconUrl)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,9 @@ export function ApproveRequestContent({
const { parsedTransactionData } = useNoYoloParser(dappRequest.transaction, activeChain)

// To detect a revoke, both the transaction value and the parsed arg amount value must be zero
const isArgAmountZero = parsedTransactionData?.args.some((arg) => {
if (typeof arg === 'object' && arg._hex) {
return BigNumber.from(arg._hex).isZero()
}
})
const isArgAmountZero = parsedTransactionData?.args.some(
(arg) => typeof arg === 'object' && arg._hex && BigNumber.from(arg._hex).isZero(),
)
const isRevoke = dappRequest.transaction.value === '0x0' && isArgAmountZero

const tokenInfo = useDappRequestTokenRecipientInfo(dappRequest, dappUrl)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ export function SignTypedDataRequestContent({ dappRequest }: SignTypedDataReques
</Flex>
))
}

return undefined
}

return (
Expand Down
1 change: 1 addition & 0 deletions apps/extension/src/app/features/dappRequests/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ function parseUrl(url?: string): URL | undefined {
tags: { file: 'dappRequests/utils', function: 'extractBaseUrl' },
extra: { url },
})
return undefined
}
}

Expand Down
3 changes: 3 additions & 0 deletions apps/extension/src/app/features/home/HomeScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { NftsTab } from 'src/app/components/tabs/NftsTab'
import { PortfolioActionButtons } from 'src/app/features/home/PortfolioActionButtons'
import { PortfolioHeader } from 'src/app/features/home/PortfolioHeader'
import { TokenBalanceList } from 'src/app/features/home/TokenBalanceList'
import { HomeIntroCardStack } from 'src/app/features/home/introCards/HomeIntroCardStack'
import { PinReminder } from 'src/app/features/onboarding/PinReminder'
import { selectAlertsState } from 'src/app/features/onboarding/alerts/selectors'
import { AlertName, closeAlert } from 'src/app/features/onboarding/alerts/slice'
Expand Down Expand Up @@ -129,6 +130,8 @@ export const HomeScreen = memo(function _HomeScreen(): JSX.Element {

<PortfolioActionButtons />

<HomeIntroCardStack />

<Flex flex={1} width="100%">
<Flex row gap="$spacing16" px="$spacing4" py="$spacing8">
<TabButton isActive={selectedTab === HomeTabs.Tokens} onPress={() => setSelectedTab(HomeTabs.Tokens)}>
Expand Down
2 changes: 1 addition & 1 deletion apps/extension/src/app/features/home/TokenBalanceList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ const TokenBalanceItemRow = memo(function TokenBalanceItemRow({ item }: { item:
}}
/>
{hiddenTokensExpanded && (
<Flex mx="$spacing12">
<Flex>
<InformationBanner infoText={t('hidden.tokens.info.banner.text')} onPress={handlePressToken} />
</Flex>
)}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { Flex } from 'ui/src'
import { IntroCardStack } from 'wallet/src/components/introCards/IntroCardStack'
import { useSharedIntroCards } from 'wallet/src/components/introCards/useSharedIntroCards'

export function HomeIntroCardStack(): JSX.Element | null {
const cards = useSharedIntroCards({
navigateToUnitagClaim: () => {},
navigateToUnitagIntro: () => {},
})

if (!cards.length) {
return null
}

return (
<Flex py="$spacing4">
<IntroCardStack cards={cards} />
</Flex>
)
}
Loading

0 comments on commit f5bd214

Please sign in to comment.