alias Pleroma.HTML
alias Pleroma.Repo
alias Pleroma.User
+ alias Pleroma.Web.CommonAPI
alias Pleroma.Web.CommonAPI.Utils
- alias Pleroma.Web.MediaProxy
alias Pleroma.Web.MastodonAPI.AccountView
alias Pleroma.Web.MastodonAPI.StatusView
+ alias Pleroma.Web.MediaProxy
# TODO: Add cached version.
defp get_replied_to_activities(activities) do
end
end
+ defp get_context_id(%{data: %{"context_id" => context_id}}) when not is_nil(context_id),
+ do: context_id
+
+ defp get_context_id(%{data: %{"context" => context}}) when is_binary(context),
+ do: Utils.context_to_conversation_id(context)
+
+ defp get_context_id(_), do: nil
+
def render("index.json", opts) do
replied_to_activities = get_replied_to_activities(opts.activities)
website: nil
},
language: nil,
- emojis: []
+ emojis: [],
+ pleroma: %{
+ local: activity.local
+ }
}
end
card = render("card.json", Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity))
+ url =
+ if user.local do
+ Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, activity)
+ else
+ object["external_url"] || object["id"]
+ end
+
%{
id: to_string(activity.id),
uri: object["id"],
- url: object["external_url"] || object["id"],
+ url: url,
account: AccountView.render("account.json", %{user: user}),
in_reply_to_id: reply_to && to_string(reply_to.id),
in_reply_to_account_id: reply_to_user && to_string(reply_to_user.id),
content: content,
created_at: created_at,
reblogs_count: announcement_count,
- replies_count: 0,
+ replies_count: object["repliesCount"] || 0,
favourites_count: like_count,
reblogged: present?(repeated),
favourited: present?(favorited),
bookmarked: present?(bookmarked),
- muted: false,
+ muted: CommonAPI.thread_muted?(user, activity) || User.mutes?(opts[:for], user),
pinned: pinned?(activity, user),
sensitive: sensitive,
spoiler_text: object["summary"] || "",
visibility: get_visibility(object),
- media_attachments: attachments |> Enum.take(4),
+ media_attachments: attachments,
mentions: mentions,
tags: build_tags(tags),
application: %{
website: nil
},
language: nil,
- emojis: build_emojis(activity.data["object"]["emoji"])
+ emojis: build_emojis(activity.data["object"]["emoji"]),
+ pleroma: %{
+ local: activity.local,
+ conversation_id: get_context_id(activity)
+ }
}
end
end
def render("card.json", %{rich_media: rich_media, page_url: page_url}) do
- page_url = rich_media[:url] || page_url
page_url_data = URI.parse(page_url)
+ page_url_data =
+ if rich_media[:url] != nil do
+ URI.merge(page_url_data, URI.parse(rich_media[:url]))
+ else
+ page_url_data
+ end
+
+ page_url = page_url_data |> to_string
+
image_url =
- with %URI{host: nil} <- page_url_data do
- rich_media[:image]
+ if rich_media[:image] != nil do
+ URI.merge(page_url_data, URI.parse(rich_media[:image]))
+ |> to_string
else
- _ ->
- URI.merge(page_url_data, URI.parse(rich_media[:image]))
- |> to_string
+ nil
end
site_name = rich_media[:site_name] || page_url_data.host
preview_url: href,
text_url: href,
type: type,
- description: attachment["name"]
+ description: attachment["name"],
+ pleroma: %{mime_type: media_type}
}
end