refactor(member): share Ash error formatting across member-show components

This commit is contained in:
Moritz 2026-06-08 12:48:22 +02:00
parent 24f67bea80
commit 856ea4279c
7 changed files with 105 additions and 36 deletions

View file

@ -15,6 +15,7 @@ defmodule MvWeb.MemberLive.Show.DeactivateComponent do
use MvWeb, :live_component
import MvWeb.Authorization, only: [can?: 3]
import MvWeb.Helpers.AshErrorHelpers, only: [format_error: 1]
alias Mv.Membership
alias MvWeb.Helpers.MemberHelpers
@ -187,17 +188,4 @@ defmodule MvWeb.MemberLive.Show.DeactivateComponent do
|> assign(:show_modal, false)
|> assign(:error, nil)
end
defp format_error(%Ash.Error.Invalid{errors: errors}) do
Enum.map_join(errors, ", ", fn
%{message: message} -> message
other -> inspect(other)
end)
end
defp format_error(%Ash.Error.Forbidden{}) do
gettext("You are not allowed to perform this action.")
end
defp format_error(_error), do: gettext("An error occurred")
end

View file

@ -15,6 +15,7 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do
require Ash.Query
import MvWeb.LiveHelpers, only: [current_actor: 1]
import MvWeb.Authorization, only: [can?: 3]
import MvWeb.Helpers.AshErrorHelpers, only: [format_error: 1]
alias Mv.Membership
alias Mv.MembershipFees
@ -1144,17 +1145,6 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do
defp format_status_label(:unpaid), do: gettext("Unpaid")
defp format_status_label(:suspended), do: gettext("Suspended")
defp format_error(%Ash.Error.Invalid{} = error) do
Enum.map_join(error.errors, ", ", fn e -> e.message end)
end
defp format_error(%Ash.Error.Forbidden{}) do
gettext("You are not allowed to perform this action.")
end
defp format_error(error) when is_binary(error), do: error
defp format_error(_error), do: gettext("An error occurred")
defp validate_cycle_not_exists(cycles, cycle_start) do
if Enum.any?(cycles, &(&1.cycle_start == cycle_start)) do
{:error, :cycle_exists}