Files
gridpilot.gg/apps/website/lib/view-models/DriverTeamViewModel.ts
Marc Mintel e22033be38
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 5m54s
Contract Testing / contract-snapshot (pull_request) Has been skipped
view data fixes
2026-01-23 13:04:05 +01:00

44 lines
968 B
TypeScript

/**
* View Model for Driver's Team
*
* Client-only UI helper built from ViewData.
*/
import { ProfileDisplay } from "../display-objects/ProfileDisplay";
import { ViewModel } from "../contracts/view-models/ViewModel";
import type { TeamDetailData } from "../view-data/TeamDetailViewData";
export class DriverTeamViewModel extends ViewModel {
constructor(private readonly viewData: TeamDetailData) {
super();
}
get teamId(): string {
return this.viewData.id;
}
get teamName(): string {
return this.viewData.name;
}
get tag(): string {
return this.viewData.tag;
}
get role(): string {
return this.viewData.membership?.role ?? "member";
}
get canManage(): boolean {
return this.viewData.canManage;
}
get isOwner(): boolean {
return this.viewData.membership?.role === "owner";
}
/** UI-specific: Display role */
get displayRole(): string {
return ProfileDisplay.getTeamRole(this.role).text;
}
}