import React, { useState } from "react"; import { useSelector } from "react-redux"; import TimeDifference from "../Helpers/TimeDifference"; import { handlePagingFunc } from "../Pagination/HandlePagination"; import PaginatedList from "../Pagination/PaginatedList"; import Layout from "../Partials/Layout"; const tabs = [ { id: 1, date: "today", title: "Today's", }, { id: 2, date: "days", title: "7 days", }, { id: 3, date: "all", title: "All", }, ]; export default function Notification() { const [selectTab, setValue] = useState(tabs ? tabs[2].title : ""); const { notifications } = useSelector((state) => state?.notifications); const [notificationData, setNotificationData] = useState(notifications?.data || []) const [currentPage, setCurrentPage] = useState(0); const indexOfFirstItem = Number(currentPage); const indexOfLastItem = Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE); const currentNotifications = notificationData?.slice(indexOfFirstItem, indexOfLastItem); const filterHandler = (value) => { setValue(value); switch(value){ case `Today's`: // setNotificationData(notifications?.data?.slice(0,5)) setNotificationData(notifications?.data.filter(item => (new Date().getTime() - new Date(item.date).getTime())/(1000*60*60*24) <= 1)) setCurrentPage(0) break; case `All`: setNotificationData(notifications?.data) setCurrentPage(0) break; case `7 days`: // setNotificationData(notifications?.data?.slice(0,2)) setNotificationData(notifications?.data.filter(item => (new Date().getTime() - new Date(item.date).getTime())/(1000*60*60*24) <= 7)) setCurrentPage(0) break; default: break; } }; const handlePagination = (e) => { handlePagingFunc(e, setCurrentPage); }; return (
{/* heading */}

{selectTab + " "} Notifications

{tabs.map(({ id, title, date }) => (
filterHandler(title)} className="relative"> {title} {date === "today" && ( {notifications?.data?.length} )}
))}
{/* Body */}
    {currentNotifications?.length > 0 ? ( <> {currentNotifications?.map(({ date, icon, title }, idx) => { return ( ); })} ) : ( "No Notifications Available" )}
{/* PAGINATION BUTTON */} = notificationData.length ? true : false } data={notificationData} start={indexOfFirstItem} stop={indexOfLastItem} />
); } const NotificationItem = ({ date, icon, title, length }, idx) => { return (
  • icon

    {title}

  • ); };