diff --git a/src/components/Expenses/ViewExpense.jsx b/src/components/Expenses/ViewExpense.jsx index 9c3b24a2..f6aeb09e 100644 --- a/src/components/Expenses/ViewExpense.jsx +++ b/src/components/Expenses/ViewExpense.jsx @@ -1,5 +1,9 @@ import React, { useState, useMemo } from "react"; -import { useActionOnExpense, useExpense, useHasAnyPermission } from "../../hooks/useExpense"; +import { + useActionOnExpense, + useExpense, + useHasAnyPermission, +} from "../../hooks/useExpense"; import { formatUTCToLocalTime } from "../../utils/dateUtils"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; @@ -11,12 +15,14 @@ import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { REVIEW_EXPENSE } from "../../utils/constants"; import { useProfile } from "../../hooks/useProfile"; import { useSelector } from "react-redux"; +import { useNavigate } from "react-router-dom"; const ViewExpense = ({ ExpenseId }) => { const { data, isLoading, isError, error } = useExpense(ExpenseId); const IsReview = useHasUserPermission(REVIEW_EXPENSE); const [imageLoaded, setImageLoaded] = useState({}); const { setDocumentView } = useExpenseContext(); + const navigate = useNavigate(); const { register, handleSubmit, @@ -30,27 +36,24 @@ const ViewExpense = ({ ExpenseId }) => { selectedStatus: "", }, }); - -const userPermissions = useSelector( - (state) => state?.globalVariables?.loginUser?.featurePermissions || [] -); + const userPermissions = useSelector( + (state) => state?.globalVariables?.loginUser?.featurePermissions || [] + ); -const nextStatusWithPermission = useMemo(() => { - if (!Array.isArray(data?.nextStatus)) return []; + const nextStatusWithPermission = useMemo(() => { + if (!Array.isArray(data?.nextStatus)) return []; - return data.nextStatus.filter((status) => { - const permissionIds = Array.isArray(status?.permissionIds) - ? status.permissionIds - : []; - - if (permissionIds.length === 0) return true; - - return permissionIds.some((id) => userPermissions.includes(id)); - }); -}, [data, userPermissions]); + return data.nextStatus.filter((status) => { + const permissionIds = Array.isArray(status?.permissionIds) + ? status.permissionIds + : []; + if (permissionIds.length === 0) return true; + return permissionIds.some((id) => userPermissions.includes(id)); + }); + }, [data, userPermissions]); const { mutate: MakeAction } = useActionOnExpense(() => reset()); @@ -189,12 +192,27 @@ const nextStatusWithPermission = useMemo(() => {
{data?.description}
-
- - {data?.documents && - data?.documents?.map((doc) => ( +
+ + + {data?.documents?.map((doc) => { + const getIconByType = (type) => { + if (!type) return "bx bx-file"; + + if (type.includes("pdf")) return "bxs-file-pdf"; + if (type.includes("word")) return "bxs-file-doc"; + if (type.includes("excel") || type.includes("spreadsheet")) + return "bxs-file-xls"; + if (type.includes("image")) return "bxs-file-image"; + if (type.includes("zip") || type.includes("rar")) + return "bxs-file-archive"; + + return "bx bx-file"; // Default + }; + + const isImage = doc.contentType?.includes("image"); + + return (
{
{ + if (isImage) { + setDocumentView({ + IsOpen: true, + Image: doc.preSignedUrl, + }); + } + }} > - {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 && ( -
- + {Array.isArray(data?.nextStatus) && data.nextStatus.length > 0 && ( +
+ -