diff --git a/lib/microwaveprop_web/live/beacon_live/index.ex b/lib/microwaveprop_web/live/beacon_live/index.ex index 5639572a..c6a1131c 100644 --- a/lib/microwaveprop_web/live/beacon_live/index.ex +++ b/lib/microwaveprop_web/live/beacon_live/index.ex @@ -139,14 +139,16 @@ defmodule MicrowavepropWeb.BeaconLive.Index do # Replace or add a beacon in the in-memory JSON list without re-querying the DB. defp patch_beacons_json(%{assigns: %{beacons_json: json}} = socket, beacon) do entry = encode_single_beacon(beacon) - updated = Enum.reject(json, &(Map.get(&1, "id") == Map.get(entry, "id"))) ++ [entry] - assign(socket, :beacons_json, updated) + list = Jason.decode!(json) + updated = Enum.reject(list, &(Map.get(&1, "id") == Map.get(entry, "id"))) ++ [entry] + assign(socket, :beacons_json, Jason.encode!(updated)) end defp remove_from_beacons_json(%{assigns: %{beacons_json: json}} = socket, beacon) do id_str = beacon.id |> Ecto.UUID.cast!() |> to_string() - updated = Enum.reject(json, &(Map.get(&1, "id") == id_str)) - assign(socket, :beacons_json, updated) + list = Jason.decode!(json) + updated = Enum.reject(list, &(Map.get(&1, "id") == id_str)) + assign(socket, :beacons_json, Jason.encode!(updated)) end defp encode_single_beacon(beacon) do