Pleroma/lib/pleroma/web/activity_pub/transmogrifier/chat_message_handling.ex

27 lines
825 B
Elixir
Raw Normal View History

2020-04-08 15:55:43 +02:00
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ActivityPub.Transmogrifier.ChatMessageHandling do
alias Pleroma.Repo
2020-04-08 15:55:43 +02:00
alias Pleroma.Web.ActivityPub.Pipeline
def handle_incoming(
%{"type" => "Create", "object" => %{"type" => "ChatMessage"}} = data,
2020-04-08 15:55:43 +02:00
_options
) do
# Create has to be run inside a transaction because the object is created as a side effect.
# If this does not work, we need to roll back creating the activity.
2020-04-28 17:29:54 +02:00
case Repo.transaction(fn -> Pipeline.common_pipeline(data, local: false) end) do
{:ok, {:ok, activity, _}} ->
{:ok, activity}
2020-04-28 17:29:54 +02:00
{:ok, e} ->
e
2020-04-28 17:29:54 +02:00
{:error, e} ->
2020-04-16 15:21:47 +02:00
{:error, e}
2020-04-08 15:55:43 +02:00
end
end
end