| type | JS Module | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| title | use-project-paths.js | ||||||||||
| resource | app/src/composables/use-project-paths.js | ||||||||||
| docgen |
|
Механізм реалізує функціональність useProjectPaths для управління набором шляхів до проєктів, що конфігурується в config.json. Він дозволяє додавати, видаляти шляхи та визначати останній вибраний проєкт, забезпечуючи безпечну роботу без викидання винятків; при помилках він повертає null.
Поведінка:
- Викликається хук useProjectPaths для доступу до стану шляхів проєктів.
- Ініціалізується стан
lastProjectзі збереженого вlocalStorageзначення, або порожній рядок. - Якщо шляхи проєктів ще не завантажені, викликається
loadPathsдля отримання списку шляхів з конфігураційного файлуconfig.jsonчерез виклик Tauri API. - Якщо
loadPathsне вдається (наприклад, у тестовому середовищі), стан шляхів залишається невизначеним, і жодних помилок назовні не генерується. - Щоб додати новий шлях проєкту, викликається
addProjectPath, який додає шлях до списку, усуває дублікати та синхронізує зміни зconfig.json. - Щоб видалити шлях проєкту, викликається
removeProjectPath, який видаляє шлях зі списку та синхронізує зміни зconfig.json. - Для встановлення останнього обраного проєкту викликається
setLastProject, що зберігає шлях у стані та оновлюєlocalStorage. - Зміни до списку шляхів проєкту синхронізуються з
config.jsonз використанням механізму "fire-and-forget", що не гарантує успіх у всіх середовищах.
useProjectPaths — Зберігає в спільному сховищі шляхи до проектів, які шукаються, включаючи конфігурацію Rust та стандартні шляхи користувача (
- Read-only: не виконує операцій запису (ФС/БД).
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
- За певних помилок повертає порожнє значення (напр.
null) замість винятку.