import { Box, Button, Drawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerFooter, DrawerHeader, DrawerOverlay, FormControl, FormErrorMessage, FormHelperText, FormLabel, Input, Stack, useToast, } from "@chakra-ui/react"; import * as yup from "yup"; import React, { useState, useEffect } from "react"; import { useForm, Controller } from "react-hook-form"; import { yupResolver } from "@hookform/resolvers/yup"; import CustomAlertDialog from "../../../Components/CustomAlertDialog"; import { v4 as uuidv4 } from "uuid"; import { useCreateVideoArtifactsMutation, useUpdateVideoArtifactsMutation } from "../../../Services/io.service"; import { useParams } from "react-router-dom"; import ToastBox from "../../../Components/ToastBox"; const investmentVideoSchema = yup.object().shape({ artifactName: yup.string().required("Artifact name is required") .max(50, "Approve Comment cannot be more than 50 characters"), artifactStreamingURL: yup.string() .required("Artifact streaming URL is required") .url("Invalid URL format"), }); const IOArtifactsAdd = ({ isOpen, onClose, firstField, actionId, setActionId, data }) => { const params = useParams() const id = params?.id const [file, setFile] = useState(""); const [fileName, setFileName] = useState(""); const [isLoading, setIsLoading] = useState(false) const [alert, setAlert] = useState(false); const toast = useToast(); const found = data?.find((item) => item?.id === actionId); console.log(actionId); const [createArtifactsVideo] = useCreateVideoArtifactsMutation() const [updateVideoArtifacts] = useUpdateVideoArtifactsMutation() // const { // data // } = useGetArtifactsQuery(id) const { control, handleSubmit, watch, reset, formState: { errors }, } = useForm({ resolver: yupResolver(investmentVideoSchema), }); // useEffect to reset the form when `found` changes useEffect(() => { if (found && actionId) { reset({ artifactName: found?.artifactName, artifactStreamingURL: found?.artifactStreamingURL, }); } }, [found, reset]); const onSubmit = async (data) => { setIsLoading(true) try { if (found) { const res = await updateVideoArtifacts({ data, id: found?.id }) if (res?.data?.statusCode === 200) { toast({ render: () => , }); setAlert(false); setIsLoading(false) handleClose(); } } else { const res = await createArtifactsVideo({ data, id }) if (res?.data?.statusCode === 200) { toast({ render: () => , }); setAlert(false); setIsLoading(false) setActionId(false); handleClose(); } } } catch (error) { console.log(error); } }; const handleConfirm = () => { handleSubmit(onSubmit)(); }; const handleSave = () => { handleSubmit(onSubmit)(); }; const handleClose = () => { onClose() reset() setActionId(false); reset({ artifactName: "", artifactStreamingURL: "", }); } return ( <> IO Artifacts Video Artifact Name ( )} /> {errors.artifactName?.message} Maximum length should be 50 characters. You have entered {watch("artifactName")?.length || 0} characters. Artifact Streaming URL ( )} /> {errors.artifactStreamingURL?.message} setAlert(false)} alertHandler={handleSave} message={"Are you sure you want to add this artifact?"} isLoading={isLoading} /> ); }; export default IOArtifactsAdd;