diff --git a/lib/mv_web/live/user_live/form.ex b/lib/mv_web/live/user_live/form.ex index 1cc6f6a..7b02053 100644 --- a/lib/mv_web/live/user_live/form.ex +++ b/lib/mv_web/live/user_live/form.ex @@ -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