All files / src/features/Notifications/NotificationsCenter/hooks useNotificationsCenter.ts

90.9% Statements 10/11
100% Branches 4/4
75% Functions 3/4
90% Lines 9/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58        25x   403x   403x                 403x   403x 112x     403x                         18x           403x                              
import { useEffect, useState } from "react";
import useGetNotificationsList from "./useGetNoticationsList";
import { TNotificationsFilter } from "../types";
 
const useNotificationsCenter = (open: boolean) => {
  const [selectedFilter, setSelectedFilter] =
    useState<TNotificationsFilter>("unread");
 
  const { listState } = useGetNotificationsList(!open);
  const {
    data,
    isLoading,
    isEmpty,
    hasNextPage,
    isFetchingNextPage,
    fetchNextPage,
    totalPages,
  } = listState[selectedFilter];
 
  useEffect(() => {
    if (!open) setSelectedFilter("unread");
  }, [open]);
 
  const filters = [
    {
      label: "Unread",
      onClick: () => setSelectedFilter("unread"),
      selected: selectedFilter === "unread",
      badge: {
        display: !listState.unread.isLoading,
        text: `${listState.unread.total}`,
        variant: listState.unread.hasUnreadMandatory ? "orange" : "default",
      },
    },
    {
      label: "All notifications",
      onClick: () => setSelectedFilter("all"),
      selected: selectedFilter === "all",
      badge: null,
    },
  ];
 
  return {
    isLoading,
    data,
    isEmpty,
    filters,
    showMarkAllAsRead: listState.unread.total > 0,
    hasNextPage,
    isFetchingNextPage,
    fetchNextPage,
    totalPages,
    selectedFilter,
  };
};
 
export default useNotificationsCenter;