diff --git a/app/[locale]/(public)/indeks/detail/[slug]/page.tsx b/app/[locale]/(public)/indeks/detail/[slug]/page.tsx index b76f2d03..83209b23 100644 --- a/app/[locale]/(public)/indeks/detail/[slug]/page.tsx +++ b/app/[locale]/(public)/indeks/detail/[slug]/page.tsx @@ -1,18 +1,27 @@ "use client"; import { Textarea } from "@/components/ui/textarea"; -import { useParams, usePathname, useRouter } from "next/navigation"; +import { useParams, usePathname, useSearchParams } from "next/navigation"; import React, { useEffect, useState } from "react"; import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel"; -import { Link } from "@/i18n/routing"; -import { getDetailIndeks, publicDetailBlog } from "@/service/landing/landing"; +import { Link, useRouter } from "@/i18n/routing"; +import { deleteBlogComments, getBlogComments, getDetailIndeks, getPublicSuggestionList, postBlogComments, publicDetailBlog } from "@/service/landing/landing"; import { formatDateToIndonesian } from "@/utils/globals"; import { Icon } from "@iconify/react/dist/iconify.js"; +import { getCookiesDecrypt } from "@/lib/utils"; +import { close, loading } from "@/config/swal"; const IndeksDetail = () => { + const searchParams = useSearchParams(); + const id = searchParams?.get("id"); const [indeksData, setIndeksData] = useState(); const params = useParams(); const slug = params?.slug; - const [relatedPost, setRelatedPost] = useState(); + const [indexData, setIndexData] = useState(); + const [message, setMessage] = useState(""); + const userId = getCookiesDecrypt("uie"); + const userRoleId = getCookiesDecrypt("urie"); + const router = useRouter(); + const [listComments, setListComments] = useState([]); useEffect(() => { initFetch(); @@ -21,7 +30,7 @@ const IndeksDetail = () => { const initFetch = async () => { const response = await getDetailIndeks(); console.log(response); - setRelatedPost(response?.data?.data?.content); + setIndexData(response?.data?.data?.content); }; const detailFetch = async () => { const response = await publicDetailBlog(slug); @@ -29,6 +38,93 @@ const IndeksDetail = () => { setIndeksData(response?.data?.data); }; + async function getDataComment(blogId: any) { + const findId = blogId == undefined ? slug : blogId; + const response = await getBlogComments(findId); + console.log(response.data?.data); + setListComments(response.data?.data); + } + + const showInput = (e: any) => { + console.log(document.querySelector(`#${e}`)?.classList); + document.querySelector(`#${e}`)?.classList.toggle("hidden"); + }; + + async function sendCommentParent() { + if (message?.length > 3) { + loading(); + const data = { + blogId: slug, + message, + parentId: null, + }; + + const response = await postBlogComments(data); + + console.log(response); + setMessage(""); + getDataComment(slug); + close(); + } + } + + async function sendCommentChild(parentId: any) { + const inputMsg = document.querySelector(`#input-comment-${parentId}`) as HTMLInputElement; + + if (inputMsg && inputMsg.value.length > 3) { + loading(); + const data = { + blogId: slug, + message: inputMsg, + parentId, + }; + + console.log(data); + const response = await postBlogComments(data); + console.log(response); + const responseGet = await getPublicSuggestionList(slug); + console.log(responseGet.data?.data); + getDataComment(slug); + $(":input").val(""); + close(); + } + } + + async function deleteDataComment(dataId: any) { + loading(); + const response = await deleteBlogComments(dataId); + console.log(response); + getDataComment(dataId); + close(); + } + + const getInputValue = (e: any) => { + const message = e.target.value; + console.log(message); + setMessage(message); + }; + + const postData = () => { + if (Number(userRoleId) < 1) { + router.push("/auth"); + } else { + sendCommentParent(); + } + }; + + const postDataChild = (id: any) => { + if (Number(userRoleId) < 1) { + router.push("/auth"); + } else { + sendCommentChild(slug); + } + }; + + const deleteData = (dataId: any) => { + deleteDataComment(dataId); + console.log(dataId); + }; + return ( <>
@@ -59,8 +155,137 @@ const IndeksDetail = () => {

Berikan Komentar

-