Skip to content

Commit 3471f61

Browse files
committed
broadcast updates
1 parent 17ad5cb commit 3471f61

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

lib/acme/orders.ex

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,12 @@ defmodule Acme.Orders do
6868
6969
"""
7070
def update_order(%Order{} = order, attrs) do
71-
order
72-
|> Order.changeset(attrs)
73-
|> Repo.update()
71+
order_changeset = Order.changeset(order, attrs)
72+
73+
with {:ok, order} <- Repo.update(order_changeset) do
74+
Phoenix.PubSub.broadcast(Acme.PubSub, "orders:#{order.id}", {:order_updated, order})
75+
{:ok, order}
76+
end
7477
end
7578

7679
@doc """

lib/acme_web/live/order_live/show.ex

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,19 @@ defmodule AcmeWeb.OrderLive.Show do
1010

1111
@impl true
1212
def handle_params(%{"id" => id}, _, socket) do
13+
if connected?(socket), do: Phoenix.PubSub.subscribe(Acme.PubSub, "orders:#{id}")
14+
1315
{:noreply,
1416
socket
1517
|> assign(:page_title, page_title(socket.assigns.live_action))
1618
|> assign(:order, Orders.get_order!(id))}
1719
end
1820

21+
@impl true
22+
def handle_info({:order_updated, order}, socket) do
23+
{:noreply, assign(socket, :order, order)}
24+
end
25+
1926
defp page_title(:show), do: "Show Order"
2027
defp page_title(:edit), do: "Edit Order"
2128
end

0 commit comments

Comments
 (0)