Undoing: Move undoing reactions to the pipeline everywhere.
[akkoma] / lib / pleroma / web / activity_pub / object_validators / common_validations.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations do
6 import Ecto.Changeset
7
8 alias Pleroma.Activity
9 alias Pleroma.Object
10 alias Pleroma.User
11
12 def validate_actor_presence(cng, field_name \\ :actor) do
13 cng
14 |> validate_change(field_name, fn field_name, actor ->
15 if User.get_cached_by_ap_id(actor) do
16 []
17 else
18 [{field_name, "can't find user"}]
19 end
20 end)
21 end
22
23 def validate_object_presence(cng, field_name \\ :object) do
24 cng
25 |> validate_change(field_name, fn field_name, object ->
26 if Object.get_cached_by_ap_id(object) || Activity.get_by_ap_id(object) do
27 []
28 else
29 [{field_name, "can't find object"}]
30 end
31 end)
32 end
33 end