summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authortusooa <tusooa@kazv.moe>2023-07-10 18:27:23 -0400
committertusooa <tusooa@kazv.moe>2023-09-13 19:19:05 -0400
commit9bcec87aba5ce4de6b61b5a95d6832da9dfa0fd8 (patch)
tree4b671dd9a5029ca538d203166029a726fa08f580 /lib
parentb0a7e795e799d3c8d750ab909657ec7b3d0bfd58 (diff)
downloadpleroma-9bcec87aba5ce4de6b61b5a95d6832da9dfa0fd8.tar.gz
pleroma-9bcec87aba5ce4de6b61b5a95d6832da9dfa0fd8.zip
Allow local quote and private self-quote
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/common_api/activity_draft.ex14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/pleroma/web/common_api/activity_draft.ex b/lib/pleroma/web/common_api/activity_draft.ex
index d4875765c..32921aa5a 100644
--- a/lib/pleroma/web/common_api/activity_draft.ex
+++ b/lib/pleroma/web/common_api/activity_draft.ex
@@ -167,9 +167,21 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do
end
end
+ defp can_quote?(_draft, _object, visibility) when visibility in ~w(public unlisted local) do
+ true
+ end
+
+ defp can_quote?(draft, object, "private") do
+ draft.user.ap_id == object.data["actor"]
+ end
+
+ defp can_quote?(_, _, _) do
+ false
+ end
+
defp quoting_visibility(%{quote_post: %Activity{}} = draft) do
with %Object{} = object <- Object.normalize(draft.quote_post, fetch: false),
- visibility when visibility in ~w(public unlisted) <- Visibility.get_visibility(object) do
+ true <- can_quote?(draft, object, Visibility.get_visibility(object)) do
draft
else
_ -> add_error(draft, dgettext("errors", "Cannot quote private message"))