From 2ee849378a4de46769e1744dc8e6b296b3543d86 Mon Sep 17 00:00:00 2001 From: Logan Hunt Date: Wed, 13 Apr 2022 16:55:02 -0600 Subject: [PATCH] Move assignment to live_helpers, fix bug when user updates email --- lib/aggiedit/accounts.ex | 4 ++-- lib/aggiedit/rooms/post.ex | 1 - lib/aggiedit/utils.ex | 1 - lib/aggiedit_web/live/live_helpers.ex | 18 ++++++++++++++++++ .../live/post_live/form_component.ex | 1 - .../live/post_live/form_component.html.heex | 4 ++-- lib/aggiedit_web/live/post_live/helper.ex | 18 ------------------ lib/aggiedit_web/live/post_live/index.ex | 17 +++++------------ lib/aggiedit_web/live/post_live/show.ex | 6 +++--- 9 files changed, 30 insertions(+), 40 deletions(-) delete mode 100644 lib/aggiedit_web/live/post_live/helper.ex diff --git a/lib/aggiedit/accounts.ex b/lib/aggiedit/accounts.ex index 1852393..70ac870 100644 --- a/lib/aggiedit/accounts.ex +++ b/lib/aggiedit/accounts.ex @@ -5,9 +5,9 @@ defmodule Aggiedit.Accounts do import Ecto.Query, warn: false alias Aggiedit.Repo + alias Aggiedit.Rooms alias Aggiedit.Accounts.{User, UserToken, UserNotifier} - alias Aggiedit.Rooms ## Database getters @@ -140,7 +140,7 @@ defmodule Aggiedit.Accounts do with {:ok, query} <- UserToken.verify_change_email_token_query(token, context), %UserToken{sent_to: email} <- Repo.one(query), - {:ok, _} <- Repo.transaction(user_email_multi(user, email, context)), + {:ok, %{:user => user}} <- Repo.transaction(user_email_multi(user, email, context)), {:ok, _user} <- set_user_room(user) do :ok else diff --git a/lib/aggiedit/rooms/post.ex b/lib/aggiedit/rooms/post.ex index 2156fae..ee9450d 100644 --- a/lib/aggiedit/rooms/post.ex +++ b/lib/aggiedit/rooms/post.ex @@ -1,7 +1,6 @@ defmodule Aggiedit.Rooms.Post do use Ecto.Schema import Ecto.Changeset - alias Aggiedit.Repo schema "posts" do field :body, :string diff --git a/lib/aggiedit/utils.ex b/lib/aggiedit/utils.ex index 492b36e..05e94b3 100644 --- a/lib/aggiedit/utils.ex +++ b/lib/aggiedit/utils.ex @@ -3,7 +3,6 @@ defmodule Aggiedit.Utils do domain_split = Regex.named_captures(~r/^.*@(?.*)$/, email)["domain"] |> String.downcase() |> String.split(".") - IO.puts(inspect(domain_split)) if Enum.count(domain_split) >= 2 do Enum.join(Enum.take(domain_split, -2), ".") 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 @@ <% end %> - <%= else %> - <% if !is_nil(@post.upload) do %> + <% else %> + <%= if !is_nil(@post.upload) do %>
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