diff --git a/src/app/(notifications)/notification-history/[id]/page.tsx b/src/app/(notifications)/notification-history/[id]/page.tsx index 3f01c84..2cdaa3c 100644 --- a/src/app/(notifications)/notification-history/[id]/page.tsx +++ b/src/app/(notifications)/notification-history/[id]/page.tsx @@ -1,13 +1,10 @@ "use client"; import Loading from "@/app/loading"; import Breadcrumb from "@/components/Breadcrumbs/Breadcrumb"; -import { ShowcaseSection } from "@/components/Layouts/showcase-section"; -import IsVisible from "@/components/ui/IsVisible"; +import { NotificationDetailsCard } from "@/components/ui/notification-details-card"; import { useGetNotificationDetails } from "@/hooks/queries/useNotificationQueries"; import { BreadcrumbItem } from "@/types/shared"; -import { unixToDate } from "@/utils/shared"; import { use } from "react"; -import { capitalize } from "../../../../utils/shared"; interface IProps { params: Promise<{ id: string }>; @@ -35,48 +32,7 @@ const NotificationDetailsPage = ({ params }: IProps) => { return ( <> - -
- - - {data?.data.event_type} - - - - {data?.data.link} - - - - - {capitalize(data?.data.priority ?? "")} - - - - - - {capitalize(data?.data.type ?? "")} - - - - - {unixToDate({ unix: data?.data.seen_at ?? 0, hasTime: false })} - - - - - {data?.data.is_scheduled ? "Yes" : "No"} - - - {data?.data.seen ? "Yes" : "No"} - -
-
- - - {data?.data.message} - - -
+ {data?.data && } ); }; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 91ecfd1..f21dd3c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -12,7 +12,7 @@ import { Providers } from "./providers"; export const metadata: Metadata = { title: { - template: "%s | NextAdmin - Next.js Dashboard Kit", + template: "%s | Opp lens", default: "Opp lens - panel", }, description: diff --git a/src/app/tenders/page.tsx b/src/app/tenders/page.tsx index b600890..a9cd065 100644 --- a/src/app/tenders/page.tsx +++ b/src/app/tenders/page.tsx @@ -1,6 +1,9 @@ import Breadcrumb from "@/components/Breadcrumbs/Breadcrumb"; import TendersTable from "@/components/Tables/tenders"; - +import { Metadata } from "next"; +export const metadata:Metadata = { + title: "Tenders Page", +} const TendersPage = () => { const breadcrumbItems = [ { name: "Dashboard", href: "/" }, diff --git a/src/assets/icons.tsx b/src/assets/icons.tsx index 89c771b..a8e3570 100644 --- a/src/assets/icons.tsx +++ b/src/assets/icons.tsx @@ -228,6 +228,20 @@ export function CalendarIcon(props: IconProps) { ); } +// export function CheckIcon(props: IconProps) { +// return ( +// +// +// +// ); +// } export function EyeIcon(props: IconProps) { return ( diff --git a/src/components/Layouts/header/notification/index.tsx b/src/components/Layouts/header/notification/index.tsx index 0223677..c8a73d8 100644 --- a/src/components/Layouts/header/notification/index.tsx +++ b/src/components/Layouts/header/notification/index.tsx @@ -103,7 +103,7 @@ export function Notification() { mutate(); }} > -
+

{currentNotification?.title}

{currentNotification?.message}

diff --git a/src/components/Layouts/header/notification/notification-list.tsx b/src/components/Layouts/header/notification/notification-list.tsx index 9f3fb8e..d80d11f 100644 --- a/src/components/Layouts/header/notification/notification-list.tsx +++ b/src/components/Layouts/header/notification/notification-list.tsx @@ -16,7 +16,7 @@ const NotificationList = ({ setUnreadNotificationCount, onNotificationClick, }: IProps) => { - const { data, isLoading } = useGetMyNotifications({ seen: false }); + const { data, isLoading } = useGetMyNotifications({seen:false}); useEffect(() => { setUnreadNotificationCount(data?.data.length ?? 0); }, [data, isLoading]); diff --git a/src/components/Tables/notification-history/index.tsx b/src/components/Tables/notification-history/index.tsx index 83d3462..670ff2a 100644 --- a/src/components/Tables/notification-history/index.tsx +++ b/src/components/Tables/notification-history/index.tsx @@ -1,5 +1,5 @@ "use client"; -import { EyeIcon } from "@/assets/icons"; +import { CheckIcon, CrossIcon, EyeIcon } from "@/assets/icons"; import { ShowcaseSection } from "@/components/Layouts/showcase-section"; import Pagination from "@/components/ui/pagination"; import Status from "@/components/ui/Status"; @@ -13,7 +13,7 @@ import { } from "@/components/ui/table"; import TableSkeleton from "@/components/ui/TableSkeleton"; import { _TooltipDefaultParams } from "@/constants/tooltip"; -import { isoStringToDate } from "@/utils/shared"; +import { unixToDate } from "@/utils/shared"; import Link from "next/link"; import { Tooltip } from "react-tooltip"; import useNotificationHistoryTablePresenter from "./useNotificationHistoryTablePresenter"; @@ -59,9 +59,9 @@ const NotificationHistoryTable = () => { {item.title} {item.event_type} - {isoStringToDate({ + {unixToDate({ hasTime: true, - isoString: item.created_at, + unix: item.created_at, })} {item.message} @@ -72,7 +72,11 @@ const NotificationHistoryTable = () => { {item.type} - {item.seen ? "Seen" : "Unseen"} + {item.seen ? ( + + ) : ( + + )} {item.status} diff --git a/src/components/ui/notification-details-card.tsx b/src/components/ui/notification-details-card.tsx new file mode 100644 index 0000000..54332f7 --- /dev/null +++ b/src/components/ui/notification-details-card.tsx @@ -0,0 +1,67 @@ +"use client"; +import { TNotificationDetailsResponse } from "@/lib/api/types/NotificationHistory"; +import { capitalize, unixToDate } from "@/utils/shared"; +import { FC } from "react"; +import IsVisible from "./IsVisible"; +import Status from "./Status"; + +interface IProps { + data: TNotificationDetailsResponse; +} + +export const NotificationDetailsCard: FC = ({ data }) => { + return ( +
+
+ + + + + + {capitalize(data.priority ?? "")} + + + + + {capitalize(data.type ?? "")} + + + + + + + {data.seen ? "Yes" : "No"} + + +
+ +
+ +

{data.message}

+
+
+
+ ); +}; + +const DetailItem: FC<{ + title: string; + value?: string; + children?: React.ReactNode; +}> = ({ title, value, children }) => { + return ( +
+ + {title} + + {value ?

{value}

: null} + {children ?
{children}
: null} +
+ ); +}; diff --git a/src/lib/api/types/NotificationHistory.ts b/src/lib/api/types/NotificationHistory.ts index e6bb824..c6a4b86 100644 --- a/src/lib/api/types/NotificationHistory.ts +++ b/src/lib/api/types/NotificationHistory.ts @@ -8,7 +8,7 @@ import { z } from "zod"; import { createApiResponseSchema } from "./Factory"; export const notificationSchema = z.object({ - created_at: z.string(), + created_at: z.number(), event_type: z.string(), id: z.string(), image: z.string(), @@ -35,6 +35,24 @@ export const notificationSchema = z.object({ type: z.string(), updated_at: z.string(), user_id: z.string(), + recipient: z + .object({ + id: z.string(), + full_name: z.string(), + username: z.string(), + email: z.string(), + role: z.string(), + status: z.string(), + department: z.string(), + position: z.string(), + phone: z.string(), + profile_image: z.string(), + is_verified: z.boolean(), + last_login_at: z.number(), + updated_at: z.number(), + created_at: z.number(), + }) + .optional(), }); const createNotificationCredentialsSchema = z.object({ channels: z.array(z.enum(NotificationChannels)),