Files
web/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/layout.tsx
Matilda Landström 549265cd34 Merged in feat/LOY-615-cleanup-env-prof-consent (pull request #3537)
feat(LOY-615): cleanup profiling consent env var

* feat(LOY-615): cleanup profiling consent env var


Approved-by: Anton Gunnarsson
2026-02-04 16:51:06 +00:00

74 lines
2.3 KiB
TypeScript

import { TrackingSDK } from "@scandic-hotels/tracking/TrackingSDK"
import { getEurobonusMembership } from "@scandic-hotels/trpc/routers/user/helpers"
import {
getProfileSafely,
getProfilingConsent,
} from "@/lib/trpc/memoizedRequests"
import ProfilingConsentAlert from "@/components/MyPages/ProfilingConsent/Alert"
import { ProfilingConsentAlertProvider } from "@/components/MyPages/ProfilingConsent/Alert/AlertContext"
import ProfilingConsentModal from "@/components/MyPages/ProfilingConsent/Modal"
import { userHasConsent } from "@/components/MyPages/ProfilingConsent/utils"
import { SASLevelUpgradeCheck } from "@/components/MyPages/SASLevelUpgradeCheck"
import Surprises from "@/components/MyPages/Surprises"
import { getLang } from "@/i18n/serverContext"
import { ModalTracking } from "@/utils/tracking/profilingConsent"
import styles from "./layout.module.css"
type MyPagesLayoutProps = React.PropsWithChildren<{
breadcrumbs: React.ReactNode
}>
export default async function MyPagesLayout({
breadcrumbs,
children,
}: MyPagesLayoutProps) {
const profile = await getProfileSafely()
const eurobonusMembership = profile?.loyalty
? getEurobonusMembership(profile.loyalty)
: null
const memberKey =
profile?.membership?.membershipNumber || profile?.profileId || ""
const profilingConsentData = await getProfilingConsent()
const profilingConsent = profilingConsentData?.profiling_consent
const hasConsent = userHasConsent(profile?.profilingConsent)
const lang = await getLang()
const showConsentModal = memberKey && profilingConsent && !hasConsent
return (
<ProfilingConsentAlertProvider>
<div className={styles.container}>
<div className={styles.layout}>
{breadcrumbs}
<div className={styles.content}>
<ProfilingConsentAlert />
{children}
</div>
</div>
{eurobonusMembership && <SASLevelUpgradeCheck />}
<Surprises />
{showConsentModal && (
<>
<ProfilingConsentModal
memberKey={memberKey}
content={profilingConsent.modal}
iconIdentifier={profilingConsent.icon}
/>
<TrackingSDK
pageData={{ domainLanguage: lang, ...ModalTracking }}
/>
</>
)}
</div>
</ProfilingConsentAlertProvider>
)
}