view data fixes
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 5m54s
Contract Testing / contract-snapshot (pull_request) Has been skipped

This commit is contained in:
2026-01-23 13:04:05 +01:00
parent d97f50ed72
commit e22033be38
24 changed files with 605 additions and 455 deletions

View File

@@ -1,27 +1,32 @@
import { LeagueCardViewModel } from './LeagueCardViewModel';
import { TeamCardViewModel } from './TeamCardViewModel';
import { UpcomingRaceCardViewModel } from './UpcomingRaceCardViewModel';
interface HomeDiscoveryDTO {
topLeagues: LeagueCardViewModel[];
teams: TeamCardViewModel[];
upcomingRaces: UpcomingRaceCardViewModel[];
}
import type { HomeDiscoveryViewData } from '@/lib/view-data/HomeDiscoveryViewData';
/**
* Home discovery view model
* Aggregates discovery data for the landing page.
*/
import { ViewModel } from "../contracts/view-models/ViewModel";
import { ViewModel } from '../contracts/view-models/ViewModel';
export class HomeDiscoveryViewModel extends ViewModel {
readonly topLeagues: LeagueCardViewModel[];
readonly teams: TeamCardViewModel[];
readonly upcomingRaces: UpcomingRaceCardViewModel[];
readonly topLeagues: HomeDiscoveryViewData['topLeagues'];
readonly teams: HomeDiscoveryViewData['teams'];
readonly upcomingRaces: HomeDiscoveryViewData['upcomingRaces'];
constructor(dto: HomeDiscoveryDTO) {
this.topLeagues = dto.topLeagues;
this.teams = dto.teams;
this.upcomingRaces = dto.upcomingRaces;
constructor(viewData: HomeDiscoveryViewData) {
super();
this.topLeagues = viewData.topLeagues;
this.teams = viewData.teams;
this.upcomingRaces = viewData.upcomingRaces;
}
get hasTopLeagues(): boolean {
return this.topLeagues.length > 0;
}
get hasTeams(): boolean {
return this.teams.length > 0;
}
get hasUpcomingRaces(): boolean {
return this.upcomingRaces.length > 0;
}
}