|
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. |
|---|
|
|
| webclient-vue/src/api/__tests__/modules.spec.js |
|---|
| webclient-vue/src/api/modules/areas.js |
|---|
| webclient-vue/src/api/modules/devices.js |
|---|
| webclient-vue/src/api/modules/scripts.js |
|---|
| webclient-vue/src/composables/__tests__/useAsyncRequest.spec.js 0 → 100644 |
|---|
| webclient-vue/src/composables/useAsyncRequest.js 0 → 100644 |
|---|
| webclient-vue/src/stores/areas.js |
|---|
| webclient-vue/src/stores/devices.js |
|---|
| webclient-vue/src/stores/scanning.js |
|---|
| webclient-vue/src/stores/scripts.js |
|---|