import { Accordion, Button, Col, Grid, Group, MultiSelect, NumberInput, PasswordInput, Select, Text, TextInput, } from "@mantine/core"; import { useForm, yupResolver } from "@mantine/form"; import { useModals } from "@mantine/modals"; import * as yup from "yup"; import shareService from "../../services/share.service"; import toast from "../../utils/toast.util"; const CreateUploadModalBody = ({ mode, uploadCallback, }: { mode: "standard" | "email"; uploadCallback: ( id: string, expiration: number, security: { password?: string; maxVisitors?: number }, emails?: string[] ) => void; }) => { const modals = useModals(); const validationSchema = yup.object().shape({ link: yup.string().required().min(2).max(50), emails: mode == "email" ? yup.array().of(yup.string().email()).min(1) : yup.array(), password: yup.string().min(3).max(100), maxVisitors: yup.number().min(1), }); const form = useForm({ initialValues: { link: "", emails: [] as string[], password: undefined, maxVisitors: undefined, expiration: "1440", }, schema: yupResolver(validationSchema), }); return (
{ if (await shareService.isIdAlreadyInUse(values.link)) { form.setFieldError("link", "Link already in use."); } else { modals.closeAll(); uploadCallback( values.link, parseInt(values.expiration), { password: values.password, maxVisitors: values.maxVisitors, }, values.emails ); } })} > ({ color: theme.colors.gray[6], })} > {window.location.origin}/share/ {form.values.link == "" ? "myAwesomeShare" : form.values.link} {mode == "email" && ( } getCreateLabel={(email) => `${email}`} onCreate={async (email) => { if (!(await shareService.doesUserExist(email))) { form.setFieldValue("emails", form.values.emails); toast.error( `${email} doesn't have an account at Pingvin Share.` ); } }} {...form.getInputProps("emails")} /> )}