( name?: string, afterItemId?: string, inFolderId?: string )
| 91 | |
| 92 | // 创建新页面 |
| 93 | export async function createPage( |
| 94 | name?: string, |
| 95 | afterItemId?: string, |
| 96 | inFolderId?: string |
| 97 | ): Promise<PageRecord> { |
| 98 | const { page, folder } = stores |
| 99 | |
| 100 | let parentFolderId: string | undefined |
| 101 | let order: number |
| 102 | |
| 103 | if (inFolderId) { |
| 104 | // 直接在指定文件夹中创建 |
| 105 | parentFolderId = inFolderId |
| 106 | const itemsInFolder = [...page.findByFolderId(inFolderId), ...folder.findByParentId(inFolderId)] |
| 107 | order = itemsInFolder.length > 0 ? Math.max(...itemsInFolder.map((i) => i.order ?? 0)) + 1 : 0 |
| 108 | } else { |
| 109 | const position = await prepareInsertPosition(afterItemId) |
| 110 | parentFolderId = position.parentFolderId |
| 111 | order = position.order |
| 112 | } |
| 113 | |
| 114 | // Generate unique name among sibling pages |
| 115 | const baseName = name || '新对话' |
| 116 | const siblingPages = page.findByFolderId(parentFolderId) |
| 117 | const existingNames = siblingPages.map((p) => p.name) |
| 118 | const uniqueName = generateUniqueName(baseName, existingNames) |
| 119 | |
| 120 | return page.create({ |
| 121 | name: uniqueName, |
| 122 | parentFolderId, |
| 123 | order |
| 124 | }) |
| 125 | } |
| 126 | |
| 127 | // 更新页面 |
| 128 | export async function updatePage(id: string, updates: Partial<PageRecord>): Promise<void> { |
no test coverage detected