39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import type { Metadata } from "next";
|
|
import Link from "next/link";
|
|
import { auth } from "@/auth";
|
|
import { Button } from "@/components/ui/button";
|
|
import { TopNav } from "@/components/navigation/top-nav";
|
|
import { prisma } from "@/lib/db/prisma";
|
|
import { listInAppNotifications } from "@/services/notifications/notification.service";
|
|
import { NotificationList } from "@/features/notifications/components/notification-list";
|
|
|
|
export const metadata: Metadata = { title: "Notifications" };
|
|
export const dynamic = "force-dynamic";
|
|
|
|
export default async function CustomerNotificationsPage() {
|
|
const session = await auth();
|
|
|
|
if (!session?.user) {
|
|
return (
|
|
<div className="mx-auto max-w-2xl px-6 pt-12">
|
|
<h1 className="mb-6 text-2xl font-bold tracking-tight">Notifications</h1>
|
|
<p className="text-muted mb-4 text-sm">Sign in to see your notifications.</p>
|
|
<Button asChild>
|
|
<Link href="/sign-in?callbackUrl=/notifications">Sign In</Link>
|
|
</Button>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
const notifications = await listInAppNotifications(prisma, { userId: session.user.id });
|
|
|
|
return (
|
|
<div className="pb-12">
|
|
<TopNav title="Notifications" onBack sticky className="bg-stone" />
|
|
<main className="mx-auto max-w-2xl px-6 py-6">
|
|
<NotificationList notifications={notifications} />
|
|
</main>
|
|
</div>
|
|
);
|
|
}
|