import { Controller, useForm } from "react-hook-form"; import * as z from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { Input } from "@nextui-org/input"; import JoditEditor from "jodit-react"; import { useEffect, useRef, useState } from "react"; import { getDetailArticle, updateManualArticle, } from "@/service/generate-article"; import { Button } from "@nextui-org/button"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { useRouter } from "next/navigation"; import { error, loading } from "@/config/swal"; const formSchema = z.object({ mainKeyword: z.string().min(2, { message: "Keyword must be at least 2 characters.", }), title: z.string().min(2, { message: "Title must be at least 2 characters.", }), additionalKeyword: z.string().min(2, { message: "Additional Keyword must be at least 2 characters.", }), metaTitle: z.string().min(2, { message: "Meta Title must be at least 2 characters.", }), metaDescription: z.string().min(2, { message: "Meta Description must be at least 2 characters.", }), articleBody: z.string().min(2, { message: "Article Body must be at least 2 characters.", }), }); export default function EditGeneratedArticleContent(props: { id: string }) { const MySwal = withReactContent(Swal); const router = useRouter(); const { id } = props; const editor = useRef(null); const formOptions = { resolver: zodResolver(formSchema) }; type UserSettingSchema = z.infer; const { control, handleSubmit, formState: { errors }, setValue, } = useForm(formOptions); useEffect(() => { getArticleDetail(); }, [id]); const getArticleDetail = async () => { const res = await getDetailArticle(Number(id)); // const data = res?.data?.data?.articleBody; const data = res?.data?.data; setValue("title", data?.title); setValue("mainKeyword", data?.mainKeyword); setValue("additionalKeyword", data?.additionalKeywords); setValue("metaTitle", data?.metaTitle); setValue("metaDescription", data?.metaDescription); setValue("articleBody", data?.articleBody); }; const onSubmit = async (values: z.infer) => { const request = { id: Number(id), title: values.title, articleBody: values.articleBody, metaDescription: values.metaDescription, metaTitle: values.metaTitle, createdBy: "123123", }; console.log("request", request); loading(); const res = await updateManualArticle(request); if (res.error) { error(res.message); return false; } close(); successSubmit("/admin/article/generate"); }; function successSubmit(redirect: string) { MySwal.fire({ title: "Success", icon: "success", confirmButtonColor: "#3085d6", confirmButtonText: "OK", }).then((result) => { if (result.isConfirmed) { router.push(redirect); } }); } return (
( )} /> {errors.title && (

{errors.title?.message}

)}
( )} /> {errors.mainKeyword?.message && (

{errors.mainKeyword?.message}

)}
( )} /> {errors.additionalKeyword?.message && (

{errors.additionalKeyword?.message}

)}
( )} /> {errors.metaTitle?.message && (

{errors.metaTitle?.message}

)}
( )} /> {errors.metaDescription?.message && (

{errors.metaDescription?.message}

)}
( )} /> {errors.articleBody?.message && (

{errors.articleBody?.message}

)}
); }