(id: string)
| 292 | |
| 293 | // 删除文件夹及其全部子项(包括嵌套的页面和子文件夹) |
| 294 | export async function deleteFolder(id: string): Promise<void> { |
| 295 | const { page, folder, message, tab } = stores |
| 296 | |
| 297 | const allFolderIds = [id, ...getAllSubFolderIds(id, folder.folders)] |
| 298 | |
| 299 | // 删除所有子页面 |
| 300 | const pagesToDelete = page.pages.filter( |
| 301 | (p) => p.parentFolderId && allFolderIds.includes(p.parentFolderId) |
| 302 | ) |
| 303 | const pageIds = pagesToDelete.map((p) => p.id) |
| 304 | |
| 305 | // 清除消息缓存 |
| 306 | for (const pageId of pageIds) { |
| 307 | message.evict(pageId) |
| 308 | await useMessageQueueStore.getState().removeRecord(pageId) |
| 309 | } |
| 310 | |
| 311 | // 关闭对应的标签页 |
| 312 | const tabsToClose = tab.tabs.filter((t) => t.dataId && pageIds.includes(t.dataId)) |
| 313 | for (const existingTab of tabsToClose) { |
| 314 | tab.closeTab(existingTab.id) |
| 315 | } |
| 316 | |
| 317 | // 批量删除页面 |
| 318 | if (pageIds.length > 0) { |
| 319 | await page.deleteMany(pageIds) |
| 320 | } |
| 321 | |
| 322 | // 删除所有文件夹(包括子文件夹) |
| 323 | await folder.deleteMany(allFolderIds) |
| 324 | } |
| 325 | |
| 326 | // 清空文件夹(删除子项但保留文件夹本身) |
| 327 | export async function clearFolder(id: string): Promise<void> { |
no test coverage detected