feat: 维基页支持搜索、最近更新与分类浏览
Sync source to CNB / Sync Git ref (push) Skipped

This commit is contained in:
AxTps committed 2026-10-18 15:32:06 +08:00
1 parent a325298eb6
commit 1a4fd54b68
5 files changed
+342 -2

No files matched your search

@@ -2605,3 +2605,80 @@ export function skinSiteWikiRevert(data: {
body: data,
})
}
// ─── Wiki: 搜索 / 列表 / 最近 / 分类 ───────────────────────────────────────
export interface SkinSiteWikiPageSummary {
title: string
updatedAt: number
authorName: string
readPolicy: SkinSiteWikiReadPolicy
editPolicy: SkinSiteWikiEditPolicy
redirectTarget?: string | null
}
export interface SkinSiteWikiPageListItem {
id: number
title: string
namespace: string
revisionId: number
updatedAt: number
authorName: string
readPolicy: SkinSiteWikiReadPolicy
editPolicy: SkinSiteWikiEditPolicy
redirectTarget?: string | null
}
export interface SkinSiteWikiPageList {
items: SkinSiteWikiPageListItem[]
nextCursor?: string | null
}
export interface SkinSiteWikiSearchPage {
items: SkinSiteWikiPageSummary[]
nextCursor?: number | null
}
export function skinSiteWikiSearch(
query: string,
): Promise<SkinSiteResponse<SkinSiteWikiPageSummary[]>> {
const q = query.trim()
if (!q) {
return Promise.resolve({
success: true,
payload: [],
timestamp: Date.now(),
} as SkinSiteResponse<SkinSiteWikiPageSummary[]>)
}
return skinSiteRequest<SkinSiteWikiPageSummary[]>('wiki/search?q=' + encodeURIComponent(q))
}
export function skinSiteWikiPages(
params: {
prefix?: string
namespace?: string
limit?: number
cursor?: string
} = {},
): Promise<SkinSiteResponse<SkinSiteWikiPageList>> {
const query = new URLSearchParams()
if (params.prefix) query.set('prefix', params.prefix)
if (params.namespace != null) query.set('namespace', params.namespace)
if (params.limit != null) query.set('limit', String(params.limit))
if (params.cursor) query.set('cursor', params.cursor)
return skinSiteRequest<SkinSiteWikiPageList>('wiki/pages?' + query.toString())
}
export function skinSiteWikiRecent(before?: number): Promise<SkinSiteResponse<SkinSiteWikiSearchPage>> {
const query = new URLSearchParams()
if (before != null) query.set('before', String(before))
return skinSiteRequest<SkinSiteWikiSearchPage>('wiki/recent?' + query.toString())
}
export function skinSiteWikiCategory(
name: string,
before?: number,
): Promise<SkinSiteResponse<SkinSiteWikiSearchPage>> {
const query = new URLSearchParams({ name })
if (before != null) query.set('before', String(before))
return skinSiteRequest<SkinSiteWikiSearchPage>('wiki/category?' + query.toString())
}