-
feat(homecore iter 3): DELETE /api/states/<id> + confirm modal in UI
发布于
2026-05-26 19:03:40 +00:00 CRUD increment 3/6. Full delete path lands end-to-end.
Backend (homecore-api):
rest.rs +18 LOC — newdelete_statehandler. Idempotent (matches HA's
removal semantics): returns 204 No Content whether the entity existed
or not. 4xx only for malformed entity_id or auth failure.
app.rs +6 LOC — adds.delete(rest::delete_state)to the
/api/states/:entity_id route alongside existing GET + POST.Backend curl smoke:
POST /api/states/sensor.test_delete 201
DELETE /api/states/sensor.test_delete 204
GET /api/states/sensor.test_delete 404Frontend:
components/StateCard.ts +25 LOC — small×delete button in the
card's top-right corner. opacity 0 by default, fades in on hover
or keyboard focus. dispatcheshc-state-card-delete(NOT
hc-state-card-click) with stopPropagation so the card's own
click-to-edit handler doesn't also fire.pages/Dashboard.ts +45 LOC — deletingState (StateView | null), a
confirm modal that names the entity_id in the body, Cancel /
Delete buttons in the footer (Delete styled in muted red),
_confirmDelete()dispatches DELETE with bearer, toast on
success, grid refresh.Browser-verified end-to-end on real homecore-server :8123:
- Hover card → × button visible
- Click × → DELETE confirm modal (NOT edit modal — stopPropagation works)
- Modal names entity_id in code block
- Cancel: entity preserved, modal closes
- Delete: backend GET-after-DELETE returns 404, grid card vanishes,
toast "Deleted sensor.delete_target" - 0 unexpected console errors (1 expected 404 from verification fetch)
Co-Authored-By: claude-flow ruv@ruv.net
下载附件