Files
gridpilot.gg/apps/website/lib/presenters/TeamsPresenter.ts
2026-01-12 01:01:49 +01:00

22 lines
676 B
TypeScript

import type { TeamsPageDto } from '@/lib/page-queries/TeamsPageQuery';
import type { TeamsViewData, TeamSummaryData } from '@/templates/TeamsViewData';
/**
* TeamsPresenter - Client-side presenter for teams page
* Transforms PageQuery DTO into ViewData for the template
* Deterministic; no hooks; no side effects
*/
export class TeamsPresenter {
static createViewData(pageDto: TeamsPageDto): TeamsViewData {
const teams = pageDto.teams.map((team): TeamSummaryData => ({
teamId: team.id,
teamName: team.name,
leagueName: team.leagues[0] || '',
memberCount: team.memberCount,
logoUrl: team.logoUrl,
}));
return { teams };
}
}