feat: mark all as read (#1982)
This commit is contained in:
parent
47abe9db5e
commit
a1acd2772e
5 changed files with 87 additions and 16 deletions
|
|
@ -1,7 +1,7 @@
|
|||
import React from "react";
|
||||
|
||||
// components
|
||||
import { Icon, Tooltip } from "components/ui";
|
||||
import { CustomMenu, Icon, Tooltip } from "components/ui";
|
||||
// helpers
|
||||
import { getNumberCount } from "helpers/string.helper";
|
||||
|
||||
|
|
@ -21,6 +21,7 @@ type NotificationHeaderProps = {
|
|||
setArchived: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
setReadNotification: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
setSelectedTab: React.Dispatch<React.SetStateAction<NotificationType>>;
|
||||
markAllNotificationsAsRead: () => Promise<void>;
|
||||
};
|
||||
|
||||
export const NotificationHeader: React.FC<NotificationHeaderProps> = (props) => {
|
||||
|
|
@ -37,6 +38,7 @@ export const NotificationHeader: React.FC<NotificationHeaderProps> = (props) =>
|
|||
setArchived,
|
||||
setReadNotification,
|
||||
setSelectedTab,
|
||||
markAllNotificationsAsRead,
|
||||
} = props;
|
||||
|
||||
const notificationTabs: Array<{
|
||||
|
|
@ -88,33 +90,51 @@ export const NotificationHeader: React.FC<NotificationHeaderProps> = (props) =>
|
|||
<Icon iconName="filter_list" />
|
||||
</button>
|
||||
</Tooltip>
|
||||
<Tooltip tooltipContent="Snoozed notifications">
|
||||
<button
|
||||
type="button"
|
||||
<CustomMenu
|
||||
customButton={
|
||||
<div className="grid place-items-center ">
|
||||
<Icon iconName="more_vert" />
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<CustomMenu.MenuItem renderAs="button" onClick={markAllNotificationsAsRead}>
|
||||
<div className="flex items-center gap-2">
|
||||
<Icon iconName="done_all" />
|
||||
Mark all as read
|
||||
</div>
|
||||
</CustomMenu.MenuItem>
|
||||
<CustomMenu.MenuItem
|
||||
renderAs="button"
|
||||
onClick={() => {
|
||||
setArchived(false);
|
||||
setReadNotification(false);
|
||||
setSnoozed((prev) => !prev);
|
||||
}}
|
||||
>
|
||||
<Icon iconName="schedule" />
|
||||
</button>
|
||||
</Tooltip>
|
||||
<Tooltip tooltipContent="Archived notifications">
|
||||
<button
|
||||
type="button"
|
||||
<div className="flex items-center gap-2">
|
||||
<Icon iconName="schedule" />
|
||||
Show snoozed
|
||||
</div>
|
||||
</CustomMenu.MenuItem>
|
||||
<CustomMenu.MenuItem
|
||||
renderAs="button"
|
||||
onClick={() => {
|
||||
setSnoozed(false);
|
||||
setReadNotification(false);
|
||||
setArchived((prev) => !prev);
|
||||
}}
|
||||
>
|
||||
<Icon iconName="archive" />
|
||||
<div className="flex items-center gap-2">
|
||||
<Icon iconName="archive" />
|
||||
Show archived
|
||||
</div>
|
||||
</CustomMenu.MenuItem>
|
||||
</CustomMenu>
|
||||
<Tooltip tooltipContent="Close">
|
||||
<button type="button" onClick={() => closePopover()}>
|
||||
<Icon iconName="close" />
|
||||
</button>
|
||||
</Tooltip>
|
||||
<button type="button" onClick={() => closePopover()}>
|
||||
<Icon iconName="close" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="border-b border-custom-border-300 w-full px-5 mt-5">
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ export const NotificationPopover = () => {
|
|||
hasMore,
|
||||
isRefreshing,
|
||||
setFetchNotifications,
|
||||
markAllNotificationsAsRead,
|
||||
} = useUserNotification();
|
||||
|
||||
// theme context
|
||||
|
|
@ -112,7 +113,7 @@ export const NotificationPopover = () => {
|
|||
leaveFrom="opacity-100 translate-y-0"
|
||||
leaveTo="opacity-0 translate-y-1"
|
||||
>
|
||||
<Popover.Panel className="absolute bg-custom-background-100 flex flex-col left-0 md:left-full ml-8 z-10 -top-44 md:w-[36rem] w-[20rem] h-[75vh] border border-custom-border-300 shadow-lg rounded-xl">
|
||||
<Popover.Panel className="absolute bg-custom-background-100 flex flex-col left-0 md:left-full ml-8 z-10 -top-36 md:w-[36rem] w-[20rem] h-[50vh] border border-custom-border-300 shadow-lg rounded-xl">
|
||||
<NotificationHeader
|
||||
notificationCount={notificationCount}
|
||||
notificationMutate={notificationMutate}
|
||||
|
|
@ -126,6 +127,7 @@ export const NotificationPopover = () => {
|
|||
setArchived={setArchived}
|
||||
setReadNotification={setReadNotification}
|
||||
setSelectedTab={setSelectedTab}
|
||||
markAllNotificationsAsRead={markAllNotificationsAsRead}
|
||||
/>
|
||||
|
||||
{notifications ? (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue