refactor: extract shared helpers for RoleLive modules
Extract format_error and permission_set_badge_class functions into MvWeb.RoleLive.Helpers module to eliminate code duplication between Index and Show LiveViews.
This commit is contained in:
parent
e3cd400899
commit
32296625fe
4 changed files with 44 additions and 34 deletions
27
lib/mv_web/live/role_live/helpers.ex
Normal file
27
lib/mv_web/live/role_live/helpers.ex
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
defmodule MvWeb.RoleLive.Helpers do
|
||||
@moduledoc """
|
||||
Shared helper functions for RoleLive modules.
|
||||
"""
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
|
||||
@doc """
|
||||
Formats an error for display to the user.
|
||||
"""
|
||||
@spec format_error(Ash.Error.Invalid.t() | String.t() | any()) :: String.t()
|
||||
def format_error(%Ash.Error.Invalid{} = error) do
|
||||
Enum.map_join(error.errors, ", ", fn e -> e.message end)
|
||||
end
|
||||
|
||||
def format_error(error) when is_binary(error), do: error
|
||||
def format_error(_error), do: gettext("An error occurred")
|
||||
|
||||
@doc """
|
||||
Returns the CSS badge class for a permission set name.
|
||||
"""
|
||||
@spec permission_set_badge_class(String.t()) :: String.t()
|
||||
def permission_set_badge_class("own_data"), do: "badge badge-neutral badge-sm"
|
||||
def permission_set_badge_class("read_only"), do: "badge badge-info badge-sm"
|
||||
def permission_set_badge_class("normal_user"), do: "badge badge-success badge-sm"
|
||||
def permission_set_badge_class("admin"), do: "badge badge-error badge-sm"
|
||||
def permission_set_badge_class(_), do: "badge badge-ghost badge-sm"
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue