"use client"; import { close, error, loading, successCallback } from "@/config/swal"; import { checkWishlistStatus, deleteWishlist, getInfoProfile, mediaWishlist, saveWishlist, } from "@/service/landing/landing"; import React, { useEffect, useState } from "react"; import { Link, useRouter } from "@/i18n/routing"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { useSearchParams } from "next/navigation"; import { Card, CardContent } from "@/components/ui/card"; import HeaderManagement from "@/components/landing-page/header-management"; import SidebarManagement from "@/components/landing-page/sidebar-management"; import withReactContent from "sweetalert2-react-content"; import { getCookiesDecrypt } from "@/lib/utils"; import Swal from "sweetalert2"; import { useToast } from "@/components/ui/use-toast"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Icon } from "@iconify/react/dist/iconify.js"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { sendMediaUploadToEmail } from "@/service/media-tracking/media-tracking"; import ImageBlurry from "@/components/ui/image-blurry"; import Image from "next/image"; import { useTranslations } from "next-intl"; const Galery = (props: any) => { const [profile, setProfile] = useState(); const [selectedTab, setSelectedTab] = useState("image"); const router = useRouter(); const MySwal = withReactContent(Swal); const searchParams = useSearchParams(); const page: any = searchParams?.get("page"); const title = searchParams?.get("title"); const category = searchParams?.get("category"); const pages = page ? page - 1 : 0; const { isInstitute, instituteId } = props; const userId = getCookiesDecrypt("uie"); const userRoleId = getCookiesDecrypt("urie"); const { toast } = useToast(); const [totalContent, setTotalContent] = useState(); const [categoryFilter] = useState([]); const [formatFilter] = useState([]); const [sortBy] = useState(); const [change] = useState(false); const [contentVideo, setContentVideo] = useState([]); const [contentImage, setContentImage] = useState([]); const [contentDocument, setContentDocument] = useState([]); const [contentAudio, setContentAudio] = useState([]); const [, setGetTotalPage] = useState([]); const [refresh, setRefresh] = useState(false); const [, setCopySuccess] = useState(""); const [, setWishlistId] = useState(); const [emailShareList, setEmailShareList] = useState(); const [emailShareInput, setEmailShareInput] = useState(); const [emailMessageInput, setEmailMessageInput] = useState(); const id = searchParams?.get("id"); const t = useTranslations("LandingPage"); useEffect(() => { getDataVideo(); }, [page, category, title]); async function getDataVideo() { const filter = categoryFilter?.length > 0 ? categoryFilter?.sort().join(",") : category || ""; const name = title == undefined ? "" : title; const format = formatFilter == undefined ? "" : formatFilter?.join(","); const response = await mediaWishlist( "2", isInstitute ? instituteId : "", name, filter, "9", pages, sortBy, format ); setGetTotalPage(response?.data?.data?.totalPages); setContentVideo(response?.data?.data?.content); setTotalContent(response?.data?.data?.totalElements); } useEffect(() => { async function initState() { loading(); const response = await getInfoProfile(); // console.log(response?.data?.data); setProfile(response?.data?.data); close(); } initState(); }, []); useEffect(() => { getDataVideo(); }, [change, refresh]); useEffect(() => { getDataDocument(); }, [page, category, title]); async function getDataDocument() { const filter = categoryFilter?.length > 0 ? categoryFilter?.sort().join(",") : category || ""; const name = title == undefined ? "" : title; const format = formatFilter == undefined ? "" : formatFilter?.join(","); const response = await mediaWishlist( "3", isInstitute ? instituteId : "", name, filter, "12", pages, sortBy, format ); setGetTotalPage(response?.data?.data?.totalPages); setContentDocument(response?.data?.data?.content); setTotalContent(response?.data?.data?.totalElements); } useEffect(() => { getDataDocument(); }, [change, refresh]); useEffect(() => { getDataAudio(); }, [page, category, title]); useEffect(() => { getDataAudio(); }, [change, refresh]); async function getDataAudio() { const filter = categoryFilter?.length > 0 ? categoryFilter?.sort().join(",") : category || ""; const name = title == undefined ? "" : title; const format = formatFilter == undefined ? "" : formatFilter?.join(","); const response = await mediaWishlist( "4", isInstitute ? instituteId : "", name, filter, "6", pages, sortBy, format ); setGetTotalPage(response?.data?.data?.totalPages); setContentAudio(response?.data?.data?.content); setTotalContent(response?.data?.data?.totalElements); } useEffect(() => { getDataAudio(); }, [change]); useEffect(() => { getDataImage(); }, [page, category, title, refresh]); async function getDataImage() { const filter = categoryFilter?.length > 0 ? categoryFilter?.sort().join(",") : category || ""; const name = title == undefined ? "" : title; const format = formatFilter == undefined ? "" : formatFilter?.join(","); const response = await mediaWishlist( "1", isInstitute ? instituteId : "", name, filter, "12", pages, sortBy, format ); setGetTotalPage(response?.data?.data?.totalPages); setContentImage(response?.data?.data?.content); // console.log("response", response); setTotalContent(response?.data?.data?.totalElements); } useEffect(() => { async function initState() { getDataImage(); } initState(); }, [page, refresh]); async function checkWishlist(uploadId: any) { if (userId) { const res = await checkWishlistStatus(uploadId); console.log(res?.data?.data); // const isAlreadyOnWishlist = res?.data?.data == "-1" ? false : true; // if (isAlreadyOnWishlist == true) { // warning("Konten sudah Ada", `#`); // } setWishlistId(res?.data?.data); // setIsSaved(isAlreadyOnWishlist); // console.log("isSave", isAlreadyOnWishlist); } } const handleSaveWishlist = async (uploadId: any) => { if (Number(userRoleId) < 1 || userRoleId == undefined) { router.push("/auth/login"); } else { console.log("data", uploadId); const data = { mediaUploadId: uploadId, }; loading(); checkWishlist(uploadId); const res = await saveWishlist(data); if (res?.error) { error(res.message); console.log("simpan data", res); return false; } successCallback("Konten Berhasil Disimpan"); } }; async function deleteProcess(id: any) { loading(); const resDelete = await deleteWishlist(id); if (resDelete?.error) { error(resDelete.message); return false; } setRefresh((prevRefresh) => !prevRefresh); close(); } const handleDelete = (id: any) => { MySwal.fire({ title: "Hapus Data", text: "", icon: "warning", showCancelButton: true, cancelButtonColor: "#3085d6", confirmButtonColor: "#d33", confirmButtonText: "Hapus", }).then((result) => { if (result.isConfirmed) { deleteProcess(id); } }); }; const copyToClip = async (url: any) => { await navigator.clipboard.writeText( `https://mediahub.polri.go.id/video/detail/${url}` ); setCopySuccess("Copied"); // toast.success("Link Berhasil Di Copy"); toast({ title: "Link Berhasil Di Copy", }); }; async function shareToEmail(uploadId: any) { if (!userRoleId) { router.push("/auth/login"); return; } const data = { mediaUploadId: uploadId, // ← FIX: ID valid dari response email: emailShareList || [emailShareInput], message: emailMessageInput, url: window.location.href, }; loading(); const res = await sendMediaUploadToEmail(data); if (res?.error) { error(res.message); return; } close(); successCallback("Konten Telah Dikirim"); } const handleEmailList = (e: any) => { const arrayEmail: any = []; for (let i = 0; i < emailShareList?.length; i += 1) { arrayEmail.push(emailShareList[i]); } if (e.which == 13) { if (e.target.value) { arrayEmail.push(e.target.value); setEmailShareList(arrayEmail); setEmailShareInput(""); } e.preventDefault(); } return false; }; const [hasMounted, setHasMounted] = useState(false); // Hooks useEffect(() => { setHasMounted(true); }, []); // Render if (!hasMounted) return null; return ( <>

{t("gallery", { defaultValue: "Gallery" })}{" "} {profile?.institute?.name}

{t("image", { defaultValue: "Image" })}
|
{t("video", { defaultValue: "Video" })}
|
{t("text", { defaultValue: "Text" })}
|
{t("audio", { defaultValue: "Audio" })}
{selectedTab == "video" ? ( contentVideo?.length > 0 ? (
{contentVideo?.map((video: any) => (

{video?.mediaUpload?.title}

handleSaveWishlist( video?.mediaUpload?.id ) } className="cursor-pointer flex flex-row gap-2 hover:text-red-800" >

{t("save", { defaultValue: "Save", })}{" "}

Content Rewrite

{t("shareTo", { defaultValue: "Share To", })}{" "}

{t("destinationEmail", { defaultValue: "Destination Email", })}

setEmailShareInput( event.target.value ) } onKeyPress={handleEmailList} type="email" placeholder={t("shareTo", { defaultValue: "Share To", })} />
{/* */}

))}
) : (

empty

) ) : selectedTab == "audio" ? ( contentAudio?.length > 0 ? (
{contentAudio?.map((audio: any) => (
{audio?.mediaUpload?.title}
#
{audio?.mediaUpload?.duration}
handleSaveWishlist(audio?.mediaUpload?.id) } className="cursor-pointer flex flex-row gap-2 hover:text-red-800" >

{t("save", { defaultValue: "Save" })}

Content Rewrite

{t("shareTo", { defaultValue: "Share To", })}

{t("destinationEmail", { defaultValue: "Destination Email", })}

setEmailShareInput(event.target.value) } onKeyPress={handleEmailList} type="email" placeholder={t("pressEnter", { defaultValue: "Press Enter", })} />
{/* */}
))}
) : (

empty

) ) : selectedTab == "image" ? ( contentImage?.length > 0 ? (
{contentImage?.map((image: any) => (

{image?.mediaUpload?.title}

handleSaveWishlist( image?.mediaUpload?.id ) } className="cursor-pointer flex flex-row gap-2 hover:text-red-800" >

{t("save", { defaultValue: "Save", })}

Content Rewrite

{t("shareTo", { defaultValue: "Share To", })}

{t("destinationEmail", { defaultValue: "Destination Email", })}

setEmailShareInput( event.target.value ) } onKeyPress={handleEmailList} type="email" placeholder={t( "pressEnter", { defaultValue: "Press Enter", } )} />

))}
) : (

empty

) ) : contentDocument.length > 0 ? (
{contentDocument?.map((document: any) => (
{document?.mediaUpload?.title}
Download {t("document", { defaultValue: "Document" })}
handleSaveWishlist(document?.mediaUpload?.id) } className="cursor-pointer flex flex-row gap-2 hover:text-red-800" >

{t("save", { defaultValue: "Save" })}

Content Rewrite

{t("shareTo", { defaultValue: "Share To" })}

{t("destinationEmail", { defaultValue: "Destination Email", })}

setEmailShareInput(event.target.value) } onKeyPress={handleEmailList} type="email" placeholder={t("pressEnter", { defaultValue: "Press Enter", })} />
))}
) : (

empty

)}
); }; export default Galery;