alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.ActivityPub.Pipeline
alias Pleroma.Web.ActivityPub.Utils
+ alias Pleroma.Web.Streamer
def handle(object, meta \\ [])
end
end
+ # Tasks this handles:
+ # - Add announce to object
+ # - Set up notification
+ # - Stream out the announce
+ def handle(%{data: %{"type" => "Announce"}} = object, meta) do
+ announced_object = Object.get_by_ap_id(object.data["object"])
+
+ Utils.add_announce_to_object(object, announced_object)
+
+ Notification.create_notifications(object)
+ ActivityPub.stream_out(object)
+
+ {:ok, object, meta}
+ end
+
def handle(%{data: %{"type" => "Undo", "object" => undone_object}} = object, meta) do
with undone_object <- Activity.get_by_ap_id(undone_object),
:ok <- handle_undoing(undone_object) do
[[actor, recipient], [recipient, actor]]
|> Enum.each(fn [user, other_user] ->
if user.local do
- Chat.bump_or_create(user.id, other_user.ap_id)
+ if user.ap_id == actor.ap_id do
+ Chat.get_or_create(user.id, other_user.ap_id)
+ else
+ Chat.bump_or_create(user.id, other_user.ap_id)
+ end
end
end)
+ Streamer.stream(["user", "user:pleroma_chat"], object)
{:ok, object, meta}
end
end