diff --git a/.env.example b/.env.example index 60a85927b..9fca81994 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,3 @@ - #NEXT_PUBLIC_INFURA_PROJECT_ID="xxx" #NEXT_PUBLIC_MARKET_FEE_ADDRESS="0xxx" #NEXT_PUBLIC_PUBLISHER_MARKET_ORDER_FEE="1" @@ -8,11 +7,6 @@ #NEXT_PUBLIC_CONSUME_MARKET_POOL_SWAP_FEE="1" #NEXT_PUBLIC_CONSUME_MARKET_FIXED_SWAP_FEE="1" - - -#NEXT_PUBLIC_PORTIS_ID="xxx" - - # # ADVANCED SETTINGS # diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fda9b1700..65a7f324e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -17,7 +17,6 @@ jobs: - run: npm run build env: NEXT_PUBLIC_INFURA_PROJECT_ID: ${{ secrets.NEXT_PUBLIC_INFURA_PROJECT_ID }} - NEXT_PUBLIC_PORTIS_ID: ${{ secrets.NEXT_PUBLIC_PORTIS_ID }} - run: npm run deploy:s3 env: diff --git a/app.config.js b/app.config.js index 284628695..a8b439129 100644 --- a/app.config.js +++ b/app.config.js @@ -75,9 +75,6 @@ module.exports = { storageKey: 'oceanDarkMode' }, - // Wallets - portisId: process.env.NEXT_PUBLIC_PORTIS_ID || 'xxx', - // Used to show or hide the fixed, dynamic or free price options // tab to publishers during the price creation. allowFixedPricing: process.env.NEXT_PUBLIC_ALLOW_FIXED_PRICING || 'true', diff --git a/content/pages/edit.json b/content/pages/edit.json index 59d901dbb..2d526f630 100644 --- a/content/pages/edit.json +++ b/content/pages/edit.json @@ -30,13 +30,22 @@ "required": true }, { - "name": "links", - "label": "Sample file", - "placeholder": "e.g. https://file.com/samplefile.json", - "help": "Please provide a URL to a sample of your data set file. This file should reveal the data structure of your data set, e.g. by including the header and one line of a CSV file. This file URL will be publicly available after publishing. **Please make sure that the endpoint is accessible over the internet and is not protected by a firewall or by credentials.**", + "name": "files", + "label": "New file", + "placeholder": "e.g. https://file.com/file.json", + "help": "This URL will be stored encrypted after publishing. **Please make sure that the endpoint is accessible over the internet and is not protected by a firewall or by credentials.** For a compute data set, your file should match the file type required by the algorithm, and should not exceed 1 GB in file size. Leaving this field empty will not remove the current value.", "prominentHelp": true, "type": "files" }, + { + "name": "links", + "label": "New sample file", + "placeholder": "e.g. https://file.com/samplefile.json", + "help": "Please provide a URL to a sample of your data set file. This file should reveal the data structure of your data set, e.g. by including the header and one line of a CSV file. This file URL will be publicly available after publishing. **Please make sure that the endpoint is accessible over the internet and is not protected by a firewall or by credentials.** Leaving this field empty will not remove the current value.", + "prominentHelp": true, + "type": "files" + }, + { "name": "timeout", "label": "Timeout", diff --git a/content/site.json b/content/site.json index 78ee99ef2..db26be565 100644 --- a/content/site.json +++ b/content/site.json @@ -14,7 +14,7 @@ "link": "/profile" } ], - "announcement": "Data NFTs, One-Sided Staking and more. [Explore OceanONDA V4](https://blog.oceanprotocol.com/oceanonda-v4-production-has-arrived-cb4fe8faaf39).", + "announcement": "Data NFTs, One-Sided Staking and more.", "warning": { "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 fc0a91f13..91107224f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,8 @@ "@coingecko/cryptoformat": "^0.5.4", "@loadable/component": "^5.15.2", "@oceanprotocol/art": "^3.2.0", - "@oceanprotocol/lib": "^1.0.0", + "@oceanprotocol/lib": "^1.1.2", "@oceanprotocol/typographies": "^0.1.0", - "@portis/web3": "^4.0.7", "@tippyjs/react": "^4.2.6", "@urql/exchange-refocus": "^0.2.5", "@walletconnect/web3-provider": "^1.7.8", @@ -4589,9 +4588,9 @@ "integrity": "sha512-rDCIooe1WHipLejuGhx2Wv/88SB7bWrN3+XHCWxXyPKTmmSQsgxKZPPzbIVBQ0ESChQZqGSBBJyqErqwwW4eBw==" }, "node_modules/@oceanprotocol/lib": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0.tgz", - "integrity": "sha512-nJ8MBQZtv4fldTc9m2BlpvirImVOa3V2/ckJH1xGPQ4PZ4k5FZWmOQqM7LOdnwUJje661GT+SewR5MtNj/ewmw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.1.2.tgz", + "integrity": "sha512-7NrD0qhmIKyv3GVkFlX31BdQ17aZU18a6HRogm0kpGK1Ldt9QwgEVQ157JA/lF+gUt4PB95u1OZSxsPUsBMx/g==", "dependencies": { "@oceanprotocol/contracts": "^1.0.0", "bignumber.js": "^9.0.2", @@ -5239,17 +5238,6 @@ "url": "https://opencollective.com/popperjs" } }, - "node_modules/@portis/web3": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@portis/web3/-/web3-4.1.0.tgz", - "integrity": "sha512-efGssWqrwpYPzQyOupYPpWmjPU/WwcFGoPXzjLbjQ3Z4Z7Q4qqqwkMeE1mwMbxWudFKlHz/VxdpJrDA42Ufqrg==", - "dependencies": { - "ethereumjs-util": "5.2.0", - "penpal": "3.0.7", - "pocket-js-core": "0.0.3", - "web3-provider-engine": "16.0.1" - } - }, "node_modules/@react-spring/animated": { "version": "9.4.5", "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.4.5.tgz", @@ -33516,11 +33504,6 @@ "node": ">=0.12" } }, - "node_modules/penpal": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/penpal/-/penpal-3.0.7.tgz", - "integrity": "sha512-WSXiq5HnEvzvY05SHhaXcsviUmCvh4Ze8AiIZzvmdzaaYAAx4rx8c6Xq6+MaVDG/Nfve3VmGD8HyRP3CkPvPbQ==" - }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -33616,48 +33599,6 @@ "node": ">=6" } }, - "node_modules/pocket-js-core": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/pocket-js-core/-/pocket-js-core-0.0.3.tgz", - "integrity": "sha512-OUTEvEVutdjLT6YyldvAlSebpBueUUWg2XKxGNt5u3QqrmLpBOOBmdDnGMNJ+lEwXtko+JqgwFq+HTi4g1QDVg==", - "dependencies": { - "axios": "^0.18.0" - } - }, - "node_modules/pocket-js-core/node_modules/axios": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", - "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", - "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410", - "dependencies": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" - } - }, - "node_modules/pocket-js-core/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/pocket-js-core/node_modules/follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dependencies": { - "debug": "=3.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/pocket-js-core/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/polished": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz", @@ -44975,9 +44916,9 @@ "integrity": "sha512-rDCIooe1WHipLejuGhx2Wv/88SB7bWrN3+XHCWxXyPKTmmSQsgxKZPPzbIVBQ0ESChQZqGSBBJyqErqwwW4eBw==" }, "@oceanprotocol/lib": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0.tgz", - "integrity": "sha512-nJ8MBQZtv4fldTc9m2BlpvirImVOa3V2/ckJH1xGPQ4PZ4k5FZWmOQqM7LOdnwUJje661GT+SewR5MtNj/ewmw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.1.2.tgz", + "integrity": "sha512-7NrD0qhmIKyv3GVkFlX31BdQ17aZU18a6HRogm0kpGK1Ldt9QwgEVQ157JA/lF+gUt4PB95u1OZSxsPUsBMx/g==", "requires": { "@oceanprotocol/contracts": "^1.0.0", "bignumber.js": "^9.0.2", @@ -45465,17 +45406,6 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==" }, - "@portis/web3": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@portis/web3/-/web3-4.1.0.tgz", - "integrity": "sha512-efGssWqrwpYPzQyOupYPpWmjPU/WwcFGoPXzjLbjQ3Z4Z7Q4qqqwkMeE1mwMbxWudFKlHz/VxdpJrDA42Ufqrg==", - "requires": { - "ethereumjs-util": "5.2.0", - "penpal": "3.0.7", - "pocket-js-core": "0.0.3", - "web3-provider-engine": "16.0.1" - } - }, "@react-spring/animated": { "version": "9.4.5", "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.4.5.tgz", @@ -67519,11 +67449,6 @@ "sha.js": "^2.4.8" } }, - "penpal": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/penpal/-/penpal-3.0.7.tgz", - "integrity": "sha512-WSXiq5HnEvzvY05SHhaXcsviUmCvh4Ze8AiIZzvmdzaaYAAx4rx8c6Xq6+MaVDG/Nfve3VmGD8HyRP3CkPvPbQ==" - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -67592,46 +67517,6 @@ "ts-pnp": "^1.1.6" } }, - "pocket-js-core": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/pocket-js-core/-/pocket-js-core-0.0.3.tgz", - "integrity": "sha512-OUTEvEVutdjLT6YyldvAlSebpBueUUWg2XKxGNt5u3QqrmLpBOOBmdDnGMNJ+lEwXtko+JqgwFq+HTi4g1QDVg==", - "requires": { - "axios": "^0.18.0" - }, - "dependencies": { - "axios": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", - "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", - "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "polished": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz", diff --git a/package.json b/package.json index 1a9b95e7c..ae0d5dde8 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,8 @@ "@coingecko/cryptoformat": "^0.5.4", "@loadable/component": "^5.15.2", "@oceanprotocol/art": "^3.2.0", - "@oceanprotocol/lib": "^1.0.0", + "@oceanprotocol/lib": "^1.1.2", "@oceanprotocol/typographies": "^0.1.0", - "@portis/web3": "^4.0.7", "@tippyjs/react": "^4.2.6", "@urql/exchange-refocus": "^0.2.5", "@walletconnect/web3-provider": "^1.7.8", diff --git a/src/@context/MarketMetadata/_types.ts b/src/@context/MarketMetadata/_types.ts index c51218edc..1be2cb03f 100644 --- a/src/@context/MarketMetadata/_types.ts +++ b/src/@context/MarketMetadata/_types.ts @@ -18,7 +18,6 @@ export interface AppConfig { consumeMarketPoolSwapFee: string consumeMarketFixedSwapFee: string currencies: string[] - portisId: string allowFixedPricing: string allowDynamicPricing: string allowFreePricing: string diff --git a/src/@context/Web3.tsx b/src/@context/Web3.tsx index a97df6812..c7a7732a5 100644 --- a/src/@context/Web3.tsx +++ b/src/@context/Web3.tsx @@ -9,7 +9,7 @@ import React, { } from 'react' import Web3 from 'web3' import Web3Modal, { getProviderInfo, IProviderInfo } from 'web3modal' -import { infuraProjectId as infuraId, portisId } from '../../app.config' +import { infuraProjectId as infuraId } from '../../app.config' import WalletConnectProvider from '@walletconnect/web3-provider' import { LoggerInstance } from '@oceanprotocol/lib' import { isBrowser } from '@utils/index' @@ -58,12 +58,6 @@ const providerOptions = isBrowser walletconnect: { package: WalletConnectProvider, options: { infuraId } - }, - portis: { - package: require('@portis/web3'), - options: { - id: portisId - } } // torus: { // package: require('@toruslabs/torus-embed') diff --git a/src/@utils/provider.ts b/src/@utils/provider.ts index 30497d5f6..817b6d376 100644 --- a/src/@utils/provider.ts +++ b/src/@utils/provider.ts @@ -1,6 +1,6 @@ import { downloadFileBrowser, - FileMetadata, + FileInfo, LoggerInstance, ProviderInstance } from '@oceanprotocol/lib' @@ -25,7 +25,7 @@ export async function getFileDidInfo( did: string, serviceId: string, providerUrl: string -): Promise { +): Promise { try { const response = await ProviderInstance.checkDidFiles( did, @@ -41,7 +41,7 @@ export async function getFileDidInfo( export async function getFileUrlInfo( url: string, providerUrl: string -): Promise { +): Promise { try { const response = await ProviderInstance.checkFileUrl(url, providerUrl) return response diff --git a/src/components/@shared/AnnouncementBanner/index.module.css b/src/components/@shared/AnnouncementBanner/index.module.css index 987a45de0..751ee3fcc 100644 --- a/src/components/@shared/AnnouncementBanner/index.module.css +++ b/src/components/@shared/AnnouncementBanner/index.module.css @@ -24,10 +24,6 @@ display: inline-block; } -.banner button { - font-size: calc(var(--font-size-small) / 1.1); -} - .text { font-size: var(--font-size-small); font-weight: var(--font-weight-bold); @@ -41,6 +37,13 @@ text-decoration: underline; } +.link { + color: inherit; + text-decoration: underline; + text-transform: inherit; + font-size: var(--font-size-small); +} + .text p:last-child { margin-bottom: 0; } diff --git a/src/components/@shared/AnnouncementBanner/index.tsx b/src/components/@shared/AnnouncementBanner/index.tsx index 1e0627f27..ef0ee3226 100644 --- a/src/components/@shared/AnnouncementBanner/index.tsx +++ b/src/components/@shared/AnnouncementBanner/index.tsx @@ -37,7 +37,12 @@ export default function AnnouncementBanner({
{text && } {action && ( - )} diff --git a/src/components/@shared/FileIcon/index.tsx b/src/components/@shared/FileIcon/index.tsx index 1d5e3145b..65193b0be 100644 --- a/src/components/@shared/FileIcon/index.tsx +++ b/src/components/@shared/FileIcon/index.tsx @@ -4,7 +4,7 @@ import classNames from 'classnames/bind' import cleanupContentType from '@utils/cleanupContentType' import styles from './index.module.css' import Loader from '@shared/atoms/Loader' -import { FileMetadata } from '@oceanprotocol/lib' +import { FileInfo } from '@oceanprotocol/lib' const cx = classNames.bind(styles) diff --git a/src/components/@shared/FormFields/FilesInput/Info.tsx b/src/components/@shared/FormFields/FilesInput/Info.tsx index 1971760f5..2f1e8b782 100644 --- a/src/components/@shared/FormFields/FilesInput/Info.tsx +++ b/src/components/@shared/FormFields/FilesInput/Info.tsx @@ -2,13 +2,13 @@ import React, { ReactElement } from 'react' import { prettySize } from './utils' import cleanupContentType from '@utils/cleanupContentType' import styles from './Info.module.css' -import { FileMetadata } from '@oceanprotocol/lib' +import { FileInfo as FileInfoData } from '@oceanprotocol/lib' export default function FileInfo({ file, handleClose }: { - file: FileMetadata + file: FileInfoData handleClose(): void }): ReactElement { const contentTypeCleaned = file.contentType diff --git a/src/components/App/index.tsx b/src/components/App/index.tsx index e9eb4580a..dff602cab 100644 --- a/src/components/App/index.tsx +++ b/src/components/App/index.tsx @@ -19,11 +19,26 @@ export default function App({ const { siteContent, appConfig } = useMarketMetadata() const { accountId } = useWeb3() const { isInPurgatory, purgatoryData } = useAccountPurgatory(accountId) + function openInNewTab() { + window + .open( + 'https://blog.oceanprotocol.com/how-to-publish-a-data-nft-f58ad2a622a9', + '_blank' + ) + .focus() + } return (
{siteContent?.announcement !== '' && ( - + )}
diff --git a/src/components/Asset/AssetActions/Compute/index.tsx b/src/components/Asset/AssetActions/Compute/index.tsx index 739a0c273..8e5b9fd8b 100644 --- a/src/components/Asset/AssetActions/Compute/index.tsx +++ b/src/components/Asset/AssetActions/Compute/index.tsx @@ -3,7 +3,7 @@ import { Asset, DDO, PublisherTrustedAlgorithm, - FileMetadata + FileInfo } from '@oceanprotocol/lib' import { toast } from 'react-toastify' import Price from '@shared/Price' @@ -46,7 +46,7 @@ export default function Compute({ ddo: Asset accessDetails: AccessDetails dtBalance: string - file: FileMetadata + file: FileInfo fileIsLoading?: boolean isConsumable?: boolean consumableFeedback?: string diff --git a/src/components/Asset/AssetActions/Download.tsx b/src/components/Asset/AssetActions/Download.tsx index a63fb5996..fe536b94f 100644 --- a/src/components/Asset/AssetActions/Download.tsx +++ b/src/components/Asset/AssetActions/Download.tsx @@ -7,7 +7,7 @@ import ButtonBuy from '@shared/ButtonBuy' import { secondsToString } from '@utils/ddo' import AlgorithmDatasetsListForCompute from './Compute/AlgorithmDatasetsListForCompute' import styles from './Download.module.css' -import { FileMetadata, LoggerInstance, ZERO_ADDRESS } from '@oceanprotocol/lib' +import { FileInfo, LoggerInstance, ZERO_ADDRESS } from '@oceanprotocol/lib' import { order } from '@utils/order' import { AssetExtended } from 'src/@types/AssetExtended' import { buyDtFromPool } from '@utils/pool' @@ -29,7 +29,7 @@ export default function Download({ consumableFeedback }: { asset: AssetExtended - file: FileMetadata + file: FileInfo isBalanceSufficient: boolean dtBalance: string fileIsLoading?: boolean diff --git a/src/components/Asset/AssetActions/index.tsx b/src/components/Asset/AssetActions/index.tsx index e9ee4b509..4995acbc0 100644 --- a/src/components/Asset/AssetActions/index.tsx +++ b/src/components/Asset/AssetActions/index.tsx @@ -1,7 +1,7 @@ import React, { ReactElement, useState, useEffect } from 'react' import Compute from './Compute' import Consume from './Download' -import { FileMetadata, LoggerInstance, Datatoken } from '@oceanprotocol/lib' +import { FileInfo, LoggerInstance, Datatoken } from '@oceanprotocol/lib' import Tabs, { TabsItem } from '@shared/atoms/Tabs' import { compareAsBN } from '@utils/numbers' import Pool from './Pool' @@ -37,7 +37,7 @@ export default function AssetActions({ const [isBalanceSufficient, setIsBalanceSufficient] = useState() const [dtBalance, setDtBalance] = useState() - const [fileMetadata, setFileMetadata] = useState() + const [fileMetadata, setFileMetadata] = useState() const [fileIsLoading, setFileIsLoading] = useState(false) const isCompute = Boolean( asset?.services.filter((service) => service.type === 'compute')[0] diff --git a/src/components/Asset/Edit/EditMetadata.tsx b/src/components/Asset/Edit/EditMetadata.tsx index 1028c9ba8..c34abfd01 100644 --- a/src/components/Asset/Edit/EditMetadata.tsx +++ b/src/components/Asset/Edit/EditMetadata.tsx @@ -24,6 +24,7 @@ import EditFeedback from './EditFeedback' import { useAsset } from '@context/Asset' import { setNftMetadata } from '@utils/nft' import { sanitizeUrl } from '@utils/url' +import { getEncryptedFiles } from '@utils/provider' export default function Edit({ asset @@ -64,6 +65,7 @@ export default function Edit({ resetForm: () => void ) { try { + let updatedFiles = asset.services[0].files const linksTransformed = values.links?.length && values.links[0].valid && [sanitizeUrl(values.links[0].url)] const updatedMetadata: Metadata = { @@ -78,17 +80,43 @@ export default function Edit({ values.price !== asset.accessDetails.price && (await updateFixedPrice(values.price)) + if (values.files[0]?.url) { + const file = { + nftAddress: asset.nftAddress, + datatokenAddress: asset.services[0].datatokenAddress, + files: [ + { + type: 'url', + index: 0, + url: values.files[0].url, + method: 'GET' + } + ] + } + const filesEncrypted = await getEncryptedFiles( + file, + asset.services[0].serviceEndpoint + ) + updatedFiles = filesEncrypted + } const updatedService: Service = { ...asset.services[0], - timeout: mapTimeoutStringToSeconds(values.timeout) + timeout: mapTimeoutStringToSeconds(values.timeout), + files: updatedFiles } + // TODO: remove version update at a later time const updatedAsset: Asset = { - ...asset, + ...(asset as Asset), + version: '4.1.0', metadata: updatedMetadata, services: [updatedService] } + // delete custom helper properties injected in the market so we don't write them on chain + delete (updatedAsset as AssetExtended).accessDetails + delete (updatedAsset as AssetExtended).datatokens + delete (updatedAsset as AssetExtended).stats const setMetadataTx = await setNftMetadata( updatedAsset, accountId, diff --git a/src/components/Asset/Edit/FormEditMetadata.tsx b/src/components/Asset/Edit/FormEditMetadata.tsx index e7e5af8f2..a0a556fac 100644 --- a/src/components/Asset/Edit/FormEditMetadata.tsx +++ b/src/components/Asset/Edit/FormEditMetadata.tsx @@ -1,9 +1,8 @@ -import React, { ChangeEvent, ReactElement, useState } from 'react' +import React, { ChangeEvent, ReactElement } from 'react' import { Field, Form, FormikContextType, useFormikContext } from 'formik' import Input, { InputProps } from '@shared/FormInput' import FormActions from './FormActions' import styles from './FormEdit.module.css' -import { FormPublishData } from '../../Publish/_types' import { useAsset } from '@context/Asset' import { MetadataEditForm } from './_types' diff --git a/src/components/Asset/Edit/_constants.ts b/src/components/Asset/Edit/_constants.ts index a03a1416a..d27e5e2d9 100644 --- a/src/components/Asset/Edit/_constants.ts +++ b/src/components/Asset/Edit/_constants.ts @@ -1,4 +1,4 @@ -import { Metadata, ServiceComputeOptions } from '@oceanprotocol/lib' +import { FileInfo, Metadata, ServiceComputeOptions } from '@oceanprotocol/lib' import { secondsToString } from '@utils/ddo' import * as Yup from 'yup' import { MetadataEditForm } from './_types' @@ -10,6 +10,7 @@ export const validationSchema = Yup.object().shape({ description: Yup.string().required('Required').min(10), price: Yup.number().required('Required'), links: Yup.array().nullable(), + files: Yup.array().nullable(), timeout: Yup.string().required('Required'), author: Yup.string().nullable() }) @@ -24,6 +25,7 @@ export function getInitialValues( description: metadata?.description, price, links: metadata?.links, + files: '', timeout: secondsToString(timeout), author: metadata?.author } diff --git a/src/components/Asset/Edit/_types.ts b/src/components/Asset/Edit/_types.ts index b510246c3..0553ffa23 100644 --- a/src/components/Asset/Edit/_types.ts +++ b/src/components/Asset/Edit/_types.ts @@ -6,5 +6,6 @@ export interface MetadataEditForm { timeout: string price?: string links?: string | any[] + files: string | any[] author?: string } diff --git a/src/components/Header/Wallet/Details.tsx b/src/components/Header/Wallet/Details.tsx index 031597ec1..c5593449a 100644 --- a/src/components/Header/Wallet/Details.tsx +++ b/src/components/Header/Wallet/Details.tsx @@ -1,4 +1,4 @@ -import React, { ChangeEvent, ReactElement, useEffect, useState } from 'react' +import React, { ReactElement, useEffect, useState } from 'react' import { formatCurrency } from '@coingecko/cryptoformat' import { useUserPreferences } from '@context/UserPreferences' import Button from '@shared/atoms/Button' @@ -7,11 +7,9 @@ import Conversion from '@shared/Price/Conversion' import { useWeb3 } from '@context/Web3' import { getOceanConfig } from '@utils/ocean' import styles from './Details.module.css' -import InputElement from '@shared/FormInput/InputElement' export default function Details(): ReactElement { const { - web3Provider, web3ProviderInfo, web3Modal, connect, @@ -27,7 +25,6 @@ export default function Details(): ReactElement { address: string symbol: string }>() - const [portisNetwork, setPortisNetwork] = useState() useEffect(() => { if (!networkId) return @@ -45,16 +42,6 @@ export default function Details(): ReactElement { }) }, [networkData, networkId]) - // Handle network change for Portis - async function handlePortisNetworkChange(e: ChangeEvent) { - setPortisNetwork(e.target.value) - const portisNetworkName = e.target.value.toLowerCase() - await web3Provider._portis.changeNetwork(portisNetworkName) - // TODO: using our connect initializes a new Portis instance, - // which then defaults back to initial network (Mainnet). - // await connect() - } - return (
    @@ -76,16 +63,6 @@ export default function Details(): ReactElement { {web3ProviderInfo?.name} - {web3ProviderInfo?.name === 'Portis' && ( - - )} {web3ProviderInfo?.name === 'MetaMask' && (

    - {web3ProviderInfo?.name === 'Portis' && ( - - )}