发布

  • v1406 c0bb6f4fc7

    feat(homecore iter 3): DELETE /api/states/<id> + confirm modal in UI

    frostbyte_neo 发布于 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 — new delete_state handler. 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 404

    Frontend:
    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. dispatches hc-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

    下载附件