X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Factivity.ex;h=c5b51474269fb7afd76494cdf003c512db472752;hb=1f863f0a36ebb0648c3d39ecb7ea9e3d01deab60;hp=b88f74f4717ff27f24b12da153f6f65def14ed23;hpb=e40b58fd563d327727fb3f304a5d1a55b2f6f2e4;p=akkoma diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index b88f74f47..c5b514742 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -292,6 +292,12 @@ defmodule Pleroma.Activity do get_in_reply_to_activity_from_object(Object.normalize(activity, fetch: false)) end + def get_quoted_activity_from_object(%Object{data: %{"quoteUri" => ap_id}}) do + get_create_by_object_ap_id_with_object(ap_id) + end + + def get_quoted_activity_from_object(_), do: nil + def normalize(%Activity{data: %{"id" => ap_id}}), do: get_by_ap_id_with_object(ap_id) def normalize(%{"id" => ap_id}), do: get_by_ap_id_with_object(ap_id) def normalize(ap_id) when is_binary(ap_id), do: get_by_ap_id_with_object(ap_id) @@ -361,15 +367,27 @@ defmodule Pleroma.Activity do |> Repo.all() end - def restrict_deactivated_users(query) do - deactivated_users = - from(u in User.Query.build(%{deactivated: true}), select: u.ap_id) - |> Repo.all() + def follow_activity(%User{ap_id: ap_id}, %User{ap_id: followed_ap_id}) do + Queries.by_type("Follow") + |> where([a], a.actor == ^ap_id) + |> where([a], fragment("?->>'object' = ?", a.data, ^followed_ap_id)) + |> where([a], fragment("?->>'state'", a.data) in ["pending", "accept"]) + |> Repo.one() + end - Activity.Queries.exclude_authors(query, deactivated_users) + def restrict_deactivated_users(query) do + query + |> join( + :inner_lateral, + [activity], + active in fragment( + "SELECT is_active from users WHERE ap_id = ? AND is_active = TRUE", + activity.actor + ) + ) end - defdelegate search(user, query, options \\ []), to: Pleroma.Activity.Search + defdelegate search(user, query, options \\ []), to: Pleroma.Search.DatabaseSearch def direct_conversation_id(activity, for_user) do alias Pleroma.Conversation.Participation