From 6dfeead4fd99f8d4a067abb6bd7a3fbb771866b4 Mon Sep 17 00:00:00 2001 From: mihaisc Date: Wed, 8 Jun 2022 01:46:46 -0700 Subject: [PATCH] Release (#1492) * update contracts * add version selector * show banner on all pages * show banner on all pages * Announcement/warning messages cleanup * new main announcement message * contextual compute-to-data warnings in publish form & asset action * copy update * change hardcoded URLs * change localStorage key * to prevent user preferences clashes when switching between v3 & v4 * footer stats note changes * move copy into content file * mention external markets * footer stats note copy changes * modified pool widget footer * take out pool reserve display * style & spacing updates for fees Co-authored-by: Matthias Kretschmann --- app.config.js | 4 +- content/footer.json | 5 +- content/site.json | 10 ++-- package-lock.json | 30 +++++------ package.json | 2 +- src/@context/MarketMetadata/_types.ts | 10 ++-- src/@context/UserPreferences.tsx | 2 +- src/components/@shared/atoms/Badge/index.tsx | 4 +- src/components/App/index.tsx | 13 ++--- .../Compute/FormComputeDataset.module.css | 4 ++ .../Compute/FormComputeDataset.tsx | 8 +++ .../Asset/AssetActions/Pool/Add/index.tsx | 2 +- .../Pool/Sections/Update.module.css | 4 +- .../Pool/Sections/index.module.css | 15 ++++++ .../AssetActions/Pool/Sections/index.tsx | 12 +---- src/components/Footer/MarketStats/Tooltip.tsx | 10 ++-- src/components/Header/Menu.module.css | 54 +++++++++++++++++-- src/components/Header/Menu.tsx | 33 ++++++++++-- .../Publish/Metadata/index.module.css | 4 ++ src/components/Publish/Metadata/index.tsx | 11 ++++ src/components/Publish/Services/index.tsx | 26 ++++++--- src/components/Publish/index.module.css | 5 ++ 22 files changed, 191 insertions(+), 77 deletions(-) diff --git a/app.config.js b/app.config.js index f26006eef..284628695 100644 --- a/app.config.js +++ b/app.config.js @@ -19,10 +19,10 @@ module.exports = { // List of chainIds which metadata cache queries will return by default. // This preselects the Chains user preferences. - chainIds: [3, 4, 80001, 1287], + chainIds: [1, 137, 56, 246, 1285], // List of all supported chainIds. Used to populate the Chains user preferences list. - chainIdsSupported: [3, 4, 80001, 1287], + chainIdsSupported: [1, 137, 56, 246, 1285, 3, 4, 80001, 1287], infuraProjectId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID || 'xxx', diff --git a/content/footer.json b/content/footer.json index d4a89329f..365c2b78b 100644 --- a/content/footer.json +++ b/content/footer.json @@ -12,5 +12,8 @@ "name": "Discord", "url": "https://discord.gg/TnXjkR5" } - ] + ], + "stats": { + "note": "Counted on-chain from our NFT and pool factories. Includes assets in all Ocean Market forks and [purgatory](https://github.com/oceanprotocol/list-purgatory)." + } } diff --git a/content/site.json b/content/site.json index 5e0ce2500..abcd756ea 100644 --- a/content/site.json +++ b/content/site.json @@ -1,7 +1,7 @@ { "siteTitle": "Ocean Market", "siteTagline": "A marketplace to find, publish and trade data sets in the Ocean Network.", - "siteUrl": "https://v4.market.oceanprotocol.com", + "siteUrl": "https://market.oceanprotocol.com", "siteImage": "/share.png", "copyright": "All Rights Reserved. Powered by ", "menu": [ @@ -14,12 +14,8 @@ "link": "/profile" } ], + "announcement": "Data NFTs, One-Sided Staking and more. [Explore OceanONDA V4](https://blog.oceanprotocol.com).", "warning": { - "main": "", - "polygonPublish": "Only republish data sets with a pool from ETH Mainnet into Polygon/Matic if the liquidity is **less than or equal to 1000 OCEAN in the original pool**. Doing otherwise will lead to [purgatory](https://github.com/oceanprotocol/list-purgatory) for the data set in Polygon/Matic." - }, - "announcement": { - "main": "Ocean Market is [available on Polygon](https://blog.oceanprotocol.com/ocean-on-polygon-network-8abad19cbf47).", - "polygon": "Polygon/Matic EVM support is in early stages. [Use the Polygon Bridge](https://docs.oceanprotocol.com/tutorials/polygon-bridge/) to get mOCEAN." + "ctd": "Compute-to-Data is still in a testing phase, please use it only on test networks." } } diff --git a/package-lock.json b/package-lock.json index 906b5d821..4e4c49f00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@coingecko/cryptoformat": "^0.4.4", "@loadable/component": "^5.15.2", "@oceanprotocol/art": "^3.2.0", - "@oceanprotocol/lib": "^1.0.0-next.44", + "@oceanprotocol/lib": "^1.0.0-next.45", "@oceanprotocol/typographies": "^0.1.0", "@portis/web3": "^4.0.7", "@tippyjs/react": "^4.2.6", @@ -4518,16 +4518,16 @@ "integrity": "sha512-aUQtg4m5hJlQ0u8C29O9TXJWcAenO3G9vP+vf6LNFkpTDOCMycN/F0SzHS89VNrvGUha8oTDEg7FAkfZBPv2WA==" }, "node_modules/@oceanprotocol/contracts": { - "version": "1.0.0-alpha.34", - "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-1.0.0-alpha.34.tgz", - "integrity": "sha512-ZhNCakYbUpXrffpS98Hj0r5K70IzzTXNoYKBX4Ks3Qqc2T7mhXIxtakzygkM0lEk038ImWuzS2PAZKTATz+X2w==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-1.0.0.tgz", + "integrity": "sha512-rDCIooe1WHipLejuGhx2Wv/88SB7bWrN3+XHCWxXyPKTmmSQsgxKZPPzbIVBQ0ESChQZqGSBBJyqErqwwW4eBw==" }, "node_modules/@oceanprotocol/lib": { - "version": "1.0.0-next.44", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0-next.44.tgz", - "integrity": "sha512-TXrHvY7+t7WSJXAVkSip0hp5byE8G4citJGirB5qJt34VGA+ujd+CoLU1bB/5gFSYH3eM56K4pcUPfCHZjeN3w==", + "version": "1.0.0-next.45", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0-next.45.tgz", + "integrity": "sha512-WsSMZubvS5kVu4p6jQzxeENWitXok7M6yKjuHW0uhYJIYNx8JrZsCgYp9yz0p73a+bEQazSnr1nmvc1jVLU8jQ==", "dependencies": { - "@oceanprotocol/contracts": "^1.0.0-alpha.34", + "@oceanprotocol/contracts": "^1.0.0", "bignumber.js": "^9.0.2", "cross-fetch": "^3.1.5", "crypto-js": "^4.1.1", @@ -44760,16 +44760,16 @@ "integrity": "sha512-aUQtg4m5hJlQ0u8C29O9TXJWcAenO3G9vP+vf6LNFkpTDOCMycN/F0SzHS89VNrvGUha8oTDEg7FAkfZBPv2WA==" }, "@oceanprotocol/contracts": { - "version": "1.0.0-alpha.34", - "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-1.0.0-alpha.34.tgz", - "integrity": "sha512-ZhNCakYbUpXrffpS98Hj0r5K70IzzTXNoYKBX4Ks3Qqc2T7mhXIxtakzygkM0lEk038ImWuzS2PAZKTATz+X2w==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-1.0.0.tgz", + "integrity": "sha512-rDCIooe1WHipLejuGhx2Wv/88SB7bWrN3+XHCWxXyPKTmmSQsgxKZPPzbIVBQ0ESChQZqGSBBJyqErqwwW4eBw==" }, "@oceanprotocol/lib": { - "version": "1.0.0-next.44", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0-next.44.tgz", - "integrity": "sha512-TXrHvY7+t7WSJXAVkSip0hp5byE8G4citJGirB5qJt34VGA+ujd+CoLU1bB/5gFSYH3eM56K4pcUPfCHZjeN3w==", + "version": "1.0.0-next.45", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0-next.45.tgz", + "integrity": "sha512-WsSMZubvS5kVu4p6jQzxeENWitXok7M6yKjuHW0uhYJIYNx8JrZsCgYp9yz0p73a+bEQazSnr1nmvc1jVLU8jQ==", "requires": { - "@oceanprotocol/contracts": "^1.0.0-alpha.34", + "@oceanprotocol/contracts": "^1.0.0", "bignumber.js": "^9.0.2", "cross-fetch": "^3.1.5", "crypto-js": "^4.1.1", diff --git a/package.json b/package.json index 9fced1b7d..bde266e28 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "@coingecko/cryptoformat": "^0.4.4", "@loadable/component": "^5.15.2", "@oceanprotocol/art": "^3.2.0", - "@oceanprotocol/lib": "^1.0.0-next.44", + "@oceanprotocol/lib": "^1.0.0-next.45", "@oceanprotocol/typographies": "^0.1.0", "@portis/web3": "^4.0.7", "@tippyjs/react": "^4.2.6", diff --git a/src/@context/MarketMetadata/_types.ts b/src/@context/MarketMetadata/_types.ts index b84adadc5..c51218edc 100644 --- a/src/@context/MarketMetadata/_types.ts +++ b/src/@context/MarketMetadata/_types.ts @@ -29,6 +29,8 @@ export interface AppConfig { classNameLight: string storageKey: string } + v3MetadataCacheUri: string + v3MarketUri: string } export interface SiteContent { siteTitle: string @@ -40,13 +42,9 @@ export interface SiteContent { name: string link: string }[] + announcement: string warning: { - main: string - polygonPublish: string - } - announcement: { - main: string - polygon: string + ctd: string } } diff --git a/src/@context/UserPreferences.tsx b/src/@context/UserPreferences.tsx index 0d963aa21..84618061e 100644 --- a/src/@context/UserPreferences.tsx +++ b/src/@context/UserPreferences.tsx @@ -31,7 +31,7 @@ interface UserPreferencesValue { const UserPreferencesContext = createContext(null) -const localStorageKey = 'ocean-user-preferences' +const localStorageKey = 'ocean-user-preferences-v4' function getLocalStorage(): UserPreferencesValue { const storageParsed = diff --git a/src/components/@shared/atoms/Badge/index.tsx b/src/components/@shared/atoms/Badge/index.tsx index c5e32e4d4..8a6c01018 100644 --- a/src/components/@shared/atoms/Badge/index.tsx +++ b/src/components/@shared/atoms/Badge/index.tsx @@ -1,11 +1,11 @@ -import React, { ReactElement } from 'react' +import React, { ReactElement, ReactNode } from 'react' import styles from './index.module.css' import classNames from 'classnames/bind' const cx = classNames.bind(styles) export interface BadgeProps { - label: string + label: string | ReactNode className?: string } diff --git a/src/components/App/index.tsx b/src/components/App/index.tsx index d2ef6dbc4..e9eb4580a 100644 --- a/src/components/App/index.tsx +++ b/src/components/App/index.tsx @@ -8,8 +8,7 @@ import AnnouncementBanner from '@shared/AnnouncementBanner' import PrivacyPreferenceCenter from '../Privacy/PrivacyPreferenceCenter' import styles from './index.module.css' import { ToastContainer } from 'react-toastify' -import { useRouter } from 'next/router' -import content from '../../../content/purgatory.json' +import contentPurgatory from '../../../content/purgatory.json' import { useMarketMetadata } from '@context/MarketMetadata' export default function App({ @@ -17,24 +16,22 @@ export default function App({ }: { children: ReactElement }): ReactElement { - const router = useRouter() - const { siteContent, appConfig } = useMarketMetadata() const { accountId } = useWeb3() const { isInPurgatory, purgatoryData } = useAccountPurgatory(accountId) return (
- {router.pathname === '/' && siteContent?.warning.main !== '' && ( - + {siteContent?.announcement !== '' && ( + )}
{isInPurgatory && ( )} diff --git a/src/components/Asset/AssetActions/Compute/FormComputeDataset.module.css b/src/components/Asset/AssetActions/Compute/FormComputeDataset.module.css index 57936ae3a..a6d5aeb18 100644 --- a/src/components/Asset/AssetActions/Compute/FormComputeDataset.module.css +++ b/src/components/Asset/AssetActions/Compute/FormComputeDataset.module.css @@ -22,3 +22,7 @@ border-right: 0; padding: 0; } + +.warning { + margin-bottom: var(--spacer); +} diff --git a/src/components/Asset/AssetActions/Compute/FormComputeDataset.tsx b/src/components/Asset/AssetActions/Compute/FormComputeDataset.tsx index 7cb5a84fd..77971b7eb 100644 --- a/src/components/Asset/AssetActions/Compute/FormComputeDataset.tsx +++ b/src/components/Asset/AssetActions/Compute/FormComputeDataset.tsx @@ -11,6 +11,8 @@ import { useWeb3 } from '@context/Web3' import content from '../../../../../content/pages/startComputeDataset.json' import { Asset } from '@oceanprotocol/lib' import { AccessDetails } from 'src/@types/Price' +import { useMarketMetadata } from '@context/MarketMetadata' +import Alert from '@shared/atoms/Alert' export default function FormStartCompute({ algorithms, @@ -61,6 +63,7 @@ export default function FormStartCompute({ isConsumable: boolean consumableFeedback: string }): ReactElement { + const { siteContent } = useMarketMetadata() const { isValid, values }: FormikContextType<{ algorithm: string }> = useFormikContext() const { asset, isAssetNetwork } = useAsset() @@ -126,6 +129,11 @@ export default function FormStartCompute({ return (
+ {content.form.data.map((field: FormFieldContent) => (
- + {/* TODO: will be fixed in #1481 */} div { + grid-template-columns: repeat(auto-fit, minmax(5rem, 1fr)); + text-align: center; +} + +.fees figure { + display: none; +} diff --git a/src/components/Asset/AssetActions/Pool/Sections/index.tsx b/src/components/Asset/AssetActions/Pool/Sections/index.tsx index 50954298e..0a4854014 100644 --- a/src/components/Asset/AssetActions/Pool/Sections/index.tsx +++ b/src/components/Asset/AssetActions/Pool/Sections/index.tsx @@ -110,17 +110,9 @@ export default function PoolSections() { titlePostfixTitle={`Weight of ${poolInfo?.weightBaseToken}% ${poolInfo?.baseTokenSymbol} & ${poolInfo?.weightDt}% ${poolInfo?.datatokenSymbol}`} > - - + + ))} -

- Counted on-chain from our NFT and pool factories. Does not filter out - assets in{' '} - - list-purgatory - -

+ ) } diff --git a/src/components/Header/Menu.module.css b/src/components/Header/Menu.module.css index 834d53e1b..d35de150c 100644 --- a/src/components/Header/Menu.module.css +++ b/src/components/Header/Menu.module.css @@ -7,13 +7,24 @@ flex-wrap: wrap; } -.logo { - order: 1; +.logo, +.badge { white-space: nowrap; display: flex; +} + +.logo { + order: 0; align-items: center; } +.badge { + cursor: pointer; + margin-top: -0.25rem; + position: relative; + padding: calc(var(--spacer) / 5) calc(var(--spacer) / 4); +} + .navigation { order: 3; margin-top: calc(var(--spacer) / 2); @@ -60,10 +71,10 @@ .title { margin: 0; - margin-right: var(--spacer); display: block; color: var(--color-secondary); font-size: var(--font-size-h4); + margin-right: calc(var(--spacer) / 6); } } @@ -115,6 +126,10 @@ padding-right: 0; } +.link[aria-disabled] { + pointer-events: none; +} + .logo svg { margin-right: calc(var(--spacer) / 3); } @@ -122,3 +137,36 @@ .actions button { text-transform: none; } + +.tooltip[aria-expanded='true'] svg { + transform: rotate(180deg); +} + +.caret, +svg.caret { + width: var(--font-size-mini); + height: var(--font-size-mini); + fill: var(--brand-white); + opacity: 0.7; + transition: transform 0.2s ease-out; + vertical-align: middle; + margin-left: calc(var(--spacer) / 12); +} + +@media screen and (min-width: 42rem) { + .caret, + svg.caret { + display: inline-block; + } +} + +.versions { + padding: calc(var(--spacer) / 4); +} + +.versions .link { + display: inline-block; + margin: 0 calc(var(--spacer) / 4); + padding: 0; + font-size: var(--font-size-small); +} diff --git a/src/components/Header/Menu.tsx b/src/components/Header/Menu.tsx index a0fd29948..7e0f090a5 100644 --- a/src/components/Header/Menu.tsx +++ b/src/components/Header/Menu.tsx @@ -9,7 +9,8 @@ import SearchBar from './SearchBar' import styles from './Menu.module.css' import { useRouter } from 'next/router' import { useMarketMetadata } from '@context/MarketMetadata' - +import Tooltip from '@shared/atoms/Tooltip' +import Caret from '@images/caret.svg' const Wallet = loadable(() => import('./Wallet')) declare type MenuItem = { @@ -33,19 +34,41 @@ function MenuLink({ item }: { item: MenuItem }) { } export default function Menu(): ReactElement { - const { siteContent } = useMarketMetadata() + const { appConfig, siteContent } = useMarketMetadata() return (