1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00

Merge pull request #402 from oceanprotocol/issue397-form-persistance

save form values for both publish forms
This commit is contained in:
Bogdan Fazakas 2021-02-25 15:29:10 +02:00 committed by GitHub
commit 9b78e46c97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 10 deletions

View File

@ -13,6 +13,8 @@ import Input from '../../atoms/Input'
import Button from '../../atoms/Button' import Button from '../../atoms/Button'
import { FormContent, FormFieldProps } from '../../../@types/Form' import { FormContent, FormFieldProps } from '../../../@types/Form'
import { MetadataPublishFormAlgorithm } from '../../../@types/MetaData' import { MetadataPublishFormAlgorithm } from '../../../@types/MetaData'
import { initialValues as initialValuesAlgorithm } from '../../../models/FormAlgoPublish'
import stylesIndex from './index.module.css' import stylesIndex from './index.module.css'
const query = graphql` const query = graphql`
@ -109,7 +111,10 @@ export default function FormPublish(): ReactElement {
const resetFormAndClearStorage = (e: FormEvent<Element>) => { const resetFormAndClearStorage = (e: FormEvent<Element>) => {
e.preventDefault() e.preventDefault()
resetForm({ values: initialValues, status: 'empty' }) resetForm({
values: initialValuesAlgorithm as MetadataPublishFormAlgorithm,
status: 'empty'
})
setStatus('empty') setStatus('empty')
} }

View File

@ -7,6 +7,7 @@ import Input from '../../atoms/Input'
import Button from '../../atoms/Button' import Button from '../../atoms/Button'
import { FormContent, FormFieldProps } from '../../../@types/Form' import { FormContent, FormFieldProps } from '../../../@types/Form'
import { MetadataPublishFormDataset } from '../../../@types/MetaData' import { MetadataPublishFormDataset } from '../../../@types/MetaData'
import { initialValues as initialValuesDataset } from '../../../models/FormAlgoPublish'
import stylesIndex from './index.module.css' import stylesIndex from './index.module.css'
const query = graphql` const query = graphql`
@ -72,7 +73,10 @@ export default function FormPublish(): ReactElement {
const resetFormAndClearStorage = (e: FormEvent<Element>) => { const resetFormAndClearStorage = (e: FormEvent<Element>) => {
e.preventDefault() e.preventDefault()
resetForm({ values: initialValues, status: 'empty' }) resetForm({
values: initialValuesDataset as MetadataPublishFormDataset,
status: 'empty'
})
setStatus('empty') setStatus('empty')
} }

View File

@ -1,5 +1,5 @@
import React, { ReactElement, useState, useEffect } from 'react' import React, { ReactElement, useState, useEffect } from 'react'
import { Formik } from 'formik' import { Formik, FormikState } from 'formik'
import { usePublish, useOcean } from '@oceanprotocol/react' import { usePublish, useOcean } from '@oceanprotocol/react'
import styles from './index.module.css' import styles from './index.module.css'
import FormPublish from './FormPublish' import FormPublish from './FormPublish'
@ -73,6 +73,22 @@ export default function PublishPage({
const [error, setError] = useState<string>() const [error, setError] = useState<string>()
const [title, setTitle] = useState<string>() const [title, setTitle] = useState<string>()
const [did, setDid] = useState<string>() const [did, setDid] = useState<string>()
const [algoInitialValues, setAlgoInitialValues] = useState<
Partial<MetadataPublishFormAlgorithm>
>(
(localStorage.getItem('ocean-publish-form-algorithms') &&
(JSON.parse(localStorage.getItem('ocean-publish-form-algorithms'))
.initialValues as MetadataPublishFormAlgorithm)) ||
initialValuesAlgorithm
)
const [datasetInitialValues, setdatasetInitialValues] = useState<
Partial<MetadataPublishFormDataset>
>(
(localStorage.getItem('ocean-publish-form-datasets') &&
(JSON.parse(localStorage.getItem('ocean-publish-form-datasets'))
.initialValues as MetadataPublishFormDataset)) ||
initialValues
)
const [publishType, setPublishType] = useState<MetadataMain['type']>( const [publishType, setPublishType] = useState<MetadataMain['type']>(
'dataset' 'dataset'
) )
@ -87,7 +103,9 @@ export default function PublishPage({
async function handleSubmit( async function handleSubmit(
values: Partial<MetadataPublishFormDataset>, values: Partial<MetadataPublishFormDataset>,
resetForm: () => void resetForm: (
nextState?: Partial<FormikState<Partial<MetadataPublishFormDataset>>>
) => void
): Promise<void> { ): Promise<void> {
const metadata = transformPublishFormToMetadata(values) const metadata = transformPublishFormToMetadata(values)
const timeout = mapTimeoutStringToSeconds(values.timeout) const timeout = mapTimeoutStringToSeconds(values.timeout)
@ -121,7 +139,10 @@ export default function PublishPage({
setSuccess( setSuccess(
'🎉 Successfully published. 🎉 Now create a price on your data set.' '🎉 Successfully published. 🎉 Now create a price on your data set.'
) )
resetForm() resetForm({
values: initialValues as MetadataPublishFormDataset,
status: 'empty'
})
} catch (error) { } catch (error) {
setError(error.message) setError(error.message)
Logger.error(error.message) Logger.error(error.message)
@ -130,7 +151,9 @@ export default function PublishPage({
async function handleAlgorithmSubmit( async function handleAlgorithmSubmit(
values: Partial<MetadataPublishFormAlgorithm>, values: Partial<MetadataPublishFormAlgorithm>,
resetForm: () => void resetForm: (
nextState?: Partial<FormikState<Partial<MetadataPublishFormAlgorithm>>>
) => void
): Promise<void> { ): Promise<void> {
const metadata = transformPublishAlgorithmFormToMetadata(values) const metadata = transformPublishAlgorithmFormToMetadata(values)
@ -154,7 +177,10 @@ export default function PublishPage({
setSuccess( setSuccess(
'🎉 Successfully published. 🎉 Now create a price for your algorithm.' '🎉 Successfully published. 🎉 Now create a price for your algorithm.'
) )
resetForm() resetForm({
values: initialValuesAlgorithm as MetadataPublishFormAlgorithm,
status: 'empty'
})
} catch (error) { } catch (error) {
setError(error.message) setError(error.message)
Logger.error(error.message) Logger.error(error.message)
@ -164,7 +190,7 @@ export default function PublishPage({
return isInPurgatory && purgatoryData ? null : ( return isInPurgatory && purgatoryData ? null : (
<Formik <Formik
initialValues={ initialValues={
publishType === 'dataset' ? initialValues : initialValuesAlgorithm publishType === 'dataset' ? datasetInitialValues : algoInitialValues
} }
initialStatus="empty" initialStatus="empty"
validationSchema={ validationSchema={
@ -178,6 +204,7 @@ export default function PublishPage({
? await handleSubmit(values, resetForm) ? await handleSubmit(values, resetForm)
: await handleAlgorithmSubmit(values, resetForm) : await handleAlgorithmSubmit(values, resetForm)
}} }}
enableReinitialize
> >
{({ values }) => { {({ values }) => {
const tabs = [ const tabs = [
@ -225,9 +252,12 @@ export default function PublishPage({
<Tabs <Tabs
className={styles.tabs} className={styles.tabs}
items={tabs} items={tabs}
handleTabChange={(title) => handleTabChange={(title) => {
setPublishType(title.toLowerCase().replace(' ', '') as any) setPublishType(title.toLowerCase().replace(' ', '') as any)
} title === 'Algorithm'
? setdatasetInitialValues(values)
: setAlgoInitialValues(values)
}}
/> />
</> </>
)} )}