Move ActivityExpiration creation from CommonApi.post/2 to ActivityPub.insert/4
This commit is contained in:
parent
241a3d744a
commit
4d459b0e99
|
@ -1,10 +1,11 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Web.ActivityPub.ActivityPub do
|
defmodule Pleroma.Web.ActivityPub.ActivityPub do
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
alias Pleroma.Activity.Ir.Topics
|
alias Pleroma.Activity.Ir.Topics
|
||||||
|
alias Pleroma.ActivityExpiration
|
||||||
alias Pleroma.Config
|
alias Pleroma.Config
|
||||||
alias Pleroma.Conversation
|
alias Pleroma.Conversation
|
||||||
alias Pleroma.Conversation.Participation
|
alias Pleroma.Conversation.Participation
|
||||||
|
@ -135,12 +136,14 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when
|
||||||
{:containment, :ok} <- {:containment, Containment.contain_child(map)},
|
{:containment, :ok} <- {:containment, Containment.contain_child(map)},
|
||||||
{:ok, map, object} <- insert_full_object(map) do
|
{:ok, map, object} <- insert_full_object(map) do
|
||||||
{:ok, activity} =
|
{:ok, activity} =
|
||||||
Repo.insert(%Activity{
|
%Activity{
|
||||||
data: map,
|
data: map,
|
||||||
local: local,
|
local: local,
|
||||||
actor: map["actor"],
|
actor: map["actor"],
|
||||||
recipients: recipients
|
recipients: recipients
|
||||||
})
|
}
|
||||||
|
|> Repo.insert()
|
||||||
|
|> maybe_create_activity_expiration()
|
||||||
|
|
||||||
# Splice in the child object if we have one.
|
# Splice in the child object if we have one.
|
||||||
activity =
|
activity =
|
||||||
|
@ -180,6 +183,14 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp maybe_create_activity_expiration({:ok, %{data: %{"expires_at" => expires_at}} = activity}) do
|
||||||
|
with {:ok, _} <- ActivityExpiration.create(activity, expires_at) do
|
||||||
|
{:ok, activity}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp maybe_create_activity_expiration(result), do: result
|
||||||
|
|
||||||
defp create_or_bump_conversation(activity, actor) do
|
defp create_or_bump_conversation(activity, actor) do
|
||||||
with {:ok, conversation} <- Conversation.create_or_bump_for(activity),
|
with {:ok, conversation} <- Conversation.create_or_bump_for(activity),
|
||||||
%User{} = user <- User.get_cached_by_ap_id(actor),
|
%User{} = user <- User.get_cached_by_ap_id(actor),
|
||||||
|
|
|
@ -193,6 +193,13 @@ defp preview?(draft) do
|
||||||
|
|
||||||
defp changes(draft) do
|
defp changes(draft) do
|
||||||
direct? = draft.visibility == "direct"
|
direct? = draft.visibility == "direct"
|
||||||
|
additional = %{"cc" => draft.cc, "directMessage" => direct?}
|
||||||
|
|
||||||
|
additional =
|
||||||
|
case draft.expires_at do
|
||||||
|
%NaiveDateTime{} = expires_at -> Map.put(additional, "expires_at", expires_at)
|
||||||
|
_ -> additional
|
||||||
|
end
|
||||||
|
|
||||||
changes =
|
changes =
|
||||||
%{
|
%{
|
||||||
|
@ -200,7 +207,7 @@ defp changes(draft) do
|
||||||
actor: draft.user,
|
actor: draft.user,
|
||||||
context: draft.context,
|
context: draft.context,
|
||||||
object: draft.object,
|
object: draft.object,
|
||||||
additional: %{"cc" => draft.cc, "directMessage" => direct?}
|
additional: additional
|
||||||
}
|
}
|
||||||
|> Utils.maybe_add_list_data(draft.user, draft.visibility)
|
|> Utils.maybe_add_list_data(draft.user, draft.visibility)
|
||||||
|
|
||||||
|
|
|
@ -277,20 +277,10 @@ def listen(user, %{"title" => _} = data) do
|
||||||
|
|
||||||
def post(user, %{"status" => _} = data) do
|
def post(user, %{"status" => _} = data) do
|
||||||
with {:ok, draft} <- Pleroma.Web.CommonAPI.ActivityDraft.create(user, data) do
|
with {:ok, draft} <- Pleroma.Web.CommonAPI.ActivityDraft.create(user, data) do
|
||||||
draft.changes
|
ActivityPub.create(draft.changes, draft.preview?)
|
||||||
|> ActivityPub.create(draft.preview?)
|
|
||||||
|> maybe_create_activity_expiration(draft.expires_at)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
defp maybe_create_activity_expiration({:ok, activity}, %NaiveDateTime{} = expires_at) do
|
|
||||||
with {:ok, _} <- ActivityExpiration.create(activity, expires_at) do
|
|
||||||
{:ok, activity}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
defp maybe_create_activity_expiration(result, _), do: result
|
|
||||||
|
|
||||||
# Updates the emojis for a user based on their profile
|
# Updates the emojis for a user based on their profile
|
||||||
def update(user) do
|
def update(user) do
|
||||||
emoji = emoji_from_profile(user)
|
emoji = emoji_from_profile(user)
|
||||||
|
|
Loading…
Reference in New Issue