Initial VTuber Awards implementation
This commit is contained in:
@@ -0,0 +1,202 @@
|
||||
export interface TimelineItem {
|
||||
key: string
|
||||
title: string
|
||||
startsAt: string
|
||||
endsAt: string
|
||||
state: 'done' | 'active' | 'upcoming'
|
||||
}
|
||||
|
||||
export interface FeaturedCategory {
|
||||
id: number
|
||||
groupName: string
|
||||
name: string
|
||||
description: string
|
||||
maxNomineesPerUser: number
|
||||
}
|
||||
|
||||
export interface WinnerPreview {
|
||||
year: number
|
||||
category: string
|
||||
winnerName: string
|
||||
winnerSlug: string
|
||||
}
|
||||
|
||||
export interface FaqItem {
|
||||
question: string
|
||||
answer: string
|
||||
}
|
||||
|
||||
export interface OverviewResponse {
|
||||
seasonId: number
|
||||
year: number
|
||||
title: string
|
||||
showDate: string
|
||||
currentPhase: string
|
||||
isCommunityOnly: boolean
|
||||
loginProvider: string
|
||||
timeline: TimelineItem[]
|
||||
featuredCategories: FeaturedCategory[]
|
||||
winnersPreview: WinnerPreview[]
|
||||
faq: FaqItem[]
|
||||
}
|
||||
|
||||
export interface CandidateSummary {
|
||||
id: number
|
||||
displayName: string
|
||||
channelSlug: string
|
||||
platform: string
|
||||
}
|
||||
|
||||
export interface PublicCategoryDetail {
|
||||
id: number
|
||||
name: string
|
||||
groupName: string
|
||||
description: string
|
||||
maxNomineesPerUser: number
|
||||
candidates: CandidateSummary[]
|
||||
}
|
||||
|
||||
export interface SeasonCategoriesResponse {
|
||||
seasonId: number
|
||||
year: number
|
||||
categories: PublicCategoryDetail[]
|
||||
}
|
||||
|
||||
export interface WinnerArchiveItem {
|
||||
category: string
|
||||
winnerName: string
|
||||
winnerSlug: string
|
||||
}
|
||||
|
||||
export interface WinnerArchiveResponse {
|
||||
year: number
|
||||
items: WinnerArchiveItem[]
|
||||
}
|
||||
|
||||
export interface AdminMetric {
|
||||
label: string
|
||||
value: number
|
||||
note: string
|
||||
}
|
||||
|
||||
export interface AdminActivity {
|
||||
label: string
|
||||
age: string
|
||||
}
|
||||
|
||||
export interface AdminTopCategory {
|
||||
category: string
|
||||
votes: number
|
||||
}
|
||||
|
||||
export interface AdminDashboardResponse {
|
||||
metrics: AdminMetric[]
|
||||
activities: AdminActivity[]
|
||||
topCategories: AdminTopCategory[]
|
||||
}
|
||||
|
||||
export interface AdminSeasonListItem {
|
||||
id: number
|
||||
year: number
|
||||
name: string
|
||||
currentPhase: string
|
||||
isCurrent: boolean
|
||||
categoryCount: number
|
||||
}
|
||||
|
||||
export interface AdminCategoryItem {
|
||||
id: number
|
||||
groupName: string
|
||||
name: string
|
||||
slug: string
|
||||
description: string
|
||||
sortOrder: number
|
||||
maxNomineesPerUser: number
|
||||
candidateCount: number
|
||||
}
|
||||
|
||||
export interface AdminCandidateItem {
|
||||
id: number
|
||||
categoryId: number
|
||||
displayName: string
|
||||
channelSlug: string
|
||||
platform: string
|
||||
}
|
||||
|
||||
export interface AdminNominationReviewItem {
|
||||
id: number
|
||||
categoryId: number
|
||||
categoryName: string
|
||||
submittedByTwitchId: string
|
||||
candidateText: string
|
||||
createdAt: string
|
||||
}
|
||||
|
||||
export interface AdminSeasonDetailResponse {
|
||||
id: number
|
||||
year: number
|
||||
name: string
|
||||
currentPhase: string
|
||||
isCurrent: boolean
|
||||
categories: AdminCategoryItem[]
|
||||
candidates: AdminCandidateItem[]
|
||||
pendingNominations: AdminNominationReviewItem[]
|
||||
}
|
||||
|
||||
export interface CreateNominationPayload {
|
||||
year: number
|
||||
categoryId: number
|
||||
twitchUserId: string
|
||||
nominees: string[]
|
||||
}
|
||||
|
||||
export interface VoteEntryPayload {
|
||||
categoryId: number
|
||||
candidateId: number
|
||||
}
|
||||
|
||||
export interface CreateVotePayload {
|
||||
seasonId: number
|
||||
twitchUserId: string
|
||||
entries: VoteEntryPayload[]
|
||||
}
|
||||
|
||||
export interface UpdateSeasonPayload {
|
||||
currentPhase: string
|
||||
isCurrent: boolean
|
||||
}
|
||||
|
||||
export interface UpsertCategoryPayload {
|
||||
groupName: string
|
||||
name: string
|
||||
slug: string
|
||||
description: string
|
||||
sortOrder: number
|
||||
maxNomineesPerUser: number
|
||||
}
|
||||
|
||||
export interface UpsertCandidatePayload {
|
||||
categoryId: number
|
||||
displayName: string
|
||||
channelSlug: string
|
||||
platform: string
|
||||
}
|
||||
|
||||
export interface ApproveNominationPayload {
|
||||
displayName: string
|
||||
channelSlug: string
|
||||
platform: string
|
||||
}
|
||||
|
||||
export interface AuthSession {
|
||||
sessionToken: string
|
||||
twitchUserId: string
|
||||
displayName: string
|
||||
role: 'viewer' | 'admin'
|
||||
}
|
||||
|
||||
export interface LoginPayload {
|
||||
twitchUserId: string
|
||||
displayName: string
|
||||
role: 'viewer' | 'admin'
|
||||
}
|
||||
Reference in New Issue
Block a user