Current section

Files

Jump to
relyra lib relyra live_admin scope.ex
Raw

lib/relyra/live_admin/scope.ex

defmodule Relyra.LiveAdmin.Scope do
@moduledoc """
Resolved admin scope for the optional LiveView surface.
"""
@enforce_keys [:actor]
defstruct [:actor, :actor_label, :organization_id]
@type t :: %__MODULE__{
actor: String.t(),
actor_label: String.t() | nil,
organization_id: String.t() | nil
}
@spec scope_label(t()) :: String.t()
def scope_label(%__MODULE__{organization_id: nil}), do: "Global scope"
def scope_label(%__MODULE__{organization_id: organization_id}) do
"Organization scope: #{organization_id}"
end
@spec actor_label(t()) :: String.t()
def actor_label(%__MODULE__{actor_label: actor_label, actor: _actor})
when is_binary(actor_label) and actor_label != "" do
actor_label
end
def actor_label(%__MODULE__{actor: actor}), do: actor
end