diff options
author | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-13 16:55:02 -0600 |
---|---|---|
committer | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-13 16:55:02 -0600 |
commit | 2ee849378a4de46769e1744dc8e6b296b3543d86 (patch) | |
tree | fff672d2fe0edbdc048d73a5538c047ef150c55a /lib/aggiedit_web | |
parent | 51298ea998bff64b521fe0a392ad340271d40f07 (diff) | |
download | aggiedit-2ee849378a4de46769e1744dc8e6b296b3543d86.tar.gz aggiedit-2ee849378a4de46769e1744dc8e6b296b3543d86.zip |
Move assignment to live_helpers, fix bug when user updates email
Diffstat (limited to 'lib/aggiedit_web')
-rw-r--r-- | lib/aggiedit_web/live/live_helpers.ex | 18 | ||||
-rw-r--r-- | lib/aggiedit_web/live/post_live/form_component.ex | 1 | ||||
-rw-r--r-- | lib/aggiedit_web/live/post_live/form_component.html.heex | 4 | ||||
-rw-r--r-- | lib/aggiedit_web/live/post_live/helper.ex | 18 | ||||
-rw-r--r-- | lib/aggiedit_web/live/post_live/index.ex | 17 | ||||
-rw-r--r-- | lib/aggiedit_web/live/post_live/show.ex | 6 |
6 files changed, 28 insertions, 36 deletions
diff --git a/lib/aggiedit_web/live/live_helpers.ex b/lib/aggiedit_web/live/live_helpers.ex index e31fedc..a8d067e 100644 --- a/lib/aggiedit_web/live/live_helpers.ex +++ b/lib/aggiedit_web/live/live_helpers.ex @@ -7,6 +7,11 @@ defmodule AggieditWeb.LiveHelpers do alias Aggiedit.Accounts alias Aggiedit.Accounts.User + alias Aggiedit.Rooms + alias Aggiedit.Roles + + alias AggieditWeb.Router.Helpers, as: Routes + @doc """ Renders a live component inside a modal. @@ -69,4 +74,17 @@ defmodule AggieditWeb.LiveHelpers do _ -> socket end end + + def assign_socket_room_and_user_or_error(%{"room_id" => room_id}, session, socket) do + socket = assign_socket_user(session, socket) + case socket.assigns do + %{:current_user => user} -> + room = Rooms.get_room!(room_id) + case Roles.guard?(user, :index, room) do + true -> {:ok, assign(socket, %{:room => room})} + _ -> {:ok, socket |> put_flash(:error, "You cannot view that room") |> redirect(to: Routes.page_path(socket, :index))} + end + _ -> {:ok, socket |> put_flash(:error, "You must log in to access this page.") |> redirect(to: Routes.user_session_path(socket, :new))} + end + end end diff --git a/lib/aggiedit_web/live/post_live/form_component.ex b/lib/aggiedit_web/live/post_live/form_component.ex index c316c0b..8714277 100644 --- a/lib/aggiedit_web/live/post_live/form_component.ex +++ b/lib/aggiedit_web/live/post_live/form_component.ex @@ -4,7 +4,6 @@ defmodule AggieditWeb.PostLive.FormComponent do alias Aggiedit.Rooms alias Aggiedit.Rooms.Post alias Aggiedit.Uploads - alias Aggiedit.Uploads.Upload alias Aggiedit.Repo @impl true diff --git a/lib/aggiedit_web/live/post_live/form_component.html.heex b/lib/aggiedit_web/live/post_live/form_component.html.heex index a956cb3..b0a798e 100644 --- a/lib/aggiedit_web/live/post_live/form_component.html.heex +++ b/lib/aggiedit_web/live/post_live/form_component.html.heex @@ -26,8 +26,8 @@ </div> </div> <% end %> - <%= else %> - <% if !is_nil(@post.upload) do %> + <% else %> + <%= if !is_nil(@post.upload) do %> <div class="row"> <div class="column"> <img style="height:80px" src={Routes.static_path(@socket, "/uploads/#{@post.upload.file}")} /> diff --git a/lib/aggiedit_web/live/post_live/helper.ex b/lib/aggiedit_web/live/post_live/helper.ex deleted file mode 100644 index 5b8e5be..0000000 --- a/lib/aggiedit_web/live/post_live/helper.ex +++ /dev/null @@ -1,18 +0,0 @@ -defmodule AggieditWeb.PostLive.Helper do - use AggieditWeb, :live_view - alias Aggiedit.Rooms - alias Aggiedit.Roles - - def assign_socket_room_and_user_or_error(%{"room_id" => room_id}=params, session, socket) do - socket = assign_socket_user(session, socket) - case socket.assigns do - %{:current_user => user} -> - room = Rooms.get_room!(room_id) - case Roles.guard?(socket.assigns.current_user, :index, room) do - true -> {:ok, assign(socket, %{:room => room})} - _ -> {:ok, socket |> put_flash(:error, "You cannot view that room") |> redirect(to: Routes.page_path(socket, :index))} - end - _ -> {:ok, socket |> put_flash(:error, "You must log in to access this page.") |> redirect(to: Routes.user_session_path(socket, :new))} - end - end -end
\ No newline at end of file diff --git a/lib/aggiedit_web/live/post_live/index.ex b/lib/aggiedit_web/live/post_live/index.ex index 26c078c..6972a44 100644 --- a/lib/aggiedit_web/live/post_live/index.ex +++ b/lib/aggiedit_web/live/post_live/index.ex @@ -1,23 +1,16 @@ defmodule AggieditWeb.PostLive.Index do use AggieditWeb, :live_view - alias Aggiedit.Accounts.User alias Aggiedit.Roles alias Aggiedit.Rooms - alias Aggiedit.Rooms.{Post, Room} + alias Aggiedit.Rooms.Post alias Aggiedit.Repo @impl true - def mount(%{"room_id" => room_id} = params, session, socket) do - {:ok, socket} = AggieditWeb.PostLive.Helper.assign_socket_room_and_user_or_error(params, session, socket) -# if !is_nil(socket.assigns[:room]) do -# {:ok, assign(socket, %{:posts => socket.assigns.room |> Repo.preload(:posts) |> Map.get(:posts)})} -# else -# {:ok, socket} -# end + 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) |> Map.get(:posts)})} + %{:room => room} -> {:ok, assign(socket, %{:posts => room |> Repo.preload(:posts) |> Map.get(:posts)})} _ -> {:ok, socket} end end @@ -38,7 +31,7 @@ defmodule AggieditWeb.PostLive.Index do {:noreply, apply_action(socket, socket.assigns.live_action, params)} end - defp apply_action(socket, :edit, %{"id" => id}=params) do + defp apply_action(socket, :edit, %{"id" => id}) do socket |> assign(:page_title, "Edit Post") |> assign(:post, Rooms.get_post!(id) |> Repo.preload(:upload)) diff --git a/lib/aggiedit_web/live/post_live/show.ex b/lib/aggiedit_web/live/post_live/show.ex index f3293fb..9d8f86c 100644 --- a/lib/aggiedit_web/live/post_live/show.ex +++ b/lib/aggiedit_web/live/post_live/show.ex @@ -6,12 +6,12 @@ defmodule AggieditWeb.PostLive.Show do alias Aggiedit.Repo @impl true - def mount(%{"room_id" => room_id} = params, session, socket) do - AggieditWeb.PostLive.Helper.assign_socket_room_and_user_or_error(params, session, socket) + def mount(%{"room_id" => _room_id} = params, session, socket) do + assign_socket_room_and_user_or_error(params, session, socket) end @impl true - def handle_params(%{"id" => id}=params, _, socket) do + def handle_params(%{"id" => id}, _, socket) do post = Rooms.get_post!(id) |> Repo.preload(:upload) if Roles.guard?(socket.assigns.current_user, socket.assigns.live_action, post) do |