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

This commit is contained in:
2026-01-23 11:59:49 +01:00
parent ae58839eb2
commit d97f50ed72
191 changed files with 2889 additions and 1019 deletions

View File

@@ -21,7 +21,14 @@ import type {
* Transforms GetDriverProfileOutputDTO into DriverProfileViewModel.
* Deterministic, side-effect free, no HTTP calls.
*/
export class DriverProfileViewModelBuilder {
import { ViewModelBuilder } from "../../contracts/builders/ViewModelBuilder";
export class DriverProfileViewModelBuilder implements ViewModelBuilder<any, any> {
build(input: any): any {
return DriverProfileViewModelBuilder.build(input);
}
static build(
/**
* Build ViewModel from API DTO
*

View File

@@ -7,7 +7,14 @@ import { DriverLeaderboardViewModel } from '@/lib/view-models/DriverLeaderboardV
* Transforms DriversLeaderboardDTO into DriverLeaderboardViewModel.
* Deterministic, side-effect free, no HTTP calls.
*/
export class DriversViewModelBuilder {
import { ViewModelBuilder } from "../../contracts/builders/ViewModelBuilder";
export class DriversViewModelBuilder implements ViewModelBuilder<any, any> {
build(input: any): any {
return DriversViewModelBuilder.build(input);
}
static build(
static build(apiDto: DriversLeaderboardDTO): DriverLeaderboardViewModel {
return new DriverLeaderboardViewModel({
drivers: apiDto.drivers,

View File

@@ -5,10 +5,16 @@
* Deterministic, side-effect free, no business logic.
*/
import { ForgotPasswordViewData } from '@/lib/builders/view-data/types/ForgotPasswordViewData';
import { ForgotPasswordViewModel, ForgotPasswordFormState } from '@/lib/view-models/auth/ForgotPasswordViewModel';
import { ForgotPasswordViewData } from '@/lib/view-data/ForgotPasswordViewData';
import { ForgotPasswordFormState, ForgotPasswordViewModel } from '@/lib/view-models/auth/ForgotPasswordViewModel';
import { ViewModelBuilder } from "../../contracts/builders/ViewModelBuilder";
export class ForgotPasswordViewModelBuilder implements ViewModelBuilder<any, any> {
build(input: any): any {
return ForgotPasswordViewModelBuilder.build(input);
}
export class ForgotPasswordViewModelBuilder {
static build(viewData: ForgotPasswordViewData): ForgotPasswordViewModel {
const formState: ForgotPasswordFormState = {
fields: {

View File

@@ -1,7 +1,13 @@
import { LeagueSummaryViewModel } from '@/lib/view-models/LeagueSummaryViewModel';
import { LeaguesViewData } from '@/lib/view-data/LeaguesViewData';
export class LeagueSummaryViewModelBuilder {
import { ViewModelBuilder } from "../../contracts/builders/ViewModelBuilder";
export class LeagueSummaryViewModelBuilder implements ViewModelBuilder<any, any> {
build(input: any): any {
return LeagueSummaryViewModelBuilder.build(input);
}
static build(league: LeaguesViewData['leagues'][number]): LeagueSummaryViewModel {
return {
id: league.id,

View File

@@ -5,10 +5,16 @@
* Deterministic, side-effect free, no business logic.
*/
import { LoginViewData } from '@/lib/builders/view-data/types/LoginViewData';
import { LoginViewModel, LoginFormState, LoginUIState } from '@/lib/view-models/auth/LoginViewModel';
import { LoginViewData } from '@/lib/view-data/LoginViewData';
import { LoginFormState, LoginUIState, LoginViewModel } from '@/lib/view-models/auth/LoginViewModel';
import { ViewModelBuilder } from "../../contracts/builders/ViewModelBuilder";
export class LoginViewModelBuilder implements ViewModelBuilder<any, any> {
build(input: any): any {
return LoginViewModelBuilder.build(input);
}
export class LoginViewModelBuilder {
static build(viewData: LoginViewData): LoginViewModel {
const formState: LoginFormState = {
fields: {

View File

@@ -9,7 +9,14 @@ import { Result } from '@/lib/contracts/Result';
import { DomainError } from '@/lib/contracts/services/Service';
import { OnboardingViewModel } from '@/lib/view-models/OnboardingViewModel';
export class OnboardingViewModelBuilder {
import { ViewModelBuilder } from "../../contracts/builders/ViewModelBuilder";
export class OnboardingViewModelBuilder implements ViewModelBuilder<any, any> {
build(input: any): any {
return OnboardingViewModelBuilder.build(input);
}
static build(
static build(apiDto: { isAlreadyOnboarded: boolean }): Result<OnboardingViewModel, DomainError> {
try {
return Result.ok({

View File

@@ -5,10 +5,17 @@
* Deterministic, side-effect free, no business logic.
*/
import { ResetPasswordViewData } from '@/lib/builders/view-data/types/ResetPasswordViewData';
import { ResetPasswordViewModel, ResetPasswordFormState, ResetPasswordUIState } from '@/lib/view-models/auth/ResetPasswordViewModel';
import { ResetPasswordViewData } from '@/lib/view-data/ResetPasswordViewData';
import { ResetPasswordFormState, ResetPasswordUIState, ResetPasswordViewModel } from '@/lib/view-models/auth/ResetPasswordViewModel';
export class ResetPasswordViewModelBuilder {
import { ViewModelBuilder } from "../../contracts/builders/ViewModelBuilder";
export class ResetPasswordViewModelBuilder implements ViewModelBuilder<any, any> {
build(input: any): any {
return ResetPasswordViewModelBuilder.build(input);
}
static build(
static build(viewData: ResetPasswordViewData): ResetPasswordViewModel {
const formState: ResetPasswordFormState = {
fields: {

View File

@@ -5,10 +5,17 @@
* Deterministic, side-effect free, no business logic.
*/
import { SignupViewData } from '@/lib/builders/view-data/types/SignupViewData';
import { SignupViewModel, SignupFormState, SignupUIState } from '@/lib/view-models/auth/SignupViewModel';
import { SignupViewData } from '@/lib/view-data/SignupViewData';
import { SignupFormState, SignupUIState, SignupViewModel } from '@/lib/view-models/auth/SignupViewModel';
export class SignupViewModelBuilder {
import { ViewModelBuilder } from "../../contracts/builders/ViewModelBuilder";
export class SignupViewModelBuilder implements ViewModelBuilder<any, any> {
build(input: any): any {
return SignupViewModelBuilder.build(input);
}
static build(
static build(viewData: SignupViewData): SignupViewModel {
const formState: SignupFormState = {
fields: {