feat(mindspace): 全部页面管理、级联删除与页面同步去重

支持全部页面分页/多选/删除/分享,删除时可选移除广场帖并清理工作区附件;修复并发同步重复创建页面,并补齐预览下载链接重写与 iframe 下载权限。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-06-30 01:22:38 +08:00
parent 6e6d00568a
commit ea6c49f046
30 changed files with 2562 additions and 351 deletions
+24 -6
View File
@@ -697,18 +697,36 @@ export async function getMindSpacePageDeletePreview(
return result.data;
}
export async function deleteMindSpacePage(pageId: string): Promise<MindSpacePageDeleteResult> {
export async function deleteMindSpacePage(
pageId: string,
options?: { removeFromPlaza?: boolean },
): Promise<MindSpacePageDeleteResult> {
const params = new URLSearchParams();
if (options?.removeFromPlaza) params.set('remove_from_plaza', 'true');
const query = params.toString() ? `?${params.toString()}` : '';
const result = await apiFetch<{ data: MindSpacePageDeleteResult }>(
`/mindspace/v1/pages/${encodeURIComponent(pageId)}`,
`/mindspace/v1/pages/${encodeURIComponent(pageId)}${query}`,
{ method: 'DELETE' },
);
return result.data;
}
export async function listMindSpacePages(status?: string): Promise<MindSpacePage[]> {
const query = status ? `?status=${encodeURIComponent(status)}` : '';
const result = await apiFetch<{ data: MindSpacePage[] }>(`/mindspace/v1/pages${query}`);
return result.data;
export async function listMindSpacePages(options?: {
status?: string;
limit?: number;
offset?: number;
categoryCode?: string;
}): Promise<{ items: MindSpacePage[]; page: MindSpaceListPage }> {
const params = new URLSearchParams();
if (options?.status) params.set('status', options.status);
if (options?.limit != null) params.set('limit', String(options.limit));
if (options?.offset != null) params.set('offset', String(options.offset));
if (options?.categoryCode) params.set('category_code', options.categoryCode);
const query = params.toString() ? `?${params.toString()}` : '';
const result = await apiFetch<{ data: MindSpacePage[]; page?: MindSpaceListPage }>(
`/mindspace/v1/pages${query}`,
);
return { items: result.data, page: result.page ?? {} };
}
export async function getMindSpacePage(pageId: string): Promise<MindSpacePage> {