import React, { useEffect, useContext, useState, useRef } from "react"; import { useNavigate } from "react-router-dom"; import { CaseCard } from "../../pageElements/Cards.js"; import CreateModal from "../Modals/CreateModal.js"; import MobileContent from "../MobileContent.js"; import { db } from "../../firebase"; import { AppContext } from "../../Hooks/useContext/appContext"; import SelectDropdown from "../../pageElements/SelectDropdown"; import { collection, query, where, onSnapshot } from "firebase/firestore"; import ListPagination from "../../pageElements/ListPagination.js"; import Button from "../../pageElements/Button"; const CaseListPage = ({ perPage }) => { const size = window.innerWidth < 440; const [isMobile, setIsMobile] = useState(size); const count = useRef(null); const navigate = useNavigate(); const [showModal, setShowModal] = useState(false); const [allCases, setAllCases] = useState(null); const [page, setPage] = useState(1); const [totalPages, setTotalPages] = useState(1); const [order, setOrder] = useState("caption"); const { appState } = useContext(AppContext); const { group } = appState; const appUserId = group ? group.appUserId : null; const state = group ? group?.state[0].code : null; useEffect(() => { if (count.current == null) { setIsMobile(window.innerWidth < 440); } if (count.current < 3) { setIsMobile(window.innerWidth < 440); } return () => { const temp = (count.current = count.current + 1); count.current = temp; }; }, []); function getCases() { if (!appUserId) { setAllCases([]); return; } const q = query(collection(db, "cases"), where("ownerId", "==", appUserId)); const unsub = onSnapshot(q, (snapshot) => { const data = snapshot.docs.map((doc) => doc.data()); if (order === "caption") { data.sort((a, b) => { return a.caption.toLowerCase() > b.caption.toLowerCase() ? 1 : -1; }); } else if (order === "caption2") { data.sort((a, b) => { return a.caption.toLowerCase() < b.caption.toLowerCase() ? 1 : -1; }); } else if (order === "filedDate") { data.sort((a, b) => { return a.filedDate > b.filedDate ? 1 : -1; }); } else if (order === "filedDate2") { data.sort((a, b) => { return a.filedDate < b.filedDate ? 1 : -1; }); } const pages = Math.ceil(data.length / perPage); if (page > pages) { setPage(pages); } setTotalPages(pages); setAllCases(data); }); return unsub; } const createNewButton = () => { return (
); }; const dropDownOptions = [ { label: "Case name a - z", value: "caption" }, { label: "Case name z - a", value: "caption2" }, { label: "Date filed 1 - 10", value: "filedDate" }, { label: "Date filed 10 - 1", value: "filedDate2" }, ]; useEffect(getCases, [appUserId, order]); async function deleteData() { console.log("delete data"); } const handleView = (caseId) => { navigate(`/casedetails/${caseId}`); }; if (!group) { return null; } const DesktopContent = () => { return ( <>

Active Cases

{group.firm}
{showModal ? : <>} {allCases === null ?
Loading...
: null} {allCases !== null ? ( allCases.length > 0 ? ( <>
{allCases .slice((page - 1) * perPage, page * perPage) .map((c, i) => ( ))}
{totalPages > 1 ? (
) : null} {createNewButton()} ) : (

Please create your first case.

To create a discovery request or response, you will first enter some basic information about the case they will pertain to - i.e. the caption and case number.

Then, you will upload a document (i.e. interrogatories or a complaint), for use in generating a request/response.

Click "Create New Case" to get started.

{createNewButton()}
) ) : null} ); }; return isMobile ? : ; }; export default CaseListPage;