forked from AkkomaGang/akkoma
Ensure self-announces do not widen the audience of the original post
This commit is contained in:
parent
1f0be71ea4
commit
fe538973dd
2 changed files with 4 additions and 3 deletions
lib/pleroma/web/activity_pub
|
@ -346,7 +346,7 @@ def announce(
|
||||||
local \\ true,
|
local \\ true,
|
||||||
public \\ true
|
public \\ true
|
||||||
) do
|
) do
|
||||||
with true <- is_announceable?(object, user),
|
with true <- is_announceable?(object, user, public),
|
||||||
announce_data <- make_announce_data(user, object, activity_id, public),
|
announce_data <- make_announce_data(user, object, activity_id, public),
|
||||||
{:ok, activity} <- insert(announce_data, local),
|
{:ok, activity} <- insert(announce_data, local),
|
||||||
{:ok, object} <- add_announce_to_object(activity, object),
|
{:ok, object} <- add_announce_to_object(activity, object),
|
||||||
|
|
|
@ -27,8 +27,9 @@ def is_private?(activity) do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_announceable?(activity, user) do
|
def is_announceable?(activity, user, public \\ true) do
|
||||||
is_public?(activity) || activity.data["actor"] == user.ap_id
|
is_public?(activity) ||
|
||||||
|
(!public && is_private?(activity) && activity.data["actor"] == user.ap_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_direct?(%Activity{data: %{"directMessage" => true}}), do: true
|
def is_direct?(%Activity{data: %{"directMessage" => true}}), do: true
|
||||||
|
|
Loading…
Reference in a new issue