"use client"; import { gs_adminInvestasi_triggerReview } from "@/app/lib/global_state"; import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin"; import { AccentColor, MainColor } from "@/app_modules/_global/color"; import { MODEL_INVESTASI } from "@/app_modules/investasi/_lib/interface"; import { Affix, Button, Center, Group, Pagination, Paper, rem, ScrollArea, Stack, Table, Text, TextInput, Title, } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { IconDetails, IconEyeCheck, IconRefresh, IconSearch } from "@tabler/icons-react"; import { useAtom } from "jotai"; import _ from "lodash"; import { useRouter } from "next/navigation"; import { useState } from "react"; import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; import ComponentAdminGlobal_IsEmptyData from "../../_admin_global/is_empty_data"; import ComponentAdminGlobal_TampilanRupiahDonasi from "../../_admin_global/tampilan_rupiah"; import { adminInvestasi_funGetAllReview } from "../fun/get/get_all_review"; import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; import { AdminColor } from "@/app_modules/_global/color/color_pallet"; import { apiGetAdminInvestasiByStatus } from "../_lib/api_fetch_admin_investasi"; import { clientLogger } from "@/util/clientLogger"; import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; export default function Admin_TableReviewInvestasi() { return ( <> ); } function TableView() { const router = useRouter(); const [data, setData] = useState(null); const [nPage, setNPage] = useState(1); const [activePage, setActivePage] = useState(1); const [isSearch, setSearch] = useState(""); const [isLoading, setLoading] = useState(false); const [idData, setIdData] = useState(""); // Realtime const [isAdminInvestasi_TriggerReview, setIsAdminInvestasi_TriggerReview] = useAtom(gs_adminInvestasi_triggerReview); const [isShowReload, setIsShowReload] = useState(false); const [isLoadingReload, setLoadingReload] = useState(false); useShallowEffect(() => { loadInitialData(); }, [activePage, isSearch]); const loadInitialData = async () => { try { const response = await apiGetAdminInvestasiByStatus({ status: "Review", page: `${activePage}`, search: isSearch, }); if (response?.success && response?.data?.data) { setData(response.data.data) setNPage(response.data.nPage || 1) } else { console.error("Invalid data format received:", response); setData([]); } } catch (error) { clientLogger.error("Error get data table review", error); setData([]); } } const onSearch = async (searchTerm: string) => { setSearch(searchTerm); setActivePage(1); } const onPageClick = (page: number) => { setActivePage(page); } async function onLoadData() { loadInitialData(); setLoading(false); setIsShowReload(false); setIsAdminInvestasi_TriggerReview(false); } const renderTableBody = () => { if (!Array.isArray(data) || data.length === 0) { return (
Tidak ada data
) } return data.map((e, i) => (
{e.author.username}
{e.title}
{e.roi} %
)); } return ( <> } radius={"xl"} placeholder="Cari nama proyek" onChange={(val) => { onSearch(val.currentTarget.value); }} /> } /> {/* Review } radius={"xl"} placeholder="Cari nama proyek" onChange={(val) => { onSearch(val.currentTarget.value); }} /> */} {!data ? ( ) : ( {isShowReload && (
)} {renderTableBody()}
Username
Nama Proyek
ROI
Target Dana
Harga Perlembar
Aksi
{ onPageClick(val); }} />
)}
); }