import React, { useState } from "react"; import { useActionOnExpense, useExpense } from "../../hooks/useExpense"; import { formatUTCToLocalTime } from "../../utils/dateUtils"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { ActionSchema } from "./ExpenseSchema"; import { useExpenseContext } from "../../pages/Expense/ExpensePage"; import { getColorNameFromHex } from "../../utils/appUtils"; import { ExpenseDetailsSkeleton } from "./ExpenseSkeleton"; const ViewExpense = ({ ExpenseId }) => { const { data, isLoading, isError, error } = useExpense(ExpenseId); const [imageLoaded, setImageLoaded] = useState({}); const { setDocumentView } = useExpenseContext(); const { register, handleSubmit, setValue, formState: { errors }, } = useForm({ resolver: zodResolver(ActionSchema), defaultValues: { comment: "", selectedStatus: "", }, }); const { mutate: MakeAction } = useActionOnExpense(); const onSubmit = (formData) => { const Payload = { expenseId: ExpenseId?.id, statusId: formData.selectedStatus, comment: formData.comment, }; MakeAction(Payload); }; if (isLoading) return const handleImageLoad = (id) => { setImageLoaded((prev) => ({ ...prev, [id]: true })); }; return (
Expense Details

{/* Expense Info Rows */}
{formatUTCToLocalTime(data.transactionDate)}
{data.expensesType.name}
{data.supplerName}
₹ {data.amount}
{data.paymentMode.name}
{data.paidBy.firstName} {data.paidBy.lastName}
{data?.status?.displayName}
{data.preApproved ? "Yes" : "No"}
{data?.project?.name}
{data?.createdBy?.firstName} {data?.createdBy?.lastName}
{formatUTCToLocalTime(data?.createdAt, true)}
{data?.description}
{data?.documents && data?.documents?.map((doc) => (
{doc.contentType === "application/pdf" ? (
) : ( <> {!imageLoaded[doc.id] && (
Loading...
)} {doc.fileName} handleImageLoad(doc.id)} onClick={() => setDocumentView({ IsOpen: true, Image: doc.preSignedUrl }) } /> )}
{doc.fileName}
))}

{Array.isArray(data.nextStatus) && data.nextStatus.length > 0 && (