defmodule Pleroma.Web.MastodonAPI.StatusView do
use Pleroma.Web, :view
- alias Pleroma.{Activity, HTML, Repo, User}
+ alias Pleroma.Activity
+ alias Pleroma.HTML
+ alias Pleroma.Repo
+ alias Pleroma.User
+ alias Pleroma.Web.CommonAPI
alias Pleroma.Web.CommonAPI.Utils
- alias Pleroma.Web.MastodonAPI.{AccountView, StatusView}
+ alias Pleroma.Web.MastodonAPI.AccountView
+ alias Pleroma.Web.MastodonAPI.StatusView
alias Pleroma.Web.MediaProxy
# TODO: Add cached version.
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),
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
+ }
}
end
preview_url: href,
text_url: href,
type: type,
- description: attachment["name"]
+ description: attachment["name"],
+ pleroma: %{mime_type: media_type}
}
end