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

dynamic validation on name field

WIP: looking at another solution to dynamically validate all the fields instead of one by one
This commit is contained in:
EnzoVezzaro 2022-09-21 10:29:38 -04:00
parent dc54ba3b93
commit 1c2dacfa25

View File

@ -6,48 +6,43 @@ import { retrieveShaclSchema } from '@utils/aquarius'
// TODO: conditional validation // TODO: conditional validation
// e.g. when algo is selected, Docker image is required // e.g. when algo is selected, Docker image is required
// hint, hint: https://github.com/jquense/yup#mixedwhenkeys-string--arraystring-builder-object--value-schema-schema-schema // hint, hint: https://github.com/jquense/yup#mixedwhenkeys-string--arraystring-builder-object--value-schema-schema-schema
const validationMetadata = {
const getValidationMetadata = async () => { type: Yup.string()
const { metadata } = await retrieveShaclSchema() .matches(/dataset|algorithm/g, { excludeEmptyString: true })
console.log(metadata) .required('Required'),
name: Yup.string()
return { .test(async function (value) {
type: Yup.string() // Use function
.matches(/dataset|algorithm/g, { excludeEmptyString: true }) try {
.required('Required'), const schema = await retrieveShaclSchema()
name: Yup.string() const fieldValidation = schema.metadata.name
.min(4, (param) => `Title must be at least ${param.min} characters`) if (value.length < 4) {
.max( // TODO: replace hardcoded with resp from schacl when integrated
metadata.name.maxLength, return this.createError({
(param) => `Description must have maximum ${param.max} characters` message: `Name must be at least ${4} characters`
) })
.required('Required'), } else if (value.length > fieldValidation.maxLength) {
description: Yup.string() return this.createError({
.min( message: `Name must have maximum ${fieldValidation.maxLength} characters`
10, })
(param) => `Description must be at least ${param.min} characters` } else {
) return value
.max( }
metadata.description.maxLength, } catch (e) {
(param) => `Description must have maximum ${param.max} characters` console.log(e)
) }
.required('Required'), })
author: Yup.string() .required('Required'),
.max( description: Yup.string()
metadata.author.maxLength, .min(10, (param) => `Description must be at least ${param.min} characters`)
(param) => `Author must have maximum ${param.max} characters` .max(
) 5000,
.required('Required'), (param) => `Description must have maximum ${param.max} characters`
tags: Yup.string() )
.max( .required('Required'),
metadata.tags.maxLength, author: Yup.string().required('Required'),
(param) => `Tags must have maximum ${param.max} characters` tags: Yup.string().nullable(),
) termsAndConditions: Yup.boolean()
.nullable(),
termsAndConditions: Yup.boolean()
.required('Required')
.isTrue('Please agree to the Terms and Conditions.')
}
} }
const validationService = { const validationService = {
@ -114,7 +109,7 @@ export const validationSchema: Yup.SchemaOf<any> = Yup.object().shape({
chainId: Yup.number().required('Required'), chainId: Yup.number().required('Required'),
accountId: Yup.string().required('Required') accountId: Yup.string().required('Required')
}), }),
metadata: Yup.object().shape(getValidationMetadata()), metadata: Yup.object().shape(validationMetadata),
services: Yup.array().of(Yup.object().shape(validationService)), services: Yup.array().of(Yup.object().shape(validationService)),
pricing: Yup.object().shape(validationPricing) pricing: Yup.object().shape(validationPricing)
}) })