view data fixes
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
'use client';
|
||||
|
||||
import type { DashboardOverviewDTO } from '@/lib/types/generated/DashboardOverviewDTO';
|
||||
import type { DashboardViewData } from '@/lib/view-data/DashboardViewData';
|
||||
import { DashboardDateDisplay } from '@/lib/display-objects/DashboardDateDisplay';
|
||||
@@ -6,24 +8,10 @@ import { DashboardRankDisplay } from '@/lib/display-objects/DashboardRankDisplay
|
||||
import { DashboardConsistencyDisplay } from '@/lib/display-objects/DashboardConsistencyDisplay';
|
||||
import { DashboardCountDisplay } from '@/lib/display-objects/DashboardCountDisplay';
|
||||
import { DashboardLeaguePositionDisplay } from '@/lib/display-objects/DashboardLeaguePositionDisplay';
|
||||
import { ViewData } from '@/lib/contracts/view-data/ViewData';
|
||||
import { number } from 'zod';
|
||||
import type { ViewDataBuilder } from '@/lib/contracts/builders/ViewDataBuilder';
|
||||
|
||||
/**
|
||||
* DashboardViewDataBuilder
|
||||
*
|
||||
* Transforms DashboardOverviewDTO (API DTO) into DashboardViewData for server-side rendering.
|
||||
* Deterministic; side-effect free; no HTTP calls.
|
||||
*/
|
||||
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
|
||||
|
||||
export class DashboardViewDataBuilder implements ViewDataBuilder<any, any> {
|
||||
build(input: any): any {
|
||||
return DashboardViewDataBuilder.build(input);
|
||||
}
|
||||
|
||||
static build(
|
||||
static build(apiDto: DashboardOverviewDTO): DashboardViewData {
|
||||
export class DashboardViewDataBuilder {
|
||||
public static build(apiDto: DashboardOverviewDTO): DashboardViewData {
|
||||
return {
|
||||
currentDriver: {
|
||||
name: apiDto.currentDriver?.name || '',
|
||||
@@ -49,11 +37,11 @@ export class DashboardViewDataBuilder implements ViewDataBuilder<any, any> {
|
||||
id: item.id,
|
||||
type: item.type,
|
||||
headline: item.headline,
|
||||
body: item.body,
|
||||
body: item.body ?? undefined,
|
||||
timestamp: item.timestamp,
|
||||
formattedTime: DashboardDateDisplay.format(new Date(item.timestamp)).relative,
|
||||
ctaHref: item.ctaHref,
|
||||
ctaLabel: item.ctaLabel,
|
||||
ctaHref: item.ctaHref ?? undefined,
|
||||
ctaLabel: item.ctaLabel ?? undefined,
|
||||
})),
|
||||
friends: apiDto.friends.map((friend) => ({
|
||||
id: friend.id,
|
||||
@@ -97,4 +85,6 @@ export class DashboardViewDataBuilder implements ViewDataBuilder<any, any> {
|
||||
isMyLeague: race.isMyLeague,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DashboardViewDataBuilder satisfies ViewDataBuilder<DashboardOverviewDTO, DashboardViewData>;
|
||||
|
||||
Reference in New Issue
Block a user