diff options
author | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-14 11:43:34 -0600 |
---|---|---|
committer | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-14 11:43:34 -0600 |
commit | cc58a376a94c28532121fca2e1ab1d0e7de11046 (patch) | |
tree | cb31a620c444e18ad8efa535ec946a7bcd792d6f /lib/aggiedit_web/live/post_live/index.ex | |
parent | ddfab312f73a3f3e15ceb6fec7d350500adb53d6 (diff) | |
download | aggiedit-cc58a376a94c28532121fca2e1ab1d0e7de11046.tar.gz aggiedit-cc58a376a94c28532121fca2e1ab1d0e7de11046.zip |
Add pubsub
Diffstat (limited to 'lib/aggiedit_web/live/post_live/index.ex')
-rw-r--r-- | lib/aggiedit_web/live/post_live/index.ex | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/aggiedit_web/live/post_live/index.ex b/lib/aggiedit_web/live/post_live/index.ex index 57ae727..6b2be56 100644 --- a/lib/aggiedit_web/live/post_live/index.ex +++ b/lib/aggiedit_web/live/post_live/index.ex @@ -10,7 +10,9 @@ defmodule AggieditWeb.PostLive.Index do def mount(%{"room_id" => _room_id} = params, session, socket) do {:ok, socket} = assign_socket_room_and_user_or_error(params, session, socket) case socket.assigns do - %{:room => room} -> {:ok, assign(socket, %{:posts => room |> Repo.preload(posts: [:user, :upload]) |> Map.get(:posts)})} + %{:room => room} -> + if connected?(socket), do: Rooms.subscribe(socket.assigns.room) + {:ok, assign(socket, %{:posts => room |> Repo.preload(posts: [:user, :upload]) |> Map.get(:posts)}), temporary_assigns: [posts: []]} _ -> {:ok, socket} end end @@ -59,4 +61,11 @@ defmodule AggieditWeb.PostLive.Index do {:noreply, socket |> put_flash(:error, "You do not have permission to delete this post.") |> redirect(to: Routes.post_index_path(socket, :index, socket.assigns.room))} end end + + @impl true + def handle_info({action, post}, socket) when action in [:post_created, :post_updated, :post_deleted] do + {:noreply, update(socket, :posts, fn posts -> + [posts | post] + end)} + end end |