oceanprotocol/market

View on GitHub
src/components/Publish/Metadata/index.tsx

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
import Input from '@shared/FormInput'
import { Field, useFormikContext } from 'formik'
import React, { ReactElement, useEffect } from 'react'
import content from '../../../../content/publish/form.json'
import { FormPublishData } from '../_types'
import styles from './index.module.css'
import { getFieldContent } from '@utils/form'

export default function MetadataFields(): ReactElement {
  // connect with Form state, use for conditional field rendering
  const { setFieldValue } = useFormikContext<FormPublishData>()

  // Populate the Docker image field with our presets in _constants,
  // transformPublishFormToDdo will do the rest.
  useEffect(() => {
    setFieldValue('metadata.type', 'dataset')
  }, [setFieldValue])

  return (
    <>
      <Field
        {...getFieldContent('nft', content.metadata.fields)}
        component={Input}
        name="metadata.nft"
      />
      <Field
        {...getFieldContent('name', content.metadata.fields)}
        component={Input}
        name="metadata.name"
      />
      <Field
        {...getFieldContent('description', content.metadata.fields)}
        component={Input}
        name="metadata.description"
        rows={7}
      />
      <Field
        {...getFieldContent('author', content.metadata.fields)}
        component={Input}
        name="metadata.author"
      />
      <Field
        {...getFieldContent('tags', content.metadata.fields)}
        component={Input}
        name="metadata.tags"
      />

      <Field
        {...getFieldContent('termsAndConditions', content.metadata.fields)}
        component={Input}
        name="metadata.termsAndConditions"
      />
      <a
        className={styles.termsLink}
        href="/terms"
        rel="noopener noreferrer"
        target="_blank"
      >
        View Terms and Conditions
      </a>
    </>
  )
}