import React, { useState } from "react"; import { useExpenseList } from "../../hooks/useExpense"; import Avatar from "../common/Avatar"; import { useExpenseContext } from "../../pages/Expense/ExpensePage"; import { formatDate, formatUTCToLocalTime } from "../../utils/dateUtils"; import Pagination from "../common/Pagination"; import { ITEMS_PER_PAGE } from "../../utils/constants"; import { AppColorconfig, getColorNameFromHex } from "../../utils/appUtils"; const ExpenseList = () => { const { setViewExpense,setExpenseModal } = useExpenseContext(); const [currentPage, setCurrentPage] = useState(1); const pageSize = 10; const filter = { projectIds: [], statusIds: [], createdByIds: [], paidById: [], startDate: null, endDate: null, }; const { data, isLoading, isError,isInitialLoading } = useExpenseList(10, currentPage, filter); if (isInitialLoading) return
Loading...
; const items = data.data ?? []; const totalPages = data?.totalPages ?? 1; const hasMore = currentPage < totalPages; const paginate = (page) => { if (page >= 1 && page <= totalPages) { setCurrentPage(page); } }; return (
{isLoading && ( )} {!isInitialLoading && items.length === 0 && ( )} {!isInitialLoading && items.map((expense) => ( ))}
Date Time
Expense Type
Payment Mode
Paid By
Amount Status Action
Loading...
No expenses found.
{formatUTCToLocalTime(expense.transactionDate)}
{expense.expensesType?.name || "N/A"} {expense.paymentMode?.name || "N/A"}
{`${expense.paidBy?.firstName ?? ""} ${ expense.paidBy?.lastName ?? "" }`.trim() || "N/A"}
{expense.amount} {expense.status?.name || "Unknown"}
setViewExpense({ expenseId: expense, view: true }) } > setExpenseModal({isOpen:true,ExpEdit:expense})} >
{!isInitialLoading && items.length > 0 && ( )}
); }; export default ExpenseList;