import { type FC, useMemo, useState } from "react"; import { EmptyWallet } from "iconsax-react"; import Table from "@/components/Table"; import Filters from "@/components/Filters"; import DefaulModal from "@/components/DefaulModal"; import { useGetAiChats } from "./hooks/useAiChatData"; import { useAiChatFilters } from "./hooks/useAiChatFilters"; import { getAiChatTableColumns } from "./components/AiChatTableColumns"; import { useAiChatFiltersFields } from "./components/AiChatFiltersFields"; import { getAiChatAnswer, getAiChatQuestion, type AiChat, } from "./types/Types"; import type { RowDataType } from "@/components/types/TableTypes"; import { formatPrice } from "@/helpers/func"; const AiChatsList: FC = () => { const [selectedChat, setSelectedChat] = useState(null); const [isModalOpen, setIsModalOpen] = useState(false); const { filters, currentPage, apiParams, handleFiltersChange, handlePageChange, } = useAiChatFilters(); const { data: chatsData, isLoading } = useGetAiChats(apiParams); const chats = chatsData?.data || []; const totalPages = chatsData?.meta?.totalPages || 1; const totalCost = chatsData?.meta?.totalCost; const pageCost = useMemo( () => chats.reduce((sum, chat) => sum + (chat.cost || 0), 0), [chats] ); const filterFields = useAiChatFiltersFields(); const columns = useMemo( () => getAiChatTableColumns({ onViewAnswer: (chat) => { setSelectedChat(chat); setIsModalOpen(true); }, }), [] ); const handleCloseModal = () => { setIsModalOpen(false); setSelectedChat(null); }; return (

لیست چت‌های AI

{typeof totalCost === "number" ? "مجموع هزینه کل" : "مجموع هزینه این صفحه"}
{formatPrice(typeof totalCost === "number" ? totalCost : pageCost)}
{typeof chatsData?.meta?.total === "number" && (
تعداد سوالات
{chatsData.meta.total.toLocaleString("fa-IR")}
)}
columns={columns} data={chats as (AiChat & RowDataType)[]} isloading={isLoading} pagination={{ currentPage, totalPages, onPageChange: handlePageChange, }} />
سوال

{(selectedChat && getAiChatQuestion(selectedChat)) || "-"}

پاسخ

{(selectedChat && getAiChatAnswer(selectedChat)) || "-"}

{typeof selectedChat?.cost === "number" && (
هزینه

{formatPrice(selectedChat.cost)}

)}
); }; export default AiChatsList;