Refactor Mobilizon.Federation.ActivityPub and add typespecs
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
31
lib/federation/activity_pub/actions/flag.ex
Normal file
31
lib/federation/activity_pub/actions/flag.ex
Normal file
@@ -0,0 +1,31 @@
|
||||
defmodule Mobilizon.Federation.ActivityPub.Actions.Flag do
|
||||
@moduledoc """
|
||||
Delete things
|
||||
"""
|
||||
alias Mobilizon.Users
|
||||
alias Mobilizon.Federation.ActivityPub.{Activity, Types}
|
||||
alias Mobilizon.Web.Email.{Admin, Mailer}
|
||||
require Logger
|
||||
|
||||
import Mobilizon.Federation.ActivityPub.Utils,
|
||||
only: [
|
||||
create_activity: 2,
|
||||
maybe_federate: 1
|
||||
]
|
||||
|
||||
@spec flag(map, boolean, map) :: {:ok, Activity.t(), Report.t()} | {:error, Ecto.Changeset.t()}
|
||||
def flag(args, local \\ false, additional \\ %{}) do
|
||||
with {:ok, report, report_as_data} <- Types.Reports.flag(args, local, additional) do
|
||||
{:ok, activity} = create_activity(report_as_data, local)
|
||||
maybe_federate(activity)
|
||||
|
||||
Enum.each(Users.list_moderators(), fn moderator ->
|
||||
moderator
|
||||
|> Admin.report(report)
|
||||
|> Mailer.send_email_later()
|
||||
end)
|
||||
|
||||
{:ok, activity, report}
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user