(
folderId: number,
options: SelectFolderOptions = {},
)
| 472 | } |
| 473 | |
| 474 | async function selectFolder( |
| 475 | folderId: number, |
| 476 | options: SelectFolderOptions = {}, |
| 477 | ) { |
| 478 | const mode = options.mode ?? 'single' |
| 479 | const shouldEnsureVisibility = options.ensureVisibility ?? mode === 'single' |
| 480 | |
| 481 | if (mode === 'range') { |
| 482 | applyRangeFolderSelection(folderId) |
| 483 | } |
| 484 | else if (mode === 'toggle') { |
| 485 | applyToggleFolderSelection(folderId) |
| 486 | } |
| 487 | else { |
| 488 | applySingleFolderSelection(folderId) |
| 489 | state.libraryFilter = undefined |
| 490 | state.tagId = undefined |
| 491 | // snippetId намеренно не сбрасывается: иначе заголовок и редактор |
| 492 | // мигают пустым состоянием, пока загружается список новой папки. |
| 493 | // Все вызывающие либо делают selectFirstSnippet/selectSnippet после |
| 494 | // загрузки списка, либо чистят выбор через clearSnippetsState. |
| 495 | } |
| 496 | |
| 497 | if (folders.value?.length && shouldEnsureVisibility) { |
| 498 | await ensureSelectedFolderIsVisible() |
| 499 | } |
| 500 | } |
| 501 | |
| 502 | export function useFolders() { |
| 503 | return { |
no test coverage detected