import { AvatarViewData } from "@/lib/view-data/AvatarViewData"; import { ViewModel } from "../contracts/view-models/ViewModel"; import { AvatarFormatter } from "../formatters/AvatarFormatter"; /** * Avatar View Model * * Represents avatar information for the UI layer. * Transforms AvatarViewData into UI-ready state with formatting and derived fields. */ export class AvatarViewModel extends ViewModel { private readonly data: AvatarViewData; constructor(data: AvatarViewData) { super(); this.data = data; } /** UI-specific: Buffer is already base64 encoded in ViewData */ get bufferBase64(): string { return this.data.buffer; } /** UI-specific: Derive content type label using Display Object */ get contentTypeLabel(): string { return AvatarFormatter.formatContentType(this.data.contentType); } /** UI-specific: Derive validity check using Display Object */ get hasValidData(): boolean { return AvatarFormatter.hasValidData(this.data.buffer, this.data.contentType); } }