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)
case Ash.read(query, domain: Mv.Membership, actor: actor) do
{:ok, members} ->
# Apply email match filter if user_email is provided
if user_email_str do
Mv.Membership.Member.filter_by_email_match(members, user_email_str)
else
members
end
{:error, _} ->
[]
# Early return if no actor (prevents exceptions in unauthenticated tests)
if is_nil(actor) do
[]
else
case Ash.read(query, domain: Mv.Membership, actor: actor) do
{:ok, members} -> apply_email_filter(members, user_email_str)
{:error, _} -> []
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
@spec extract_error_message(any()) :: String.t()
defp extract_error_message(%Ash.Error.Invalid{errors: errors}) when is_list(errors) do