120 lines
3.4 KiB
TypeScript
120 lines
3.4 KiB
TypeScript
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewDriverSummaryViewModel extends ViewModel {
|
|
id: string;
|
|
name: string;
|
|
country: string;
|
|
avatarUrl: string;
|
|
iracingId: string | null;
|
|
joinedAt: string;
|
|
rating: number | null;
|
|
globalRank: number | null;
|
|
consistency: number | null;
|
|
bio: string | null;
|
|
totalDrivers: number | null;
|
|
}
|
|
|
|
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewStatsViewModel extends ViewModel {
|
|
totalRaces: number;
|
|
wins: number;
|
|
podiums: number;
|
|
dnfs: number;
|
|
avgFinish: number | null;
|
|
bestFinish: number | null;
|
|
worstFinish: number | null;
|
|
finishRate: number | null;
|
|
winRate: number | null;
|
|
podiumRate: number | null;
|
|
percentile: number | null;
|
|
rating: number | null;
|
|
consistency: number | null;
|
|
overallRank: number | null;
|
|
}
|
|
|
|
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewFinishDistributionViewModel extends ViewModel {
|
|
totalRaces: number;
|
|
wins: number;
|
|
podiums: number;
|
|
topTen: number;
|
|
dnfs: number;
|
|
other: number;
|
|
}
|
|
|
|
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewTeamMembershipViewModel extends ViewModel {
|
|
teamId: string;
|
|
teamName: string;
|
|
teamTag: string | null;
|
|
role: string;
|
|
joinedAt: string;
|
|
isCurrent: boolean;
|
|
}
|
|
|
|
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewSocialFriendSummaryViewModel extends ViewModel {
|
|
id: string;
|
|
name: string;
|
|
country: string;
|
|
avatarUrl: string;
|
|
}
|
|
|
|
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewSocialSummaryViewModel extends ViewModel {
|
|
friendsCount: number;
|
|
friends: ProfileOverviewSocialFriendSummaryViewModel[];
|
|
}
|
|
|
|
export type ProfileOverviewSocialPlatform = 'twitter' | 'youtube' | 'twitch' | 'discord';
|
|
|
|
export type ProfileOverviewAchievementRarity = 'common' | 'rare' | 'epic' | 'legendary';
|
|
|
|
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewAchievementViewModel extends ViewModel {
|
|
id: string;
|
|
title: string;
|
|
description: string;
|
|
icon: 'trophy' | 'medal' | 'star' | 'crown' | 'target' | 'zap';
|
|
rarity: ProfileOverviewAchievementRarity;
|
|
earnedAt: string;
|
|
}
|
|
|
|
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewSocialHandleViewModel extends ViewModel {
|
|
platform: ProfileOverviewSocialPlatform;
|
|
handle: string;
|
|
url: string;
|
|
}
|
|
|
|
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewExtendedProfileViewModel extends ViewModel {
|
|
socialHandles: ProfileOverviewSocialHandleViewModel[];
|
|
achievements: ProfileOverviewAchievementViewModel[];
|
|
racingStyle: string;
|
|
favoriteTrack: string;
|
|
favoriteCar: string;
|
|
timezone: string;
|
|
availableHours: string;
|
|
lookingForTeam: boolean;
|
|
openToRequests: boolean;
|
|
}
|
|
|
|
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
|
|
export interface ProfileOverviewViewModel extends ViewModel {
|
|
currentDriver: ProfileOverviewDriverSummaryViewModel | null;
|
|
stats: ProfileOverviewStatsViewModel | null;
|
|
finishDistribution: ProfileOverviewFinishDistributionViewModel | null;
|
|
teamMemberships: ProfileOverviewTeamMembershipViewModel[];
|
|
socialSummary: ProfileOverviewSocialSummaryViewModel;
|
|
extendedProfile: ProfileOverviewExtendedProfileViewModel | null;
|
|
} |