mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
* migrate to Next.js * migrate scripts * generate markdown pages * make all the markdown work * fix profile, fix image loading * git+ssh → git+https, again * bump packages * maybe windows build fix * add public to gitignore Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro> * Next.js v12! Webpack 5! No build hacks anymore * json import fixes * fixes Co-authored-by: mihaisc <mihai.scarlat@smartcontrol.ro>
144 lines
4.2 KiB
TypeScript
144 lines
4.2 KiB
TypeScript
import { useOcean } from '@context/Ocean'
|
|
import { useWeb3 } from '@context/Web3'
|
|
import { Formik } from 'formik'
|
|
import React, { ReactElement, useState } from 'react'
|
|
import { useAsset } from '@context/Asset'
|
|
import FormEditComputeDataset from './FormEditComputeDataset'
|
|
import { Logger, ServiceComputePrivacy } from '@oceanprotocol/lib'
|
|
import { useUserPreferences } from '@context/UserPreferences'
|
|
import DebugEditCompute from './DebugEditCompute'
|
|
import styles from './index.module.css'
|
|
import { transformComputeFormToServiceComputePrivacy } from '@utils/compute'
|
|
import { setMinterToDispenser, setMinterToPublisher } from '@utils/freePrice'
|
|
import Web3Feedback from '@shared/Web3Feedback'
|
|
import MetadataFeedback from '../../../Publish/MetadataFeedback'
|
|
import { getInitialValues, validationSchema } from './_constants'
|
|
import content from '../../../../../content/pages/editComputeDataset.json'
|
|
|
|
export default function EditComputeDataset({
|
|
setShowEdit
|
|
}: {
|
|
setShowEdit: (show: boolean) => void
|
|
}): ReactElement {
|
|
const { debug } = useUserPreferences()
|
|
const { ocean } = useOcean()
|
|
const { accountId } = useWeb3()
|
|
const { ddo, price, isAssetNetwork, refreshDdo } = useAsset()
|
|
const [success, setSuccess] = useState<string>()
|
|
const [error, setError] = useState<string>()
|
|
|
|
const hasFeedback = error || success
|
|
|
|
async function handleSubmit(
|
|
values: ComputePrivacyForm,
|
|
resetForm: () => void
|
|
) {
|
|
try {
|
|
if (price.type === 'free') {
|
|
const tx = await setMinterToPublisher(
|
|
ocean,
|
|
ddo.dataToken,
|
|
accountId,
|
|
setError
|
|
)
|
|
if (!tx) return
|
|
}
|
|
const privacy = await transformComputeFormToServiceComputePrivacy(
|
|
values,
|
|
ocean
|
|
)
|
|
|
|
const ddoEditedComputePrivacy = await ocean.compute.editComputePrivacy(
|
|
ddo,
|
|
1,
|
|
privacy as ServiceComputePrivacy
|
|
)
|
|
|
|
if (!ddoEditedComputePrivacy) {
|
|
setError(content.form.error)
|
|
Logger.error(content.form.error)
|
|
return
|
|
}
|
|
|
|
const storedddo = await ocean.assets.updateMetadata(
|
|
ddoEditedComputePrivacy,
|
|
accountId
|
|
)
|
|
if (!storedddo) {
|
|
setError(content.form.error)
|
|
Logger.error(content.form.error)
|
|
return
|
|
} else {
|
|
if (price.type === 'free') {
|
|
const tx = await setMinterToDispenser(
|
|
ocean,
|
|
ddo.dataToken,
|
|
accountId,
|
|
setError
|
|
)
|
|
if (!tx) return
|
|
}
|
|
// Edit succeeded
|
|
setSuccess(content.form.success)
|
|
resetForm()
|
|
}
|
|
} catch (error) {
|
|
Logger.error(error.message)
|
|
setError(error.message)
|
|
}
|
|
}
|
|
|
|
return (
|
|
<Formik
|
|
initialValues={
|
|
{}
|
|
// getInitialValues(
|
|
// ddo.findServiceByType('compute').attributes.main.privacy
|
|
// )
|
|
}
|
|
validationSchema={validationSchema}
|
|
onSubmit={async (values, { resetForm }) => {
|
|
// move user's focus to top of screen
|
|
window.scrollTo({ top: 0, left: 0, behavior: 'smooth' })
|
|
// kick off editing
|
|
// await handleSubmit(values, resetForm)
|
|
}}
|
|
>
|
|
{({ values, isSubmitting }) =>
|
|
isSubmitting || hasFeedback ? (
|
|
<MetadataFeedback
|
|
title="Updating Data Set"
|
|
error={error}
|
|
success={success}
|
|
setError={setError}
|
|
successAction={{
|
|
name: content.form.successAction,
|
|
onClick: async () => {
|
|
await refreshDdo()
|
|
setShowEdit(false)
|
|
}
|
|
}}
|
|
/>
|
|
) : (
|
|
<>
|
|
<p className={styles.description}>{content.description}</p>
|
|
<article className={styles.grid}>
|
|
<FormEditComputeDataset
|
|
title={content.form.title}
|
|
data={content.form.data}
|
|
setShowEdit={setShowEdit}
|
|
/>
|
|
</article>
|
|
<Web3Feedback isAssetNetwork={isAssetNetwork} />
|
|
{debug === true && (
|
|
<div className={styles.grid}>
|
|
{/* <DebugEditCompute values={values} ddo={ddo} /> */}
|
|
</div>
|
|
)}
|
|
</>
|
|
)
|
|
}
|
|
</Formik>
|
|
)
|
|
}
|