update latest
This commit is contained in:
@ -1,80 +1,95 @@
|
|||||||
// app/faculty/[id]/page.tsx
|
// src/app/faculty/[id]/page.tsx
|
||||||
|
|
||||||
import Header from "../../../components/Layouts/Header";
|
import Header from "../../../components/Layouts/Header";
|
||||||
import { Footer } from "../../../components/Layouts/Footer";
|
import { Footer } from "../../../components/Layouts/Footer";
|
||||||
import TeamMemberDetail from "../../../components/faculty/TeamMemberDetail";
|
import TeamMemberDetail from "../../../components/faculty/TeamMemberDetail";
|
||||||
import { notFound } from 'next/navigation';
|
import { notFound } from "next/navigation";
|
||||||
import { FacultyService } from '../../../lib/facultyData';
|
import { FacultyService } from "../../../lib/facultyData";
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from "next";
|
||||||
|
|
||||||
// Force dynamic rendering - skip static generation entirely
|
// Force dynamic rendering (OK to keep)
|
||||||
export const dynamic = 'force-dynamic';
|
export const dynamic = "force-dynamic";
|
||||||
export const dynamicParams = true;
|
export const dynamicParams = true;
|
||||||
|
|
||||||
export default async function FacultyPage({
|
type PageProps = {
|
||||||
params,
|
params: {
|
||||||
}: {
|
id: string;
|
||||||
params: Promise<{ id: string }>;
|
};
|
||||||
}) {
|
};
|
||||||
const { id } = await params;
|
|
||||||
const memberId = parseInt(id);
|
|
||||||
|
|
||||||
if (isNaN(memberId)) {
|
export default async function FacultyPage({ params }: PageProps) {
|
||||||
|
const memberId = Number(params.id);
|
||||||
|
|
||||||
|
// Guard against invalid IDs
|
||||||
|
if (!Number.isInteger(memberId)) {
|
||||||
notFound();
|
notFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let memberData;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const memberData = await FacultyService.getFacultyById(memberId);
|
memberData = await FacultyService.getFacultyById(memberId);
|
||||||
|
} catch (err) {
|
||||||
if (!memberData) {
|
console.error("Error loading faculty member:", err);
|
||||||
notFound();
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<Header />
|
|
||||||
<TeamMemberDetail memberId={memberId} memberData={memberData} />
|
|
||||||
<Footer />
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Error loading faculty member:', error);
|
|
||||||
notFound();
|
notFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!memberData) {
|
||||||
|
notFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Header />
|
||||||
|
<TeamMemberDetail
|
||||||
|
memberId={memberId}
|
||||||
|
memberData={memberData}
|
||||||
|
/>
|
||||||
|
<Footer />
|
||||||
|
</>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// REMOVE generateStaticParams completely - don't include it at all
|
// --------------------
|
||||||
|
// Metadata generation
|
||||||
|
// --------------------
|
||||||
|
export async function generateMetadata(
|
||||||
|
{ params }: PageProps
|
||||||
|
): Promise<Metadata> {
|
||||||
|
const memberId = Number(params.id);
|
||||||
|
|
||||||
// Generate metadata
|
if (!Number.isInteger(memberId)) {
|
||||||
export async function generateMetadata({
|
return {
|
||||||
params,
|
title: "Faculty Member Not Found - CMC Vellore",
|
||||||
}: {
|
};
|
||||||
params: Promise<{ id: string }>;
|
|
||||||
}): Promise<Metadata> {
|
|
||||||
const { id } = await params;
|
|
||||||
const memberId = parseInt(id);
|
|
||||||
|
|
||||||
if (isNaN(memberId)) {
|
|
||||||
return { title: 'Faculty Member Not Found - CMC Vellore' };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const memberData = await FacultyService.getFacultyById(memberId);
|
const memberData = await FacultyService.getFacultyById(memberId);
|
||||||
|
|
||||||
if (!memberData) {
|
if (!memberData) {
|
||||||
return { title: 'Faculty Member Not Found - CMC Vellore' };
|
return {
|
||||||
|
title: "Faculty Member Not Found - CMC Vellore",
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
title: `${memberData.name} - ${memberData.designation} | CMC Vellore`,
|
title: `${memberData.name} - ${memberData.designation} | CMC Vellore`,
|
||||||
description: memberData.description || `${memberData.name} faculty profile at CMC Vellore`,
|
description:
|
||||||
|
memberData.description ??
|
||||||
|
`${memberData.name} faculty profile at CMC Vellore`,
|
||||||
openGraph: {
|
openGraph: {
|
||||||
title: `${memberData.name} - ${memberData.designation}`,
|
title: `${memberData.name} - ${memberData.designation}`,
|
||||||
description: memberData.description || `${memberData.name} faculty profile`,
|
description:
|
||||||
|
memberData.description ??
|
||||||
|
`${memberData.name} faculty profile`,
|
||||||
images: memberData.image ? [memberData.image] : [],
|
images: memberData.image ? [memberData.image] : [],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (err) {
|
||||||
console.error('Error generating metadata:', error);
|
console.error("Error generating metadata:", err);
|
||||||
return { title: 'Faculty Member - CMC Vellore' };
|
return {
|
||||||
|
title: "Faculty Member - CMC Vellore",
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user