import Image from "next/image"; import Link from "next/link"; import type { Session } from "next-auth"; import { getTranslations } from "next-intl/server"; import { LanguageSwitcher } from "@/components/language-switcher"; import { MobileNav } from "@/components/mobile-nav"; import { NavDropdown } from "@/components/nav-dropdown"; import { NavbarColorPicker } from "@/components/navbar-color-picker"; import { ThemeSwitcher } from "@/components/theme-switcher"; import { resolveHotelName } from "@/lib/hotel-name"; import { canAccess, getApiAdminContext, PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; export async function Navigation({ session }: { session: Session | null }) { const t = await getTranslations("nav"); const brandLabel = await resolveHotelName(); let showAdmin = false; let showMod = false; if (session?.user) { const ctx = await getApiAdminContext(); if (ctx) { showAdmin = canAccess( ctx.permissions, PERMS.ADMIN_DASHBOARD, ctx.session.user.rank, ); showMod = canAccess(ctx.permissions, PERMS.MOD_DASHBOARD, ctx.session.user.rank) || canAccess( ctx.permissions, PERMS.MODERATION_VIEW, ctx.session.user.rank, ) || canAccess(ctx.permissions, PERMS.MOD_CFH_VIEW, ctx.session.user.rank) || canAccess(ctx.permissions, PERMS.MOD_ACTIONS, ctx.session.user.rank); } } let unreadMessages = 0; let pendingFriendRequests = 0; if (session?.user?.id) { const id = Number(session.user.id); try { [unreadMessages, pendingFriendRequests] = await Promise.all([ prisma.messengerOffline.count({ where: { userId: id } }), prisma.messengerFriendrequests.count({ where: { userToId: id } }), ]); } catch { } } return ( ); }