Using feature flag

This commit is contained in:
Linus Flood
2024-09-19 13:28:51 +02:00
parent 730f66d79a
commit 69359da126
12 changed files with 56 additions and 53 deletions

View File

@@ -48,3 +48,5 @@ GOOGLE_STATIC_MAP_KEY=""
GOOGLE_STATIC_MAP_SIGNATURE_SECRET=""
GOOGLE_STATIC_MAP_ID=""
GOOGLE_DYNAMIC_MAP_ID=""
HIDE_FOR_NEXT_RELEASE="true"

View File

@@ -41,3 +41,4 @@ GOOGLE_STATIC_MAP_KEY="test"
GOOGLE_STATIC_MAP_SIGNATURE_SECRET="test"
GOOGLE_STATIC_MAP_ID="test"
GOOGLE_DYNAMIC_MAP_ID="test"
HIDE_FOR_NEXT_RELEASE="test

View File

@@ -1,5 +1,7 @@
import { notFound } from "next/navigation"
import { env } from "@/env/server"
import ContentPage from "@/components/ContentType/ContentPage"
import HotelPage from "@/components/ContentType/HotelPage"
import LoyaltyPage from "@/components/ContentType/LoyaltyPage"
@@ -25,6 +27,9 @@ export default async function ContentTypePage({
case "loyalty-page":
return <LoyaltyPage />
case "hotel-page":
if (env.HIDE_FOR_NEXT_RELEASE) {
return notFound()
}
return <HotelPage />
default:
const type: never = params.contentType

View File

@@ -1,3 +1,6 @@
import { env } from "@/env/server"
import CurrentHeader from "@/components/Current/Header"
import Header from "@/components/Header"
import { setLang } from "@/i18n/serverContext"
@@ -6,5 +9,9 @@ import { LangParams, PageArgs } from "@/types/params"
export default async function HeaderPage({ params }: PageArgs<LangParams>) {
setLang(params.lang)
if (env.HIDE_FOR_NEXT_RELEASE) {
return <CurrentHeader />
}
return <Header />
}

View File

@@ -3,10 +3,12 @@ import "@scandic-hotels/design-system/style.css"
import Script from "next/script"
import { env } from "@/env/server"
import TrpcProvider from "@/lib/trpc/Provider"
import TokenRefresher from "@/components/Auth/TokenRefresher"
import AdobeSDKScript from "@/components/Current/AdobeSDKScript"
import CurrentFooter from "@/components/Current/Footer"
import VwoScript from "@/components/Current/VwoScript"
import Footer from "@/components/Footer"
import { ToastHandler } from "@/components/TempDesignSystem/Toasts"
@@ -54,10 +56,10 @@ export default async function RootLayout({
<ServerIntlProvider intl={{ defaultLocale, locale, messages }}>
<TrpcProvider>
{header}
{bookingwidget}
{!env.HIDE_FOR_NEXT_RELEASE && <>{bookingwidget}</>}
{children}
<ToastHandler />
<Footer />
{env.HIDE_FOR_NEXT_RELEASE ? <CurrentFooter /> : <Footer />}
<TokenRefresher />
</TrpcProvider>
</ServerIntlProvider>

View File

@@ -0,0 +1,10 @@
import Header from "@/components/Current/Header"
import { setLang } from "@/i18n/serverContext"
import { LangParams, PageArgs } from "@/types/params"
export default async function HeaderPage({ params }: PageArgs<LangParams>) {
setLang(params.lang)
return <Header />
}

View File

@@ -0,0 +1,5 @@
"use client"
export default function Error() {
return null
}

View File

@@ -1,18 +0,0 @@
import { serverClient } from "@/lib/trpc/server"
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
import { setLang } from "@/i18n/serverContext"
import { LangParams, PageArgs } from "@/types/params"
export default async function LanguageSwitcherRoute({
params,
}: PageArgs<LangParams>) {
setLang(params.lang)
const data = await serverClient().contentstack.languageSwitcher.get()
if (!data) {
return null
}
return <LanguageSwitcher urls={data.urls} />
}

View File

@@ -1,9 +0,0 @@
"use client"
import { baseUrls } from "@/constants/routes/baseUrls"
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
export default function Error() {
return <LanguageSwitcher urls={baseUrls} />
}

View File

@@ -27,12 +27,9 @@ export const metadata: Metadata = {
export default async function RootLayout({
children,
params,
languageSwitcher,
myPagesMobileDropdown,
header,
}: React.PropsWithChildren<
LayoutArgs<LangParams> & { languageSwitcher: React.ReactNode } & {
myPagesMobileDropdown: React.ReactNode
}
LayoutArgs<LangParams> & { header: React.ReactNode }
>) {
setLang(params.lang)
const { defaultLocale, locale, messages } = await getIntl()
@@ -68,10 +65,7 @@ export default async function RootLayout({
<LangPopup />
<SkipToMainContent />
<ServerIntlProvider intl={{ defaultLocale, locale, messages }}>
<Header
myPagesMobileDropdown={myPagesMobileDropdown}
languageSwitcher={languageSwitcher}
/>
{header}
<BookingWidget />
{children}
<Footer />

View File

@@ -4,25 +4,25 @@ import { serverClient } from "@/lib/trpc/server"
import { getLang } from "@/i18n/serverContext"
import LanguageSwitcher from "./LanguageSwitcher"
import { MainMenu } from "./MainMenu"
import MyPagesMobileDropdown from "./MyPagesMobileDropdown"
import OfflineBanner from "./OfflineBanner"
import TopMenu from "./TopMenu"
import styles from "./header.module.css"
export default async function Header({
languageSwitcher,
myPagesMobileDropdown,
}: {
languageSwitcher: React.ReactNode
myPagesMobileDropdown: React.ReactNode
}) {
const data = await serverClient().contentstack.base.currentHeader({
lang: getLang(),
})
const user = await serverClient().user.name()
export default async function Header() {
const [data, user, languages, navigation] = await Promise.all([
serverClient().contentstack.base.currentHeader({
lang: getLang(),
}),
serverClient().user.name(),
serverClient().contentstack.languageSwitcher.get(),
serverClient().contentstack.myPages.navigation.get(),
])
if (!data) {
if (!navigation || !languages || !data) {
return null
}
@@ -40,7 +40,7 @@ export default async function Header({
frontpageLinkText={frontpage_link_text}
homeHref={homeHref}
links={top_menu.links}
languageSwitcher={languageSwitcher}
languageSwitcher={<LanguageSwitcher urls={languages.urls} />}
/>
<MainMenu
frontpageLinkText={frontpage_link_text}
@@ -48,8 +48,10 @@ export default async function Header({
links={menu.links}
logo={logo}
topMenuMobileLinks={topMenuMobileLinks}
languageSwitcher={languageSwitcher}
myPagesMobileDropdown={myPagesMobileDropdown}
languageSwitcher={<LanguageSwitcher urls={languages.urls} />}
myPagesMobileDropdown={
<MyPagesMobileDropdown navigation={navigation} />
}
bookingHref={homeHref}
user={user}
/>

2
env/server.ts vendored
View File

@@ -65,6 +65,7 @@ export const env = createEnv({
GOOGLE_STATIC_MAP_SIGNATURE_SECRET: z.string(),
GOOGLE_DYNAMIC_MAP_ID: z.string(),
GOOGLE_STATIC_MAP_ID: z.string(),
HIDE_FOR_NEXT_RELEASE: z.string(),
},
emptyStringAsUndefined: true,
runtimeEnv: {
@@ -117,5 +118,6 @@ export const env = createEnv({
process.env.GOOGLE_STATIC_MAP_SIGNATURE_SECRET,
GOOGLE_STATIC_MAP_ID: process.env.GOOGLE_STATIC_MAP_ID,
GOOGLE_DYNAMIC_MAP_ID: process.env.GOOGLE_DYNAMIC_MAP_ID,
HIDE_FOR_NEXT_RELEASE: process.env.HIDE_FOR_NEXT_RELEASE,
},
})