aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-07-11 16:36:08 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-07-11 16:36:08 +0700
commit958fb9aa8082eabf63b106007b3bef09847cafc6 (patch)
tree7f7ca16c3bc064100ddd8faa097841be5ced276e /lib
parent182f7bbb1170c44eac4ab4a9efa4ff0bff991c98 (diff)
downloadpleroma-958fb9aa8082eabf63b106007b3bef09847cafc6.tar.gz
Add "listMessage"
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/publisher.ex1
-rw-r--r--lib/pleroma/web/common_api/common_api.ex26
-rw-r--r--lib/pleroma/web/common_api/utils.ex15
3 files changed, 26 insertions, 16 deletions
diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex
index b7dc90caa..ffdd33351 100644
--- a/lib/pleroma/web/activity_pub/publisher.ex
+++ b/lib/pleroma/web/activity_pub/publisher.ex
@@ -136,7 +136,6 @@ defmodule Pleroma.Web.ActivityPub.Publisher do
json =
data
|> Map.put("cc", cc)
- |> Map.put("directMessage", true)
|> Jason.encode!()
Pleroma.Web.Federator.Publisher.enqueue_one(__MODULE__, %{
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex
index 8e3892bdf..1c47a31d7 100644
--- a/lib/pleroma/web/common_api/common_api.ex
+++ b/lib/pleroma/web/common_api/common_api.ex
@@ -215,7 +215,6 @@ defmodule Pleroma.Web.CommonAPI do
addressed_users <- get_addressed_users(mentioned_users, data["to"]),
{poll, poll_emoji} <- make_poll_data(data),
{to, cc} <- get_to_and_cc(user, addressed_users, in_reply_to, visibility),
- bcc <- bcc_for_list(user, visibility),
context <- make_context(in_reply_to),
cw <- data["spoiler_text"] || "",
sensitive <- data["sensitive"] || Enum.member?(tags, {"#nsfw", "nsfw"}),
@@ -241,16 +240,21 @@ defmodule Pleroma.Web.CommonAPI do
"emoji",
Map.merge(Formatter.get_emoji_map(full_payload), poll_emoji)
) do
- ActivityPub.create(
- %{
- to: to,
- actor: user,
- context: context,
- object: object,
- additional: %{"cc" => cc, "bcc" => bcc, "directMessage" => visibility == "direct"}
- },
- Pleroma.Web.ControllerHelper.truthy_param?(data["preview"]) || false
- )
+ preview? = Pleroma.Web.ControllerHelper.truthy_param?(data["preview"]) || false
+ direct? = visibility == "direct"
+
+ additional_data =
+ %{"cc" => cc, "directMessage" => direct?} |> maybe_add_list_data(user, visibility)
+
+ params = %{
+ to: to,
+ actor: user,
+ context: context,
+ object: object,
+ additional: additional_data
+ }
+
+ ActivityPub.create(params, preview?)
else
{:private_to_public, true} ->
{:error, dgettext("errors", "The message visibility must be direct")}
diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex
index d4bfdd7e4..94b2c50fc 100644
--- a/lib/pleroma/web/common_api/utils.ex
+++ b/lib/pleroma/web/common_api/utils.ex
@@ -108,12 +108,19 @@ defmodule Pleroma.Web.CommonAPI.Utils do
def get_addressed_users(mentioned_users, _), do: mentioned_users
- def bcc_for_list(user, {:list, list_id}) do
- list = Pleroma.List.get(list_id, user)
- [list.ap_id]
+ def maybe_add_list_data(additional_data, user, {:list, list_id}) do
+ case Pleroma.List.get(list_id, user) do
+ %Pleroma.List{} = list ->
+ additional_data
+ |> Map.put("listMessage", list.ap_id)
+ |> Map.put("bcc", [list.ap_id])
+
+ _ ->
+ additional_data
+ end
end
- def bcc_for_list(_, _), do: []
+ def maybe_add_list_data(additional_data, _, _), do: additional_data
def make_poll_data(%{"poll" => %{"options" => options, "expires_in" => expires_in}} = data)
when is_list(options) do