import { Controller, useForm } from "react-hook-form"; import { yupResolver } from "@hookform/resolvers/yup"; import * as yup from "yup"; import { useNotificationContext } from "@app/components/context/Notifications/NotificationProvider"; import { Button, FormControl, Input, Modal, ModalContent, } from "@app/components/v2"; import { useWorkspace } from "@app/context"; import { useUpdateWsEnvironment } from "@app/hooks/api"; import { UsePopUpState } from "@app/hooks/usePopUp"; type Props = { popUp: UsePopUpState<["updateEnv"]>; handlePopUpClose: (popUpName: keyof UsePopUpState<["updateEnv"]>) => void; handlePopUpToggle: (popUpName: keyof UsePopUpState<["updateEnv"]>, state?: boolean) => void; }; const schema = yup.object({ environmentName: yup.string().label("Environment Name").required(), environmentSlug: yup.string().label("Environment Slug").required() }); export type FormData = yup.InferType; export const UpdateEnvironmentModal = ({ popUp, handlePopUpClose, handlePopUpToggle }: Props) => { const { createNotification } = useNotificationContext(); const { currentWorkspace } = useWorkspace(); const { mutateAsync, isLoading } = useUpdateWsEnvironment(); const { control, handleSubmit, reset } = useForm({ resolver: yupResolver(schema) }); const oldEnvironmentSlug = (popUp?.updateEnv?.data as { slug: string })?.slug; const onFormSubmit = async ({ environmentName, environmentSlug }: FormData) => { try { if (!currentWorkspace?._id) return; await mutateAsync({ workspaceID: currentWorkspace._id, environmentName, environmentSlug, oldEnvironmentSlug }); createNotification({ text: "Successfully updated environment", type: "success" }); handlePopUpClose("updateEnv"); } catch (err) { console.error(err); createNotification({ text: "Failed to update environment", type: "error" }); } }; return ( { handlePopUpToggle("updateEnv", isOpen); reset(); }} >
( )} /> ( )} />
); }