From a2300d959c73829237c83919abaea0b79a027b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Tue, 3 Oct 2023 00:32:53 -0400 Subject: [PATCH] refactor(client-side): combine yup schema for story chapters with story schema file --- lib/client/chapterSchema.ts | 56 ------------------------------------- 1 file changed, 56 deletions(-) delete mode 100644 lib/client/chapterSchema.ts diff --git a/lib/client/chapterSchema.ts b/lib/client/chapterSchema.ts deleted file mode 100644 index 64b1e2a..0000000 --- a/lib/client/chapterSchema.ts +++ /dev/null @@ -1,56 +0,0 @@ -import * as yup from "yup"; -import { FormChapter, FormStory } from "./types/FormStory"; - -export const cs = yup.object().shape({ - chapterTitle: yup.string().ensure().min(1).trim().required("Chapter title cannot be blank."), - summary: yup.string().ensure().min(10).required("Summary cannot be blank"), - notes: yup.string().ensure(), - bands: yup.array().ensure().of(yup.number()).min(1, "One or more bands must be selected."), - characters: yup.array().ensure().min(1, "One or more characters must be selected"), - relationships: yup.array().ensure().of( - yup.array().ensure().of( - yup.string() - ).min(2, "Pairings must have at least two characters!").max(3, "Pairings can have no more than three characters!") - ), - nsfw: yup.boolean().oneOf([true, false]), - loggedInOnly: yup.boolean() - .when("nsfw", ([nsfw], schema) => { - return nsfw ? schema.oneOf([true], "If your story contains adult content, you MUST restrict the ability to read it to logged-in users only. Failure to comply may result in a takedown.") : schema.oneOf([true, false]) - }), - hidden: yup.boolean().oneOf([true, false]), - pot: yup.string().oneOf(["pasteOrType", "upload"]).required("Story content is required!"), - storytext: yup.string().when("pot", - ([pot], schema) => { - return pot === "pasteOrType" ? schema.test("numWords", "Story must be at least 50 words", - (value:any, context) => { - return value?.split(/\W+/).length > 50 || false - }).required("Story text can't be blank!") : schema.min(0) - }), - // hello Celeste - docFile: yup.mixed().when("pot", ([pot], schema) => { - return pot === "upload" ? yup.mixed().test("exists", "You need to upload a file!", (value) => { - // console.debug("file: ", value) - return !!value; - }).test("fileType", "Supported files are *.docx and *.doc", (value) => { - let ext; - if(typeof value == "string") { - ext = value?.split(".").reverse()[0] - } else { - ext = (value as File)?.name?.split(".").reverse()[0] - } - // console.log(ext) - let reg = /(docx|doc)$/i - return reg.test(ext) - }) : yup.mixed() - } /* { - is: "upload", - then: , - otherwise: yup.mixed() - } */) -}) - -export const storySchema = yup.object().shape({ - title: yup.string().ensure().min(5).required("Title cannot be blank"), - chapters: yup.array().ensure().of(cs), - completed: yup.boolean().oneOf([true, false]) -}) \ No newline at end of file