Refactor admin panel into categorized navigation

This commit is contained in:
AzuTear
2026-06-17 12:37:17 +02:00
parent 92dd6f7432
commit 953257bcef
11 changed files with 901 additions and 660 deletions
+19 -1
View File
@@ -208,6 +208,7 @@ export const useAwardsStore = defineStore('awards', {
admin: fallbackAdmin as AdminDashboardResponse,
adminSeasons: fallbackAdminSeasons as AdminSeasonListItem[],
adminSeasonDetail: fallbackAdminSeasonDetail as AdminSeasonDetailResponse,
adminSelectedSeasonId: fallbackAdminSeasonDetail.id as number | null,
loading: false,
apiMode: 'fallback' as 'api' | 'fallback',
}),
@@ -237,22 +238,39 @@ export const useAwardsStore = defineStore('awards', {
try {
this.admin = await api.getAdminDashboard()
this.adminSeasons = await api.getAdminSeasons()
this.adminSeasonDetail = await api.getAdminSeasonDetail(this.adminSeasons[0]?.id ?? 1)
if (!this.adminSelectedSeasonId || !this.adminSeasons.some((season) => season.id === this.adminSelectedSeasonId)) {
this.adminSelectedSeasonId = this.adminSeasons[0]?.id ?? null
}
if (this.adminSelectedSeasonId) {
this.adminSeasonDetail = await api.getAdminSeasonDetail(this.adminSelectedSeasonId)
}
this.apiMode = 'api'
} catch {
this.admin = emptyAdmin
this.adminSeasons = emptyAdminSeasons
this.adminSeasonDetail = emptyAdminSeasonDetail
this.adminSelectedSeasonId = null
}
},
async loadAdminSeasonDetail(seasonId: number) {
try {
this.adminSelectedSeasonId = seasonId
this.adminSeasonDetail = await api.getAdminSeasonDetail(seasonId)
this.apiMode = 'api'
} catch {
this.adminSeasonDetail = emptyAdminSeasonDetail
}
},
async initializeAdminWorkspace() {
await this.loadAdmin()
if (this.adminSelectedSeasonId && this.adminSeasonDetail.id !== this.adminSelectedSeasonId) {
await this.loadAdminSeasonDetail(this.adminSelectedSeasonId)
}
},
setAdminSeason(seasonId: number) {
this.adminSelectedSeasonId = seasonId
},
submitNomination(payload: CreateNominationPayload) {
return api.submitNomination(payload)
},