diff --git a/components/form/content/audio-form.tsx b/components/form/content/audio-form.tsx index dee3eca7..caa36435 100644 --- a/components/form/content/audio-form.tsx +++ b/components/form/content/audio-form.tsx @@ -44,13 +44,14 @@ import { getDetailArticle, getGenerateKeywords, getGenerateTitle, + translateText, } from "@/service/content/ai"; import { getCookiesDecrypt } from "@/lib/utils"; import { useDropzone } from "react-dropzone"; import { Icon } from "@iconify/react"; import { CloudUpload } from "lucide-react"; import Image from "next/image"; -import { error, loading } from "@/config/swal"; +import { close, error, loading } from "@/config/swal"; import { Item } from "@radix-ui/react-dropdown-menu"; import dynamic from "next/dynamic"; import { getCsrfToken } from "@/service/auth"; @@ -145,6 +146,10 @@ export default function FormAudio() { const [fileError, setFileError] = useState(null); type FileWithPreview = File & { preview: string }; + const [isLoadingTranslate, setIsLoadingTranslate] = useState(false); + const [translatedContent, setTranslatedContent] = React.useState(""); + const [selectedLang, setSelectedLang] = React.useState<"id" | "en">("id"); + const options: Option[] = [ { id: "all", label: "SEMUA" }, { id: "5", label: "UMUM" }, @@ -417,7 +422,8 @@ export default function FormAudio() { "" ); const articleImagesData = articleData?.imagesUrl?.split(","); - setArticleBody(cleanArticleBody || ""); + setValue("description", cleanArticleBody || ""); + // setArticleBody(cleanArticleBody || ""); setDetailData(articleData); setSelectedArticleId(id); setArticleImages(articleImagesData || []); @@ -808,7 +814,8 @@ export default function FormAudio() { lang: "id", contextType: "text", urlContext: null, - context: editorContent, + context: getValues("descriptionOri"), + // context: editorContent, createdBy: roleId, sentiment: "Humorous", clientId: "7QTW8cMojyayt6qnhqTOeJaBI70W4EaQ", @@ -1178,7 +1185,111 @@ export default function FormAudio() { Select Original Description +
+
+ + + {roleId === "14" && ( + + )} +
+ + {/* Pilihan bahasa untuk posting */} + {roleId === "14" && ( +
+ +
+ )} + + {/* Editor Bahasa Indonesia */} + ( + + )} + /> + + {/* Editor Bahasa Inggris */} + {translatedContent && ( +
+
+ {" "} + +
+ + setTranslatedContent(val)} + initialData={translatedContent} + /> +
+ )} + + {errors.description?.message && ( +

+ {errors.description.message} +

+ )} +
+ + {/*
@@ -1200,7 +1311,7 @@ export default function FormAudio() { {errors.description.message}

)} -
+ */}

Content Rewrite

