"use client"; import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from "@/components/ui/select"; import { useEffect, useState } from "react"; import { close, error, loading } from "@/config/swal"; import { delay } from "@/utils/global"; import dynamic from "next/dynamic"; import { getDetailArticle, getGenerateRewriter } from "@/service/generate-article"; import { Button } from "@/components/ui/button"; import { Loader2 } from "lucide-react"; import GetSeoScore from "./get-seo-score-form"; const CustomEditor = dynamic( () => { return import("@/components/editor/custom-editor"); }, { ssr: false } ); const writingStyle = [ { id: 1, name: "Friendly", }, { id: 1, name: "Professional", }, { id: 3, name: "Informational", }, { id: 4, name: "Neutral", }, { id: 5, name: "Witty", }, ]; const articleSize = [ { id: 1, name: "News (300 - 900 words)", value: "News", }, { id: 2, name: "Info (900 - 2000 words)", value: "Info", }, { id: 3, name: "Detail (2000 - 5000 words)", value: "Detail", }, ]; interface DiseData { id: number; articleBody: string; title: string; metaTitle: string; description: string; metaDescription: string; mainKeyword: string; additionalKeywords: string; } export default function GenerateContentRewriteForm(props: { content: (data: DiseData) => void }) { const [selectedWritingSyle, setSelectedWritingStyle] = useState("Informational"); const [selectedArticleSize, setSelectedArticleSize] = useState("News"); const [selectedLanguage, setSelectedLanguage] = useState("id"); const [mainKeyword, setMainKeyword] = useState(""); const [articleIds, setArticleIds] = useState([]); const [selectedId, setSelectedId] = useState(); const [isLoading, setIsLoading] = useState(true); const onSubmit = async () => { loading(); const request = { advConfig: "", context: mainKeyword, style: selectedWritingSyle, sentiment: "Informational", urlContext: null, contextType: "article", lang: selectedLanguage, createdBy: "123123", clientId: "humasClientIdtest", }; const res = await getGenerateRewriter(request); close(); if (res?.error) { error("Error"); } setArticleIds([...articleIds, res?.data?.data?.id]); }; useEffect(() => { getArticleDetail(); }, [selectedId]); const checkArticleStatus = async (data: string | null) => { if (data === null) { delay(7000).then(() => { getArticleDetail(); }); } }; const getArticleDetail = async () => { if (selectedId) { const res = await getDetailArticle(selectedId); const data = res?.data?.data; checkArticleStatus(data?.articleBody); if (data?.articleBody !== null) { setIsLoading(false); props.content(data); } else { setIsLoading(true); props.content({ id: data?.id, articleBody: "", title: "", metaTitle: "", description: "", metaDescription: "", additionalKeywords: "", mainKeyword: "", }); } } }; return (
{/* */} {/* */} {/* */}

Text

{mainKeyword == "" &&

Required

} {articleIds.length < 3 && ( )}
{articleIds.length > 0 && (
{articleIds?.map((id, index) => ( ))}
)} {!isLoading && (
)}
); }