Files
supabase/apps/www/pages/ga-week.tsx
Francesco Sansalvadore 5c8a885bf5 fix www sitemap generator (#28938)
* fix www sitemap generator

* remove 404 from sitemap

* include nested routes
2024-08-28 15:06:40 +02:00

113 lines
3.7 KiB
TypeScript

import { useState, useEffect } from 'react'
import dynamic from 'next/dynamic'
import { useRouter } from 'next/router'
import { NextSeo } from 'next-seo'
import { Session } from '@supabase/supabase-js'
import { SITE_ORIGIN } from '~/lib/constants'
import supabase from '~/lib/supabaseMisc'
import DefaultLayout from '~/components/Layouts/Default'
import { TicketState, ConfDataContext, UserData } from '~/components/LaunchWeek/hooks/use-conf-data'
import SectionContainer from '~/components/Layouts/SectionContainer'
import LW11StickyNav from '~/components/LaunchWeek/11/Releases/LW11StickyNav'
import LW11Header from '~/components/LaunchWeek/11/Releases/LW11Header'
import MainStage from '~/components/LaunchWeek/11/Releases/MainStage'
const BuildStage = dynamic(() => import('~/components/LaunchWeek/11/Releases/BuildStage'))
const LW11Meetups = dynamic(() => import('~/components/LaunchWeek/11/LW11Meetups'))
const LaunchWeekPrizeSection = dynamic(
() => import('~/components/LaunchWeek/11/LaunchWeekPrizeSection')
)
export default function GAWeekIndex() {
const { query } = useRouter()
const TITLE = 'Supabase GA Week | 15-19 April 2024'
const DESCRIPTION = 'Join us for a week of announcing new features, every day at 7 AM PT.'
const OG_IMAGE = `${SITE_ORIGIN}/images/launchweek/11/lw11-og-ga.png`
const ticketNumber = query.ticketNumber?.toString()
const bgImageId = query.bgImageId?.toString()
const [session, setSession] = useState<Session | null>(null)
const [showCustomizationForm, setShowCustomizationForm] = useState<boolean>(false)
const defaultUserData = {
id: query.id?.toString(),
ticketNumber: ticketNumber ? parseInt(ticketNumber, 10) : undefined,
name: query.name?.toString(),
username: query.username?.toString(),
golden: !!query.golden,
bgImageId: bgImageId ? parseInt(bgImageId, 10) : undefined,
}
const [userData, setUserData] = useState<UserData>(defaultUserData)
const [ticketState, setTicketState] = useState<TicketState>('loading')
useEffect(() => {
if (supabase) {
supabase.auth.getSession().then(({ data: { session } }) => setSession(session))
const {
data: { subscription },
} = supabase.auth.onAuthStateChange((_event, session) => {
setSession(session)
})
return () => subscription.unsubscribe()
}
}, [supabase])
useEffect(() => {
if (session?.user) {
if (userData?.id) {
return setTicketState('ticket')
}
return setTicketState('loading')
}
if (!session) return setTicketState('registration')
}, [session, userData])
return (
<>
<NextSeo
title={TITLE}
description={DESCRIPTION}
openGraph={{
title: TITLE,
description: DESCRIPTION,
url: 'https://supabase.com/ga-week',
images: [
{
url: OG_IMAGE,
},
],
}}
/>
<ConfDataContext.Provider
value={{
supabase,
session,
userData,
setUserData,
ticketState,
setTicketState,
showCustomizationForm,
setShowCustomizationForm,
}}
>
<DefaultLayout className="bg-alternative">
<LW11StickyNav />
<LW11Header className="pb-20 z-0" />
<MainStage className="relative -mt-20 z-10" />
<BuildStage />
<SectionContainer id="meetups" className="scroll-mt-[66px]">
<LW11Meetups meetups={[]} />
</SectionContainer>
<SectionContainer className="lg:pb-40" id="awards">
<LaunchWeekPrizeSection />
</SectionContainer>
</DefaultLayout>
</ConfDataContext.Provider>
</>
)
}