summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/common_api/common_api.ex2
-rw-r--r--lib/pleroma/web/common_api/utils.ex16
2 files changed, 16 insertions, 2 deletions
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex
index 50074b8b0..ef79b9c5d 100644
--- a/lib/pleroma/web/common_api/common_api.ex
+++ b/lib/pleroma/web/common_api/common_api.ex
@@ -90,7 +90,7 @@ defmodule Pleroma.Web.CommonAPI do
limit = Pleroma.Config.get([:instance, :limit])
with status <- String.trim(status),
- attachments <- attachments_from_ids(data["media_ids"], data["descriptions"]),
+ attachments <- attachments_from_ids(data),
mentions <- Formatter.parse_mentions(status),
inReplyTo <- get_replied_to_activity(data["in_reply_to_status_id"]),
{to, cc} <- to_for_user_and_mentions(user, mentions, inReplyTo, visibility),
diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex
index 5fe21fb99..59df48ed6 100644
--- a/lib/pleroma/web/common_api/utils.ex
+++ b/lib/pleroma/web/common_api/utils.ex
@@ -32,7 +32,21 @@ defmodule Pleroma.Web.CommonAPI.Utils do
def get_replied_to_activity(_), do: nil
- def attachments_from_ids(ids, descs_str) do
+ def attachments_from_ids(data) do
+ if Map.has_key?(data, "descriptions") do
+ attachments_from_ids_descs(data["media_ids"], data["descriptions"])
+ else
+ attachments_from_ids_no_descs(data["media_ids"])
+ end
+ end
+
+ def attachments_from_ids_no_descs(ids) do
+ Enum.map(ids || [], fn media_id ->
+ Repo.get(Object, media_id).data
+ end)
+ end
+
+ def attachments_from_ids_descs(ids, descs_str) do
{_, descs} = Jason.decode(descs_str)
Enum.map(ids || [], fn media_id ->