refactor: Reduce nesting depth in UserLive.Form.load_members_for_linking

This commit is contained in:
Moritz 2026-01-13 14:57:42 +01:00
parent fba0ea5ec0
commit 89fbd55250
Signed by: moritz
GPG key ID: 1020A035E5DD0824

View file

@ -598,20 +598,25 @@ defmodule MvWeb.UserLive.Form do
actor = current_actor(socket) actor = current_actor(socket)
case Ash.read(query, domain: Mv.Membership, actor: actor) do # Early return if no actor (prevents exceptions in unauthenticated tests)
{:ok, members} -> if is_nil(actor) do
# Apply email match filter if user_email is provided []
if user_email_str do else
Mv.Membership.Member.filter_by_email_match(members, user_email_str) case Ash.read(query, domain: Mv.Membership, actor: actor) do
else {:ok, members} -> apply_email_filter(members, user_email_str)
members {:error, _} -> []
end end
{:error, _} ->
[]
end end
end end
@spec apply_email_filter([Mv.Membership.Member.t()], String.t() | nil) ::
[Mv.Membership.Member.t()]
defp apply_email_filter(members, nil), do: members
defp apply_email_filter(members, user_email_str) when is_binary(user_email_str) do
Mv.Membership.Member.filter_by_email_match(members, user_email_str)
end
# Extract user-friendly error message from Ash.Error # Extract user-friendly error message from Ash.Error
@spec extract_error_message(any()) :: String.t() @spec extract_error_message(any()) :: String.t()
defp extract_error_message(%Ash.Error.Invalid{errors: errors}) when is_list(errors) do defp extract_error_message(%Ash.Error.Invalid{errors: errors}) when is_list(errors) do