ActivityPub / Transmogrifier: Correctly store incoming Update id.

This commit is contained in:
lain 2019-10-05 14:49:45 +02:00 committed by Ariadne Conill
parent 4168ead672
commit 4d85e07e9e
4 changed files with 9 additions and 4 deletions

View file

@ -17,6 +17,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
alias Pleroma.User
alias Pleroma.Web.ActivityPub.MRF
alias Pleroma.Web.ActivityPub.Transmogrifier
alias Pleroma.Web.ActivityPub.Utils
alias Pleroma.Web.Streamer
alias Pleroma.Web.WebFinger
@ -270,8 +271,8 @@ def reject(%{to: to, actor: actor, object: object} = params) do
end
def update(%{to: to, cc: cc, actor: actor, object: object} = params) do
# only accept false as false value
local = !(params[:local] == false)
activity_id = params[:activity_id]
with data <- %{
"to" => to,
@ -280,6 +281,7 @@ def update(%{to: to, cc: cc, actor: actor, object: object} = params) do
"actor" => actor,
"object" => object
},
data <- Utils.maybe_put(data, "id", activity_id),
{:ok, activity} <- insert(data, local),
:ok <- maybe_federate(activity) do
{:ok, activity}

View file

@ -621,7 +621,8 @@ def handle_incoming(
to: data["to"] || [],
cc: data["cc"] || [],
object: object,
actor: actor_id
actor: actor_id,
activity_id: data["id"]
})
else
e ->

View file

@ -728,6 +728,6 @@ def get_existing_votes(actor, %{data: %{"id" => id}}) do
|> Repo.all()
end
defp maybe_put(map, _key, nil), do: map
defp maybe_put(map, key, value), do: Map.put(map, key, value)
def maybe_put(map, _key, nil), do: map
def maybe_put(map, key, value), do: Map.put(map, key, value)
end

View file

@ -516,6 +516,8 @@ test "it works for incoming update activities" do
{:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(update_data)
assert data["id"] == update_data["id"]
user = User.get_cached_by_ap_id(data["actor"])
assert user.name == "gargle"