29 lines
1020 B
TypeScript
29 lines
1020 B
TypeScript
/**
|
|
* Onboarding ViewModel Builder
|
|
*
|
|
* Transforms API DTOs into ViewModels for client-side state management.
|
|
* Deterministic, side-effect free.
|
|
*/
|
|
|
|
import { Result } from '@/lib/contracts/Result';
|
|
import { DomainError } from '@/lib/contracts/services/Service';
|
|
import { OnboardingViewModel } from '@/lib/view-models/OnboardingViewModel';
|
|
|
|
import { ViewModelBuilder } from "../../contracts/builders/ViewModelBuilder";
|
|
|
|
export class OnboardingViewModelBuilder implements ViewModelBuilder<any, any> {
|
|
build(input: any): any {
|
|
return OnboardingViewModelBuilder.build(input);
|
|
}
|
|
|
|
static build(apiDto: { isAlreadyOnboarded: boolean }): Result<OnboardingViewModel, DomainError> {
|
|
try {
|
|
return Result.ok(new OnboardingViewModel({
|
|
isAlreadyOnboarded: apiDto.isAlreadyOnboarded || false,
|
|
}));
|
|
} catch (error) {
|
|
const errorMessage = error instanceof Error ? error.message : 'Failed to build ViewModel';
|
|
return Result.err({ type: 'unknown', message: errorMessage });
|
|
}
|
|
}
|
|
} |