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:
Julien Froidefond
2025-08-21 14:42:38 +02:00
parent 747b0189a6
commit 2faa998cbe
11 changed files with 1266 additions and 1023 deletions

View File

@@ -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 (