(id: string)
| 325 | |
| 326 | // 清空文件夹(删除子项但保留文件夹本身) |
| 327 | export async function clearFolder(id: string): Promise<void> { |
| 328 | const { page, folder, message, tab } = stores |
| 329 | |
| 330 | // 获取所有子文件夹 ID |
| 331 | const subFolderIds = getAllSubFolderIds(id, folder.folders) |
| 332 | const allFolderIds = [id, ...subFolderIds] |
| 333 | |
| 334 | // 删除所有子页面 |
| 335 | const pagesToDelete = page.pages.filter( |
| 336 | (p) => p.parentFolderId && allFolderIds.includes(p.parentFolderId) |
| 337 | ) |
| 338 | const pageIds = pagesToDelete.map((p) => p.id) |
| 339 | |
| 340 | // 清除消息缓存 |
| 341 | for (const pageId of pageIds) { |
| 342 | message.evict(pageId) |
| 343 | await useMessageQueueStore.getState().removeRecord(pageId) |
| 344 | } |
| 345 | |
| 346 | // 关闭对应的标签页 |
| 347 | const tabsToClose = tab.tabs.filter((t) => t.dataId && pageIds.includes(t.dataId)) |
| 348 | for (const existingTab of tabsToClose) { |
| 349 | tab.closeTab(existingTab.id) |
| 350 | } |
| 351 | |
| 352 | // 批量删除页面 |
| 353 | if (pageIds.length > 0) { |
| 354 | await page.deleteMany(pageIds) |
| 355 | } |
| 356 | |
| 357 | // 删除所有子文件夹(不删除当前文件夹) |
| 358 | if (subFolderIds.length > 0) { |
| 359 | await folder.deleteMany(subFolderIds) |
| 360 | } |
| 361 | } |
| 362 | |
| 363 | // 批量删除文件夹 |
| 364 | export async function deleteFolders(ids: string[]): Promise<void> { |
no test coverage detected