Add handling of objects not in database
This commit is contained in:
parent
896f8580dd
commit
28d5b40d0a
|
@ -311,8 +311,14 @@ def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ tru
|
||||||
user = User.get_cached_by_ap_id(actor)
|
user = User.get_cached_by_ap_id(actor)
|
||||||
|
|
||||||
to =
|
to =
|
||||||
object.data["to"] || [] ++ object.data["cc"] ||
|
case Object.get_cached_by_ap_id(id) do
|
||||||
[] ++ [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"]
|
nil ->
|
||||||
|
[user.follower_address, "https://www.w3.org/ns/activitystreams#Public"]
|
||||||
|
|
||||||
|
object ->
|
||||||
|
object.data["to"] || [] ++ object.data["cc"] ||
|
||||||
|
[] ++ [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"]
|
||||||
|
end
|
||||||
|
|
||||||
data = %{
|
data = %{
|
||||||
"type" => "Delete",
|
"type" => "Delete",
|
||||||
|
|
|
@ -691,12 +691,23 @@ test "decrements user note count only for public activities" do
|
||||||
user = Repo.get(User, user.id)
|
user = Repo.get(User, user.id)
|
||||||
assert user.info.note_count == 10
|
assert user.info.note_count == 10
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it creates a delete activity and checks that it is also sent to users mentioned by the deleted object" do
|
test "it creates a delete activity and checks that it is also sent to users mentioned by the deleted object" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
note = insert(:note_activity)
|
note = insert(:note_activity)
|
||||||
object = Object.get_by_ap_id(note.data["object"]["id"])
|
|
||||||
object = Kernel.put_in(object.data["to"], [user.ap_id])
|
{:ok, object} =
|
||||||
|
Object.get_by_ap_id(note.data["object"]["id"])
|
||||||
|
|> Object.change(%{
|
||||||
|
data: %{
|
||||||
|
"actor" => note.data["object"]["actor"],
|
||||||
|
"id" => note.data["object"]["id"],
|
||||||
|
"to" => [user.ap_id],
|
||||||
|
"type" => "Note"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|> Object.update_and_set_cache()
|
||||||
|
|
||||||
{:ok, delete} = ActivityPub.delete(object)
|
{:ok, delete} = ActivityPub.delete(object)
|
||||||
|
|
||||||
assert user.ap_id in delete.data["to"]
|
assert user.ap_id in delete.data["to"]
|
||||||
|
|
Loading…
Reference in a new issue