feat: 维基阅读页补历史与版本对比
Sync source to CNB / Sync Git ref (push) Skipped

- 阅读页新增阅读/历史模式切换
- 历史列表展示修订号、作者、摘要、时间与小修改标记
- 支持查看任意历史修订的渲染内容
- 与当前版本的逐行差异对比,新增/删除行高亮
- 支持撤销到指定修订,带二次确认
- 修复导航栈与修订列表变量重名
- 补充维基历史相关 API:历史列表、修订详情、差异对比、撤销
- 中英文各补 13 个文案
This commit is contained in:
AxTps committed 2026-10-18 15:04:05 +08:00
1 parent aaf394f790
commit a325298eb6
4 files changed
+352 -9

No files matched your search

@@ -2539,3 +2539,69 @@ export function skinSiteWikiAttachment(
export function skinSiteWikiAttachmentUrl(id: number): string {
return `${SKIN_SITE_ORIGIN}${REQUEST_TYPE_PATH.starlight}/wiki/attachment/${id}/content`
}
export interface SkinSiteWikiRevisionInfo {
id: number
authorName: string
summary: string
minor: boolean
createdAt: number
sourceWiki?: string | null
sourceRevisionId?: number | null
}
export interface SkinSiteWikiRevisionPage {
items: SkinSiteWikiRevisionInfo[]
nextCursor?: number | null
}
export interface SkinSiteWikiRevisionDetail {
revision: SkinSiteWikiRevisionInfo
source: string
nodes: SkinSiteWikiNode[]
}
export interface SkinSiteWikiDiffLine {
type: 'UNCHANGED' | 'REMOVED' | 'ADDED'
oldLine?: number | null
newLine?: number | null
text: string
}
export function skinSiteWikiHistory(
title: string,
before?: number,
): Promise<SkinSiteResponse<SkinSiteWikiRevisionPage>> {
const query = new URLSearchParams({ title })
if (before) query.set('before', String(before))
return skinSiteRequest<SkinSiteWikiRevisionPage>('wiki/history?' + query.toString())
}
export function skinSiteWikiRevision(
title: string,
revisionId: number,
): Promise<SkinSiteResponse<SkinSiteWikiRevisionDetail>> {
return skinSiteRequest<SkinSiteWikiRevisionDetail>(
'wiki/revision/' + revisionId + '?title=' + encodeURIComponent(title),
)
}
export function skinSiteWikiDiff(
title: string,
older: number,
newer: number,
): Promise<SkinSiteResponse<SkinSiteWikiDiffLine[]>> {
const query = new URLSearchParams({ title, older: String(older), newer: String(newer) })
return skinSiteRequest<SkinSiteWikiDiffLine[]>('wiki/diff?' + query.toString())
}
export function skinSiteWikiRevert(data: {
title: string
revisionId: number
baseRevisionId: number
}): Promise<SkinSiteResponse<SkinSiteWikiPageDetail>> {
return skinSiteRequest<SkinSiteWikiPageDetail>('wiki/revert', {
method: 'POST',
body: data,
})
}