projeto-hit/frontend/src/components/Ticket/TicketsManager/TicketsManager.jsx

72 lines
2.2 KiB
React
Raw Normal View History

2022-07-25 18:18:27 +00:00
import React from "react";
import TicketsManagerStyled from "./TicketsManager.style";
import TicketsTabs from "./TicketsTabs/TicketsTabs";
import TicketsList from "./TicketsList/TicketsList";
import NewTicketModal from "../../NewTicketModal";
import useTickets from "../../../hooks/useTickets";
2022-07-25 18:18:27 +00:00
import { AuthContext } from "../../../context/Auth/AuthContext";
import TicketSearch from "../TicketSearch/TicketSearch";
2022-07-25 18:18:27 +00:00
const TicketsManager = () => {
const [valueTab, setValueTab] = React.useState("open");
const [searchParam, setSearchParam] = React.useState("");
const [spinning, setSpinning] = React.useState(false);
2022-07-25 18:18:27 +00:00
const [newTicketModalOpen, setNewTicketModalOpen] = React.useState(false);
const [showAllTickets, setShowAllTickets] = React.useState(false);
const { user } = React.useContext(AuthContext);
const userQueueIds = user.queues.map((q) => q.id);
const [selectedQueueIds, setSelectedQueueIds] = React.useState(userQueueIds || []);
const { tickets } = useTickets({
searchParam
});
2022-07-25 18:18:27 +00:00
let searchTimeout;
const handleSearch = (e) => {
setSpinning(true);
2022-07-25 18:18:27 +00:00
const searchedTerm = e.target.value.toLowerCase();
clearTimeout(searchTimeout);
searchTimeout = setTimeout(() => {
setSearchParam(searchedTerm);
setSpinning(false);
}, 200);
2022-07-25 18:18:27 +00:00
if (searchedTerm === "") {
setSearchParam(searchedTerm);
return;
}
};
React.useEffect(() => {
if (user.profile.toUpperCase() === "ADMIN") {
setShowAllTickets(true);
}
}, [user.profile]);
2022-07-25 18:18:27 +00:00
return (
<TicketsManagerStyled>
<TicketsTabs tickets={tickets} setValueTab={setValueTab} valueTab={valueTab} />
<TicketSearch
spinning={spinning}
handleSearch={handleSearch}
setNewTicketModalOpen={setNewTicketModalOpen}
/>
<TicketsList
showAll={showAllTickets}
status={valueTab}
selectedQueueIds={selectedQueueIds}
searchParam={searchParam}
/>
2022-07-25 18:18:27 +00:00
<NewTicketModal
modalOpen={newTicketModalOpen}
onClose={(e) => setNewTicketModalOpen(false)}
/>
</TicketsManagerStyled>
);
};
export default TicketsManager;