diff --git a/components/form/content/image-form.tsx b/components/form/content/image-form.tsx index 43f9ad8a..57450183 100644 --- a/components/form/content/image-form.tsx +++ b/components/form/content/image-form.tsx @@ -51,7 +51,7 @@ import { useDropzone } from "react-dropzone"; import { Icon } from "@iconify/react"; import { CloudUpload, X } from "lucide-react"; import Image from "next/image"; -import { error, loading } from "@/config/swal"; +import { close, error, loading } from "@/config/swal"; import { Item } from "@radix-ui/react-dropdown-menu"; import { data } from "jquery"; import { options } from "@fullcalendar/core/preact.js"; @@ -149,6 +149,8 @@ export default function FormImage() { const [files, setFiles] = useState([]); const [filesTemp, setFilesTemp] = useState([]); const [publishedFor, setPublishedFor] = useState([]); + const [translatedContent, setTranslatedContent] = React.useState(""); + const [selectedLang, setSelectedLang] = React.useState<"id" | "en">("id"); const options: Option[] = [ { id: "all", label: "SEMUA" }, @@ -449,7 +451,7 @@ export default function FormImage() { "" ); const articleImagesData = articleData?.imagesUrl?.split(","); - setArticleBody(cleanArticleBody || ""); + setValue("description", cleanArticleBody || ""); setDetailData(articleData); setSelectedArticleId(id); setArticleImages(articleImagesData || []); @@ -668,7 +670,6 @@ export default function FormImage() { const resCsrf = await getCsrfToken(); const csrfToken = resCsrf?.data?.token; - console.log("CSRF TOKEN : ", csrfToken); const headers = { "X-XSRF-TOKEN": csrfToken, }; @@ -827,7 +828,7 @@ export default function FormImage() { lang: "id", contextType: "text", urlContext: null, - context: editorContent, + context: getValues("descriptionOri"), createdBy: roleId, sentiment: "Humorous", clientId: "7QTW8cMojyayt6qnhqTOeJaBI70W4EaQ", @@ -1198,9 +1199,9 @@ export default function FormImage() { className="dark:text-black" onChange={(value: any) => { onChange(value); - setEditorContent(value); + // setEditorContent(value); }} - initialData={articleBody || value} + initialData={value} /> ) } @@ -1239,24 +1240,130 @@ export default function FormImage() { type="button" onClick={async () => { try { + loading(); setIsLoadingTranslate(true); const res = await translateText({ - text: localContent, + text: getValues("descriptionOri"), sourceLang: "ID", targetLang: "EN", }); - if (!res.error && res.data?.translatedText) { - setLocalContent(res.data.translatedText); - setValue( - "descriptionOri", - res.data.translatedText - ); - setEditorContent(res.data.translatedText); + if (!res.error) { + const resultText = + res?.data?.data?.translations?.[0]?.text || + ""; + + setTranslatedContent(resultText); } } catch (err) { + close(); console.error("Translate gagal:", err); } finally { + close(); + setIsLoadingTranslate(false); + } + }} + className="px-3 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600" + > + {isLoadingTranslate + ? "Translating..." + : "Translate to English"} + + )} +
+ + {/* Pilihan bahasa untuk posting */} + {roleId === "14" && ( +
+ +
+ )} + + {/* Editor Bahasa Indonesia */} + ( + + )} + /> + + {/* Editor Bahasa Inggris */} + {translatedContent && ( +
+
+ {" "} + +
+ + setTranslatedContent(val)} + initialData={translatedContent} + /> +
+ )} + + {errors.description?.message && ( +

+ {errors.description.message} +

+ )} + + {/*
+
+ + + {roleId === "14" && ( +
- {/* Editor */} { onChange(val); - setLocalContent(val); - setEditorContent(val); + // setLocalContent(val); + // setEditorContent(val); }} - initialData={localContent || value} + initialData={value} /> )} /> @@ -1290,7 +1396,7 @@ export default function FormImage() { {errors.description.message}

)} -
+ */} {/*
*/} -

Content Rewrite

- {showRewriteEditor && (
{isGeneratedArticle && ( diff --git a/components/form/content/teks-form.tsx b/components/form/content/teks-form.tsx index ad9cb606..70b80275 100644 --- a/components/form/content/teks-form.tsx +++ b/components/form/content/teks-form.tsx @@ -44,13 +44,14 @@ import { getDetailArticle, getGenerateKeywords, getGenerateTitle, + translateText, } from "@/service/content/ai"; import { getCookiesDecrypt } from "@/lib/utils"; import { useDropzone } from "react-dropzone"; import { Icon } from "@iconify/react"; import { CloudUpload } from "lucide-react"; import Image from "next/image"; -import { error, loading } from "@/config/swal"; +import { close, error, loading } from "@/config/swal"; import { Item } from "@radix-ui/react-dropdown-menu"; import dynamic from "next/dynamic"; import { getCsrfToken } from "@/service/auth"; @@ -142,6 +143,11 @@ export default function FormTeks() { const [files, setFiles] = useState([]); const [publishedFor, setPublishedFor] = useState([]); + + const [isLoadingTranslate, setIsLoadingTranslate] = useState(false); + const [translatedContent, setTranslatedContent] = React.useState(""); + const [selectedLang, setSelectedLang] = React.useState<"id" | "en">("id"); + const options: Option[] = [ { id: "all", label: "SEMUA" }, { id: "5", label: "UMUM" }, @@ -429,7 +435,8 @@ export default function FormTeks() { "" ); const articleImagesData = articleData?.imagesUrl?.split(","); - setArticleBody(cleanArticleBody || ""); + setValue("description", cleanArticleBody || ""); + // setArticleBody(cleanArticleBody || ""); setDetailData(articleData); setSelectedArticleId(id); setArticleImages(articleImagesData || []); @@ -819,7 +826,8 @@ export default function FormTeks() { lang: "id", contextType: "text", urlContext: null, - context: editorContent, + context: getValues("descriptionOri"), + // context: editorContent, createdBy: roleId, sentiment: "Humorous", clientId: "7QTW8cMojyayt6qnhqTOeJaBI70W4EaQ", @@ -1185,7 +1193,110 @@ export default function FormTeks() { Select Original Description
+
+
+ + + {roleId === "14" && ( + + )} +
+ + {/* Pilihan bahasa untuk posting */} + {roleId === "14" && ( +
+ +
+ )} + + {/* Editor Bahasa Indonesia */} + ( + + )} + /> + + {/* Editor Bahasa Inggris */} + {translatedContent && ( +
+
+ {" "} + +
+ + setTranslatedContent(val)} + initialData={translatedContent} + /> +
+ )} + + {errors.description?.message && ( +

+ {errors.description.message} +

+ )} +
+ {/*
@@ -1207,7 +1318,7 @@ export default function FormTeks() { {errors.description.message}

)} -
+ */}

Content Rewrite

@@ -1329,8 +1440,6 @@ export default function FormTeks() { />
- - {/* Submit Button */}
diff --git a/components/form/content/video-form.tsx b/components/form/content/video-form.tsx index 040e2ec1..b0a30bb6 100644 --- a/components/form/content/video-form.tsx +++ b/components/form/content/video-form.tsx @@ -44,13 +44,14 @@ import { getDetailArticle, getGenerateKeywords, getGenerateTitle, + translateText, } from "@/service/content/ai"; import { getCookiesDecrypt } from "@/lib/utils"; import { useDropzone } from "react-dropzone"; import { Icon } from "@iconify/react"; import { CloudUpload } from "lucide-react"; import Image from "next/image"; -import { error, loading } from "@/config/swal"; +import { close, error, loading } from "@/config/swal"; import { Item } from "@radix-ui/react-dropdown-menu"; import dynamic from "next/dynamic"; import { getCsrfToken } from "@/service/auth"; @@ -146,6 +147,10 @@ export default function FormVideo() { const [publishedFor, setPublishedFor] = useState([]); const [files, setFiles] = useState([]); + const [isLoadingTranslate, setIsLoadingTranslate] = useState(false); + const [translatedContent, setTranslatedContent] = React.useState(""); + const [selectedLang, setSelectedLang] = React.useState<"id" | "en">("id"); + const options: Option[] = [ { id: "all", label: "SEMUA" }, { id: "5", label: "UMUM" }, @@ -423,7 +428,8 @@ export default function FormVideo() { "" ); const articleImagesData = articleData?.imagesUrl?.split(","); - setArticleBody(cleanArticleBody || ""); + setValue("description", cleanArticleBody || ""); + // setArticleBody(cleanArticleBody || ""); setDetailData(articleData); setSelectedArticleId(id); setArticleImages(articleImagesData || []); @@ -827,7 +833,8 @@ export default function FormVideo() { lang: "id", contextType: "text", urlContext: null, - context: editorContent, // Ambil isi editor original + context: getValues("descriptionOri"), + // context: editorContent, createdBy: roleId, sentiment: "Humorous", clientId: "7QTW8cMojyayt6qnhqTOeJaBI70W4EaQ", @@ -1193,7 +1200,109 @@ export default function FormVideo() { Select Original Description
+
+
+ + + {roleId === "14" && ( + + )} +
+ + {/* Pilihan bahasa untuk posting */} +
+ +
+ + {/* Editor Bahasa Indonesia */} + ( + + )} + /> + + {/* Editor Bahasa Inggris */} + {translatedContent && ( +
+
+ {" "} + +
+ + setTranslatedContent(val)} + initialData={translatedContent} + /> +
+ )} + + {errors.description?.message && ( +

+ {errors.description.message} +

+ )} +
+ + {/*
@@ -1215,7 +1324,7 @@ export default function FormVideo() { {errors.description.message}

)} -
+ */}

Content Rewrite

diff --git a/service/content/content.ts b/service/content/content.ts index 14fddef0..7aad0296 100644 --- a/service/content/content.ts +++ b/service/content/content.ts @@ -157,7 +157,7 @@ export async function getTagsBySubCategoryId(subCategory: any) { } export async function listEnableCategory(type: any) { - const url = `media/categories/list?enablePage=0&sort=desc&sortBy=id&type=${type}`; + const url = `media/categories/list?enablePage=0&sort=desc&sortBy=id&type=${type}&isInt=true`; return httpGetInterceptor(url); }