Make outbound transmogrifier aware of edit history
This commit is contained in:
parent
5321fd0012
commit
014096aeef
5 changed files with 109 additions and 54 deletions
|
|
@ -687,6 +687,24 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|
|||
|> strip_internal_fields
|
||||
|> strip_internal_tags
|
||||
|> set_type
|
||||
|> maybe_process_history
|
||||
end
|
||||
|
||||
defp maybe_process_history(%{"formerRepresentations" => %{"orderedItems" => history}} = object) do
|
||||
processed_history =
|
||||
Enum.map(
|
||||
history,
|
||||
fn
|
||||
item when is_map(item) -> prepare_object(item)
|
||||
item -> item
|
||||
end
|
||||
)
|
||||
|
||||
put_in(object, ["formerRepresentations", "orderedItems"], processed_history)
|
||||
end
|
||||
|
||||
defp maybe_process_history(object) do
|
||||
object
|
||||
end
|
||||
|
||||
# @doc
|
||||
|
|
@ -711,6 +729,21 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|
|||
{:ok, data}
|
||||
end
|
||||
|
||||
def prepare_outgoing(%{"type" => "Update", "object" => %{"type" => objtype} = object} = data)
|
||||
when objtype in Pleroma.Constants.updatable_object_types() do
|
||||
object =
|
||||
object
|
||||
|> prepare_object
|
||||
|
||||
data =
|
||||
data
|
||||
|> Map.put("object", object)
|
||||
|> Map.merge(Utils.make_json_ld_header())
|
||||
|> Map.delete("bcc")
|
||||
|
||||
{:ok, data}
|
||||
end
|
||||
|
||||
def prepare_outgoing(%{"type" => "Announce", "actor" => ap_id, "object" => object_id} = data) do
|
||||
object =
|
||||
object_id
|
||||
|
|
@ -902,24 +935,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|
|||
end
|
||||
|
||||
def strip_internal_fields(object) do
|
||||
outer = Map.drop(object, Pleroma.Constants.object_internal_fields())
|
||||
|
||||
case outer do
|
||||
%{"formerRepresentations" => %{"orderedItems" => list}} when is_list(list) ->
|
||||
update_in(
|
||||
outer["formerRepresentations"]["orderedItems"],
|
||||
&Enum.map(
|
||||
&1,
|
||||
fn
|
||||
item when is_map(item) -> Map.drop(item, Pleroma.Constants.object_internal_fields())
|
||||
item -> item
|
||||
end
|
||||
)
|
||||
)
|
||||
|
||||
_ ->
|
||||
outer
|
||||
end
|
||||
Map.drop(object, Pleroma.Constants.object_internal_fields())
|
||||
end
|
||||
|
||||
defp strip_internal_tags(%{"tag" => tags} = object) do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue