Phase 5: Extract reusable useAsyncRequest composable for stores
...
- Add src/composables/useAsyncRequest.js to manage isLoading/error/AbortController
- Convert Pinia stores to Setup Stores: areas, devices, scripts, scanning
- Use useAsyncRequest for all simple list/detail loaders
- Fix API modules to forward options/signal (areas.devices, areas.scripts,
devices.detail, scripts.scopeCode) — previously AbortControllers were
created but signals were never passed to fetch
- Keep batch loadDeviceStates and reboot/runScript as custom logic
- Use immutable Set updates for reactive rebootingIds/runningAliases
- Update modules.spec.js assertions for new optional arguments
- Add 9 unit tests for useAsyncRequest
All 139 tests pass.
Eugene Sukhodolskiy
committed
11 hours ago