feat: update TeamDetailPage and modularize components
- Changed params in TeamDetailPage to be a Promise, ensuring proper async handling. - Updated data fetching logic to use awaited teamId for better clarity. - Modularized TeamDetailClientWrapper by extracting TeamDetailHeader, TeamMetricsCards, TeamDetailTabs, and TeamMemberModal for improved organization and readability. - Removed unused imports and streamlined the component structure, enhancing maintainability.
This commit is contained in:
@@ -4,12 +4,15 @@ import { AdminService, TeamStats } from "@/services/admin-service";
|
||||
import { TeamDetailClientWrapper } from "@/components/admin";
|
||||
|
||||
interface TeamDetailPageProps {
|
||||
params: {
|
||||
params: Promise<{
|
||||
teamId: string;
|
||||
};
|
||||
}>;
|
||||
}
|
||||
|
||||
export default async function TeamDetailPage({ params }: TeamDetailPageProps) {
|
||||
// Await params before using
|
||||
const { teamId } = await params;
|
||||
|
||||
// Vérifier l'authentification
|
||||
const isAuthenticated = await isUserAuthenticated();
|
||||
|
||||
@@ -21,17 +24,13 @@ export default async function TeamDetailPage({ params }: TeamDetailPageProps) {
|
||||
try {
|
||||
// Charger les données côté serveur
|
||||
const allTeamsStats = await AdminService.getTeamsStats();
|
||||
const foundTeamStats = allTeamsStats.find(
|
||||
(t) => t.teamId === params.teamId
|
||||
);
|
||||
const foundTeamStats = allTeamsStats.find((t) => t.teamId === teamId);
|
||||
|
||||
if (!foundTeamStats) {
|
||||
redirect("/admin");
|
||||
}
|
||||
|
||||
return (
|
||||
<TeamDetailClientWrapper team={foundTeamStats} teamId={params.teamId} />
|
||||
);
|
||||
return <TeamDetailClientWrapper team={foundTeamStats} teamId={teamId} />;
|
||||
} catch (error) {
|
||||
console.error("Failed to load team data:", error);
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user