defmodule Mobilizon.Federation.ActivityPub.Types.Tombstones do
  @moduledoc false
  alias Mobilizon.{Actors, Tombstone}
  alias Mobilizon.Actors.Actor
  alias Mobilizon.Federation.ActivityPub.Permission

  @spec actor(Tombstone.t()) :: Actor.t() | nil
  def actor(%Tombstone{actor: %Actor{id: actor_id}}), do: Actors.get_actor(actor_id)

  def actor(%Tombstone{actor_id: actor_id}) when not is_nil(actor_id),
    do: Actors.get_actor(actor_id)

  def actor(_), do: nil

  @spec group_actor(any()) :: nil
  def group_actor(_), do: nil

  @spec permissions(any()) :: Permission.t()
  def permissions(_) do
    %Permission{access: nil, create: nil, update: nil, delete: nil}
  end
end