aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/activity.ex
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2019-08-24 15:48:33 +0200
committerlain <lain@soykaf.club>2019-08-24 15:48:33 +0200
commitcc6c0b4ba6762e6a9b0a90c3dcda3f95283eb22a (patch)
treee80078875de15734e045f39e0bd9f82310961201 /lib/pleroma/activity.ex
parent0e2b5a3e6aed7947909c2a1ff1618403546f1572 (diff)
parentbc78a875c86db42d67122cfb767f239a55dacbea (diff)
downloadpleroma-cc6c0b4ba6762e6a9b0a90c3dcda3f95283eb22a.tar.gz
Merge remote-tracking branch 'origin/develop' into sixohsix/pleroma-post_expiration
Diffstat (limited to 'lib/pleroma/activity.ex')
-rw-r--r--lib/pleroma/activity.ex28
1 files changed, 26 insertions, 2 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
index be4850560..2d4e9da0c 100644
--- a/lib/pleroma/activity.ex
+++ b/lib/pleroma/activity.ex
@@ -99,6 +99,7 @@ defmodule Pleroma.Activity do
from([a] in query,
left_join: tm in ThreadMute,
on: tm.user_id == ^user.id and tm.context == fragment("?->>'context'", a.data),
+ as: :thread_mute,
select: %Activity{a | thread_muted?: not is_nil(tm.id)}
)
end
@@ -227,6 +228,29 @@ defmodule Pleroma.Activity do
def get_create_by_object_ap_id(_), do: nil
+ def create_by_object_ap_id_with_object(ap_ids) when is_list(ap_ids) do
+ from(
+ activity in Activity,
+ where:
+ fragment(
+ "coalesce((?)->'object'->>'id', (?)->>'object') = ANY(?)",
+ activity.data,
+ activity.data,
+ ^ap_ids
+ ),
+ where: fragment("(?)->>'type' = 'Create'", activity.data),
+ inner_join: o in Object,
+ on:
+ fragment(
+ "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
+ o.data,
+ activity.data,
+ activity.data
+ ),
+ preload: [object: o]
+ )
+ end
+
def create_by_object_ap_id_with_object(ap_id) when is_binary(ap_id) do
from(
activity in Activity,
@@ -266,8 +290,8 @@ defmodule Pleroma.Activity do
defp get_in_reply_to_activity_from_object(_), do: nil
- def get_in_reply_to_activity(%Activity{data: %{"object" => object}}) do
- get_in_reply_to_activity_from_object(Object.normalize(object))
+ def get_in_reply_to_activity(%Activity{} = activity) do
+ get_in_reply_to_activity_from_object(Object.normalize(activity))
end
def normalize(obj) when is_map(obj), do: get_by_ap_id_with_object(obj["id"])