import type { CreateLeagueViewData } from '../view-data/CreateLeagueViewData'; import { ViewModel } from "../contracts/view-models/ViewModel"; import { LeagueCreationStatusDisplay } from '../display-objects/LeagueCreationStatusDisplay'; /** * View Model for Create League Result * * Represents the result of creating a league in a UI-ready format. * Composes Display Objects and transforms ViewData for UI consumption. */ export class CreateLeagueViewModel extends ViewModel { readonly leagueId: string; readonly success: boolean; // UI-specific derived fields (primitive outputs only) readonly successMessage: string; constructor(viewData: CreateLeagueViewData) { super(); this.leagueId = viewData.leagueId; this.success = viewData.success; // Derive UI-specific fields using Display Object this.successMessage = LeagueCreationStatusDisplay.statusMessage(this.success); } /** UI-specific: Whether league creation was successful */ get isSuccessful(): boolean { return this.success; } }