22 lines
676 B
TypeScript
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 };
|
|
}
|
|
}
|