feat: 主页改为原生皮肤站界面
Sync source to CNB / Sync Git ref (push) Skipped

主页原先内嵌整个皮肤站网页,现在换成启动器自己的界面,数据全部走
接口:

- SkinSiteAccountCard:登录状态、玩家列表(头像由皮肤裁剪生成)、
  每日运势。
- SkinSiteNavCards:资源下载、玩家审核、Wiki、漏洞追踪、地图、个人
  资料的入口,点击后用系统浏览器打开。
- SkinSiteAnnouncements:拉取公告并按重要度与时间排序。
- SkinSiteDonationCard:捐款累计金额与人数。
- SkinSiteHome:把以上拼装成主页,并显示可复制的接入地址。
- API 层补充捐款与公告接口。

Index.vue 的 iframe 换成 SkinSiteHome。
This commit is contained in:
AxTps committed 2026-10-17 19:11:04 +08:00
1 parent bf175160b0
commit 8599a014ad
7 files changed
+546 -2

No files matched your search

@@ -382,3 +382,52 @@ export function skinSitePasswordReset(payload: {
auth: false,
})
}
// ---------------------------------------------------------------------------
// Donations & announcements
// ---------------------------------------------------------------------------
export interface SkinSiteDonationSummary {
totalAmount: string
donorCount: number
}
export interface SkinSiteDonationEntry {
id: number
rank: number
username: string
avatar: string | null
amount: string
}
export interface SkinSiteDonationPage {
items: SkinSiteDonationEntry[]
summary: SkinSiteDonationSummary
hasMore: boolean
}
export function skinSiteDonationSummary(): Promise<SkinSiteResponse<SkinSiteDonationSummary>> {
return skinSiteRequest<SkinSiteDonationSummary>('donation/summary', { auth: false })
}
export function skinSiteDonationList(offset = 0): Promise<SkinSiteResponse<SkinSiteDonationPage>> {
return skinSiteRequest<SkinSiteDonationPage>(`donation/list?limit=20&offset=${offset}`, {
auth: false,
})
}
export interface SkinSiteAnnouncement {
id: number
title: string
subtitle: string
imageName?: string
content: string
updateAt: number
star: boolean
importantLevel: number
source: string
}
/** Public announcements shown on the skin site. Requires the JWT when signed in. */
export function skinSiteAnnouncements(): Promise<SkinSiteResponse<SkinSiteAnnouncement[]>> {
return skinSiteRequest<SkinSiteAnnouncement[]>('broadcast/all', { type: 'skin' })
}