Files
web/apps/partner-sas/components/Header/Header.tsx
Joakim Jäderberg c46e71d76e Merged in feature/SW-3505-fetch-eurobonus-points (pull request #2847)
feat(SW-3505): add endpoint for getting eurobonus profile

* feat(SW-3505): add endpoint for getting eurobonus profile

* make sure we add loginType to session

* no need to run zod parsing twice

* Make SAS environment variables mandatory


Approved-by: Anton Gunnarsson
2025-09-23 12:13:20 +00:00

79 lines
2.5 KiB
TypeScript

"use client"
import { useSession } from "next-auth/react"
import Image from "@scandic-hotels/design-system/Image"
import Link from "@scandic-hotels/design-system/Link"
import SkeletonShimmer from "@scandic-hotels/design-system/SkeletonShimmer"
import { Typography } from "@scandic-hotels/design-system/Typography"
import { trpc } from "@scandic-hotels/trpc/client"
import useLang from "@/hooks/useLang"
import { PoweredByScandic } from "../PoweredByScandic/PoweredByScandic"
import styles from "./header.module.css"
export function Header() {
const lang = useLang()
const session = useSession()
const {
data: profileData,
isLoading,
isSuccess,
} = trpc.partner.sas.getEuroBonusProfile.useQuery(undefined, {
enabled: session.status === "authenticated",
})
return (
<>
<header className={styles.header}>
<Image
alt="SAS logotype"
className={styles.logo}
src="/_static/img/sas-logotype-white.svg"
height={32}
width={90}
sizes="100vw"
/>
{session.status === "loading" && (
<SkeletonShimmer width={"12ch"} height={"1ch"} />
)}
{session.status === "unauthenticated" && (
/** For some reason it complains about RSC-payload if using <Link /> */
<a href={`/${lang}/login?redirectTo=${window?.location.href}`}>
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
{"Login here"}
</a>
)}
{session.status === "authenticated" && (
<div>
<Typography variant="Body/Supporting text (caption)/smBold">
<span>
{session.data?.user && <>{session.data.user.email}</>}
</span>
</Typography>
{isLoading && <SkeletonShimmer width={"6ch"} height={"1ch"} />}
{isSuccess && profileData && (
<Typography variant="Body/Supporting text (caption)/smBold">
<span>
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
{profileData.points.total} Points
</span>
</Typography>
)}
<Link color={"white"} href={`/${lang}/logout`} prefetch={false}>
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
{"Logout"}
</Link>
</div>
)}
</header>
<div className={styles.poweredBy}>
<PoweredByScandic />
</div>
</>
)
}