ci(release): publish latest release

parent b18fcc0c
IPFS hash of the deployment:
- CIDv0: `QmbKgKkW8gPc6Fc4CCbruxzdbgE968pGuSMwaFPPS57kdg`
- CIDv1: `bafybeiga5awmbukdwmpf4jskzekpy76rzhk4blbqcmzvr745un6k6qulvm`
- CIDv0: `QmWXkZCZCVea5C5dkKAgH2jR3a8LWCFmJGedqiEaK21wHj`
- CIDv1: `bafybeidzwv7ldnoexuakxu7nxwvkvh7bcku5kxdixe7jdgal36mcur7doi`
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
......@@ -10,63 +10,15 @@ You can also access the Uniswap Interface from an IPFS gateway.
Your Uniswap settings are never remembered across different URLs.
IPFS gateways:
- https://bafybeiga5awmbukdwmpf4jskzekpy76rzhk4blbqcmzvr745un6k6qulvm.ipfs.dweb.link/
- https://bafybeiga5awmbukdwmpf4jskzekpy76rzhk4blbqcmzvr745un6k6qulvm.ipfs.cf-ipfs.com/
- [ipfs://QmbKgKkW8gPc6Fc4CCbruxzdbgE968pGuSMwaFPPS57kdg/](ipfs://QmbKgKkW8gPc6Fc4CCbruxzdbgE968pGuSMwaFPPS57kdg/)
- https://bafybeidzwv7ldnoexuakxu7nxwvkvh7bcku5kxdixe7jdgal36mcur7doi.ipfs.dweb.link/
- https://bafybeidzwv7ldnoexuakxu7nxwvkvh7bcku5kxdixe7jdgal36mcur7doi.ipfs.cf-ipfs.com/
- [ipfs://QmWXkZCZCVea5C5dkKAgH2jR3a8LWCFmJGedqiEaK21wHj/](ipfs://QmWXkZCZCVea5C5dkKAgH2jR3a8LWCFmJGedqiEaK21wHj/)
## 5.51.0 (2024-10-10)
### Features
* **web:** add network costs to the addliquidity modal (#12557) 9beb5ce
* **web:** add steps to the modal (#12431) 65639b4
* **web:** add support for permit (#12575) b9d9579
* **web:** add testnet modal (#12636) 350d97e
* **web:** adding create modal (#12441) 3150f48
* **web:** balance fetch switch on testnet mode (#12576) dfa44bd
* **web:** call TradingAPI claim fees endpoint for v3/v4 (#12444) 8acafa7
* **web:** deposit tokens step (#12377) 4c747d8
* **web:** disable testnet on disconnect (#12750) 9f0bdbb
* **web:** disable tx flows on explore pages (#12656) 6ed0b42
* **web:** enable testnet mode on web with flag (#12505) dd7f272
* **web:** hook up LP saga + confirm steps to the decrease flow (#12508) 3f0ff49
* **web:** integrate with trading API for create flow (v2,v3) (#12434) 7283d2e
* **web:** loading state for new PosDP (#12634) 688ea88
* **web:** LP migrate page - update query and loading state (#12652) 88b336e
* **web:** positions pagination and claim fees modal (#12341) 5f1eba2
* **web:** testnet mode (#12566) abe823d
* **web:** testnet portfolio row (#12616) ae5e5f5
* **web:** unichain intro modal (#12554) 16fdb94
* **web:** use single position query for PosDP (#12517) e242d90
* **web:** use universe currency logo for testnets (#12607) d0767bd
* **web:** use v3 uncollected fee values from Data API (#12555) 2a376be
* **web:** v4 create position v2 (#12419) be27df2
* **web:** v4 price range charts (#12525) cf9f515
### 5.51.1 (2024-10-10)
### Bug Fixes
* **web:** 10 08 fix web log step and original error on web staging (#12825) c895745
* **web:** add requestId and quoteId to post /order request (#12612) e08233f
* **web:** astro chain ui info (#12671) 6923e48
* **web:** default to crypto in send when on testnet (#12758) 5839f86
* **web:** dont respect url flag overrides on prod (#12545) 3a68877
* **web:** fix tick formatting + position details page (#12648) b606211
* **web:** fixing v4 create bugs (#12514) 9da665d
* **web:** hide gas for testnet unichain eth (#12759) 2dfd2d5
* **web:** invalidate local activity cache for updates to transaction or signature state (#12650) f119f63
* **web:** move connected wallet chain logic to universe (#12717) 5f78d74
* **web:** native currency logo fetching on web (#12387) 81eb2ac
* **web:** pass account to getSigner instead of using default [staging] (#12884) a11364b
* **web:** rm prod arb+eth quicknode urls (#12646) d36d711
* **web:** simplify/combine the liquidity saga logic (#12540) 5b72b61
* **web:** ui nits and bugs (#12718) 6330bd4
* **web:** uniswapx toasts/polling (#12658) 53dc7b1
### Continuous Integration
* **web:** update sitemaps 82367d7
* **web:** Cab/web 5130 remove extension launch modal prod (#12891) 07a5a21
web/5.51.0
\ No newline at end of file
web/5.51.1
\ No newline at end of file
import { InterfaceElementName, InterfaceModalName } from '@uniswap/analytics-events'
import { ButtonEmphasis, ButtonSize, ThemeButton } from 'components/Button/buttons'
import Modal from 'components/Modal'
import {
LAUNCH_MODAL_DESKTOP_MAX_HEIGHT,
LAUNCH_MODAL_DESKTOP_MAX_WIDTH,
LAUNCH_MODAL_MOBILE_MAX_HEIGHT,
LAUNCH_MODAL_MOBILE_MAX_IMAGE_HEIGHT,
} from 'components/TopLevelModals/constants'
import { useConnectorWithId } from 'components/WalletModal/useOrderedConnections'
import Column from 'components/deprecated/Column'
import Row from 'components/deprecated/Row'
import { useIsMobile } from 'hooks/screenSize/useIsMobile'
import { useIsLandingPage } from 'hooks/useIsLandingPage'
import { useAtom } from 'jotai'
import { atomWithStorage } from 'jotai/utils'
import styled from 'lib/styled-components'
import { X } from 'react-feather'
import { BREAKPOINTS } from 'theme'
import { ClickableStyle, ExternalLink, ThemedText } from 'theme/components'
import { Image } from 'ui/src'
import { UNISWAP_LOGO } from 'ui/src/assets'
import { iconSizes } from 'ui/src/theme'
import { uniswapUrls } from 'uniswap/src/constants/urls'
import { CONNECTION_PROVIDER_IDS } from 'uniswap/src/constants/web3'
import Trace from 'uniswap/src/features/telemetry/Trace'
import { Trans } from 'uniswap/src/i18n'
const ModalWrapper = styled.div`
display: flex;
flex-direction: row;
height: 100%;
width: 100%;
@media screen and (max-width: ${BREAKPOINTS.sm}px) {
flex-direction: column;
}
* {
outline: none;
}
`
const PromoImage = styled.img`
display: flex;
width: 240px;
height: 100%;
border-radius: 20px 0px 0px 20px;
background: url('/images/extension_promo/announcement_modal_desktop.png');
background-repeat: no-repeat;
background-size: cover;
flex: 1;
@media screen and (max-width: ${BREAKPOINTS.sm}px) {
background: url('/images/extension_promo/announcement_modal_mobile.png');
background-size: cover;
background-position: 50%;
height: ${LAUNCH_MODAL_MOBILE_MAX_IMAGE_HEIGHT}px;
width: 100%;
flex: unset;
}
`
const CloseIcon = styled(X)`
height: 20px;
width: 20px;
${ClickableStyle}
color: ${({ theme }) => theme.neutral2};
`
const TextWrapper = styled(Column)`
padding: 20px 24px;
gap: 16px;
height: 100%;
flex: 1;
@media screen and (max-width: ${BREAKPOINTS.sm}px) {
gap: 12px;
text-align: center;
}
`
const HeaderRow = styled(Row)`
justify-content: space-between;
align-items: flex-start;
@media screen and (max-width: ${BREAKPOINTS.sm}px) {
display: none;
}
`
const StyledExternalLink = styled(ExternalLink)`
width: 100%;
`
const StyledThemeButton = styled(ThemeButton)`
padding: 8px 0px;
width: 100%;
border-radius: 12px;
${ClickableStyle}
@media screen and (max-width: ${BREAKPOINTS.sm}px) {
padding: 12px 20px;
border-radius: 16px;
font-size: 18px;
line-height: 24px;
}
`
// Once a user closes the modal, do not reopen for duration of session
const showExtensionLaunchAtom = atomWithStorage('showUniswapExtensionLaunchAtom', true)
export function ExtensionLaunchModal() {
const [showExtensionLaunch, setShowExtensionLaunch] = useAtom(showExtensionLaunchAtom)
const isOnLandingPage = useIsLandingPage()
const uniswapExtensionConnector = useConnectorWithId(CONNECTION_PROVIDER_IDS.UNISWAP_EXTENSION_RDNS)
const isMobile = useIsMobile()
return (
<Trace modal={InterfaceModalName.EXTENSION_LAUNCH_PROMOTIONAL_MODAL}>
<Modal
maxWidth={isMobile ? undefined : LAUNCH_MODAL_DESKTOP_MAX_WIDTH}
height={isMobile ? LAUNCH_MODAL_MOBILE_MAX_HEIGHT : LAUNCH_MODAL_DESKTOP_MAX_HEIGHT}
isOpen={showExtensionLaunch && !isOnLandingPage && !uniswapExtensionConnector}
hideBorder
onDismiss={() => setShowExtensionLaunch(false)}
>
<ModalWrapper>
<PromoImage />
<TextWrapper>
<HeaderRow>
<Image height={iconSizes.icon40} source={UNISWAP_LOGO} width={iconSizes.icon40} />
<Trace logPress element={InterfaceElementName.CLOSE_BUTTON}>
<CloseIcon onClick={() => setShowExtensionLaunch(false)} />
</Trace>
</HeaderRow>
<Column gap="xs">
<ThemedText.SubHeader>
<Trans i18nKey="extension.introduction" />
</ThemedText.SubHeader>
<ThemedText.SubHeaderSmall lineHeight="20px">
<Trans i18nKey="extension.announcement" />
</ThemedText.SubHeaderSmall>
</Column>
<Row gap="8px" marginTop="auto">
{isMobile && (
<Trace logPress element={InterfaceElementName.CLOSE_BUTTON}>
<StyledThemeButton
size={ButtonSize.small}
emphasis={ButtonEmphasis.medium}
onClick={() => setShowExtensionLaunch(false)}
>
<Trans i18nKey="common.dismiss" />
</StyledThemeButton>
</Trace>
)}
<Trace logPress element={InterfaceElementName.LEARN_MORE_LINK}>
<StyledExternalLink href="https://wallet.uniswap.org//?utm_medium=promo-dialogue&utm_source=web-app&utm_campaign=ext-launch&utm_creative=learn-more">
<StyledThemeButton
size={ButtonSize.small}
emphasis={isMobile ? ButtonEmphasis.high : ButtonEmphasis.medium}
onClick={() => setShowExtensionLaunch(false)}
>
<Trans i18nKey="common.button.learn" />
</StyledThemeButton>
</StyledExternalLink>
</Trace>
{!isMobile && (
<Trace logPress element={InterfaceElementName.EXTENSION_DOWNLOAD_BUTTON}>
<StyledExternalLink href={uniswapUrls.chromeExtension}>
<StyledThemeButton
size={ButtonSize.small}
emphasis={ButtonEmphasis.high}
onClick={() => setShowExtensionLaunch(false)}
>
<Trans i18nKey="common.download" />
</StyledThemeButton>
</StyledExternalLink>
</Trace>
)}
</Row>
</TextWrapper>
</ModalWrapper>
</Modal>
</Trace>
)
}
......@@ -8,7 +8,6 @@ import FiatOnrampModal from 'components/FiatOnrampModal'
import { GetTheAppModal } from 'components/NavBar/DownloadApp/Modal'
import { PrivacyPolicyModal } from 'components/PrivacyPolicy'
import { ReceiveCryptoModal } from 'components/ReceiveCryptoModal'
import { ExtensionLaunchModal } from 'components/TopLevelModals/ExtensionLaunchModal'
import { UkDisclaimerModal } from 'components/TopLevelModals/UkDisclaimerModal'
import { UnichainLaunchModal } from 'components/TopLevelModals/UnichainLaunchModal'
import AddressClaimModal from 'components/claim/AddressClaimModal'
......@@ -62,7 +61,6 @@ export default function TopLevelModals() {
<PrivacyPolicyModal />
<FeatureFlagModal />
{shouldShowDevFlags && <DevFlagsBox />}
<ExtensionLaunchModal />
{showUnichainLaunchModal && <UnichainLaunchModal />}
{isAddLiquidityModalOpen && <IncreaseLiquidityModal />}
......
......@@ -784,14 +784,12 @@
"explore.wallets.favorite.action.remove": "Remove favorite",
"explore.wallets.favorite.title.default": "Favorite wallets",
"explore.wallets.favorite.title.edit": "Edit favorite wallets",
"extension.announcement": "The Uniswap Extension is here. Swap, sign transactions, and send tokens right from your browser.",
"extension.connection.networks": "Networks",
"extension.connection.popup": "Your wallet isn’t connected to this site. Look for a “Connect Wallet” or “Log in” button.",
"extension.connection.popup.trouble": "Trouble connecting?",
"extension.connection.popupWithButton": "Your wallet isn’t connected to this site.",
"extension.connection.titleConnected": "Connected",
"extension.connection.titleNotConnected": "Not connected",
"extension.introduction": "Introducing the Uniswap Extension.",
"extension.lock.button.forgot": "Forgot password?",
"extension.lock.button.reset": "Reset wallet",
"extension.lock.button.submit": "Unlock",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment