website refactor
This commit is contained in:
@@ -6,6 +6,7 @@ import { ErrorBanner } from '@/ui/ErrorBanner';
|
||||
import { Metadata } from 'next';
|
||||
import { MetadataHelper } from '@/lib/seo/MetadataHelper';
|
||||
import { JsonLd } from '@/ui/JsonLd';
|
||||
import { SessionGateway } from '@/lib/gateways/SessionGateway';
|
||||
|
||||
interface Props {
|
||||
params: Promise<{ id: string }>;
|
||||
@@ -35,6 +36,12 @@ export async function generateMetadata({ params }: Props): Promise<Metadata> {
|
||||
|
||||
export default async function Page({ params }: Props) {
|
||||
const { id } = await params;
|
||||
|
||||
// Get current user session
|
||||
const sessionGateway = new SessionGateway();
|
||||
const session = await sessionGateway.getSession();
|
||||
const currentDriverId = session?.user?.primaryDriverId;
|
||||
|
||||
// Execute the PageQuery
|
||||
const result = await LeagueDetailPageQuery.execute(id);
|
||||
|
||||
@@ -63,6 +70,12 @@ export default async function Page({ params }: Props) {
|
||||
const data = result.unwrap();
|
||||
const league = data.league;
|
||||
|
||||
// Determine if current user is owner or admin
|
||||
const isOwnerOrAdmin = currentDriverId
|
||||
? currentDriverId === league.ownerId ||
|
||||
data.memberships.members?.some(m => m.driverId === currentDriverId && m.role === 'admin')
|
||||
: false;
|
||||
|
||||
// Build ViewData using the builder
|
||||
const viewData = LeagueDetailViewDataBuilder.build({
|
||||
league: data.league,
|
||||
@@ -84,7 +97,7 @@ export default async function Page({ params }: Props) {
|
||||
return (
|
||||
<>
|
||||
<JsonLd data={jsonLd} />
|
||||
<LeagueOverviewTemplate viewData={viewData} />
|
||||
<LeagueOverviewTemplate viewData={viewData} isOwnerOrAdmin={isOwnerOrAdmin} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -21,11 +21,29 @@ export default async function LeagueSchedulePage({ params }: Props) {
|
||||
notFound();
|
||||
}
|
||||
// For serverError, show the template with empty data
|
||||
return <LeagueScheduleTemplate viewData={{
|
||||
leagueId,
|
||||
races: [],
|
||||
}} />;
|
||||
return <LeagueScheduleTemplate
|
||||
viewData={{
|
||||
leagueId,
|
||||
races: [],
|
||||
currentDriverId: undefined,
|
||||
isAdmin: false,
|
||||
}}
|
||||
onRegister={async () => {}}
|
||||
onWithdraw={async () => {}}
|
||||
onEdit={() => {}}
|
||||
onReschedule={() => {}}
|
||||
onResultsClick={() => {}}
|
||||
/>;
|
||||
}
|
||||
|
||||
return <LeagueScheduleTemplate viewData={result.unwrap()} />;
|
||||
const viewData = result.unwrap();
|
||||
|
||||
return <LeagueScheduleTemplate
|
||||
viewData={viewData}
|
||||
onRegister={async () => {}}
|
||||
onWithdraw={async () => {}}
|
||||
onEdit={() => {}}
|
||||
onReschedule={() => {}}
|
||||
onResultsClick={() => {}}
|
||||
/>;
|
||||
}
|
||||
Reference in New Issue
Block a user