X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Factivity.ex;h=3b01f5e316a0b83d55b99ceba9d563aac60c8e41;hb=18a91d85e59eb67a2d58a28aae732c34b75ebe97;hp=97feebeaa641b1e17f8ce71e6fd4bdd3a201dfee;hpb=14a06e63f661cc964a799a62c87103a00ba0c5e0;p=akkoma diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 97feebeaa..3b01f5e31 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Activity do alias Pleroma.Activity alias Pleroma.Activity.Queries - alias Pleroma.ActivityExpiration alias Pleroma.Bookmark alias Pleroma.Notification alias Pleroma.Object @@ -19,6 +18,8 @@ defmodule Pleroma.Activity do import Ecto.Changeset import Ecto.Query + require Pleroma.Constants + @type t :: %__MODULE__{} @type actor :: String.t() @@ -60,8 +61,6 @@ defmodule Pleroma.Activity do # typical case. has_one(:object, Object, on_delete: :nothing, foreign_key: :id) - has_one(:expiration, ActivityExpiration, on_delete: :delete_all) - timestamps() end @@ -304,14 +303,14 @@ defmodule Pleroma.Activity do |> Repo.all() end - def follow_requests_for_actor(%Pleroma.User{ap_id: ap_id}) do + def follow_requests_for_actor(%User{ap_id: ap_id}) do ap_id |> Queries.by_object_id() |> Queries.by_type("Follow") |> where([a], fragment("? ->> 'state' = 'pending'", a.data)) end - def following_requests_for_actor(%Pleroma.User{ap_id: ap_id}) do + def following_requests_for_actor(%User{ap_id: ap_id}) do Queries.by_type("Follow") |> where([a], fragment("?->>'state' = 'pending'", a.data)) |> where([a], a.actor == ^ap_id) @@ -346,4 +345,12 @@ defmodule Pleroma.Activity do actor = user_actor(activity) activity.id in actor.pinned_activities end + + def local_only?(activity) do + recipients = Enum.concat(activity.data["to"], Map.get(activity.data, "cc", [])) + public = Pleroma.Constants.as_public() + local = Pleroma.Constants.as_local_public() + + Enum.member?(recipients, local) and not Enum.member?(recipients, public) + end end