"use client"; import React, { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Card } from "@/components/ui/card"; import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import CustomPagination from "@/components/table/custom-pagination"; import { close, loading } from "@/config/swal"; import withReactContent from "sweetalert2-react-content"; import Swal from "sweetalert2"; import { listDataAllNonPagination, listDataTracking, mediaTrackingSave } from "@/service/service/media-tracking/media-tracking"; export default function TrackingBeritaCard() { const [search, setSearch] = useState(""); const [content, setContent] = useState([]); const [selectedItems, setSelectedItems] = useState([]); const [page, setPage] = useState(1); const [totalPage, setTotalPage] = useState(1); const [showData, setShowData] = useState("6"); const MySwal = withReactContent(Swal); useEffect(() => { initFecth(); }, [showData, page]); const initFecth = async () => { loading(); const response = await listDataTracking(showData, page - 1); const data = response?.data?.data; const newData = data?.content; setTotalPage(data?.totalPages || 1); newData.forEach((item: any, index: number) => { item.no = (page - 1) * Number(showData) + index + 1; }); setContent(response?.data?.data?.content || []); close(); }; const fecthAll = async (keyword: string) => { const response = await listDataAllNonPagination(keyword); setContent(response?.data?.data?.content || []); }; const handleInputChange = (e: React.ChangeEvent) => { const value = e.target.value; setSearch(value); if (value.trim() === "") { initFecth(); } else { fecthAll(value); } }; const handleSelect = (id: number) => { setSelectedItems((prev) => prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id] ); }; // const doSave = async () => { // if (selectedItems.length === 0) { // toast("Pilih minimal 1 berita untuk disimpan."); // return; // } // try { // const promises = selectedItems.map((id) => // mediaTrackingSave({ // mediaUploadId: id, // duration: 24, // scrapingPeriod: 3, // }) // ); // await Promise.all(promises); // toast("Berhasil Menambahkan", { // description: "", // }); // setSelectedItems([]); // initFecth(); // } catch (err: any) { // error(err?.message || "Gagal menyimpan data."); // } // }; const doSave = async () => { if (selectedItems.length === 0) { MySwal.fire( "Peringatan", "Pilih minimal 1 berita untuk disimpan.", "warning" ); return; } try { loading(); const promises = selectedItems.map((id) => mediaTrackingSave({ mediaUploadId: id, duration: 24, scrapingPeriod: 3, }) ); await Promise.all(promises); close(); await MySwal.fire({ icon: "success", title: "Berhasil!", text: "Tracking berita berhasil ditambahkan.", confirmButtonColor: "#2563eb", }); setSelectedItems([]); initFecth(); } catch (err: any) { close(); MySwal.fire({ icon: "error", title: "Gagal!", text: err?.message || "Terjadi kesalahan saat menyimpan data.", confirmButtonColor: "#dc2626", }); } }; return (
1 - 6 Data 1 - 12 Data 1 - 60 Data 1 - 120 Data
{selectedItems.length > 0 && (
{selectedItems.length} Item Terpilih{" "} / Tracking Berita tersisa {29 - selectedItems.length}
)}
{content?.length > 1 && content.map((item: any) => ( handleSelect(item.id)} > {item.title}
{selectedItems.includes(item.id) && (
)}

{item.title}

))}
{content && content?.length > 0 ? ( setPage(data)} /> ) : (

No Data

)}
); }