render_many(opts.activities, StatusView, "status.json", opts)
end
+ def render("status.json", %{activity: %{data: %{"type" => "Announce", "object" => object}} = activity} = opts) do
+ user = User.get_cached_by_ap_id(activity.data["actor"])
+ created_at = Utils.to_masto_date(activity.data["published"])
+
+ reblogged = Activity.get_create_activity_by_object_ap_id(object)
+ reblogged = render("status.json", Map.put(opts, :activity, reblogged))
+
+ mentions = activity.data["to"]
+ |> Enum.map(fn (ap_id) -> User.get_cached_by_ap_id(ap_id) end)
+ |> Enum.filter(&(&1))
+ |> Enum.map(fn (user) -> AccountView.render("mention.json", %{user: user}) end)
+
+ %{
+ id: activity.id,
+ uri: object,
+ url: nil,
+ account: AccountView.render("account.json", %{user: user}),
+ in_reply_to_id: nil,
+ in_reply_to_account_id: nil,
+ reblog: reblogged,
+ content: reblogged[:content],
+ created_at: created_at,
+ reblogs_count: 0,
+ favourites_count: 0,
+ reblogged: 0,
+ favourited: 0,
+ muted: false,
+ sensitive: false,
+ spoiler_text: "",
+ visibility: "public",
+ media_attachments: [],
+ mentions: mentions,
+ tags: [],
+ application: %{
+ name: "Web",
+ website: nil
+ },
+ language: nil
+ }
+ end
+
def render("status.json", %{activity: %{data: %{"object" => object}} = activity} = opts) do
user = User.get_cached_by_ap_id(activity.data["actor"])
alias Pleroma.Web.MastodonAPI.{StatusView, AccountView}
alias Pleroma.User
alias Pleroma.Web.OStatus
+ alias Pleroma.Web.CommonAPI
import Pleroma.Factory
test "a note activity" do
object = Map.put(object, "id", 2)
assert %{id: 2} = StatusView.render("attachment.json", %{attachment: object})
end
+
+ test "a reblog" do
+ user = insert(:user)
+ activity = insert(:note_activity)
+
+ {:ok, reblog, _} = CommonAPI.repeat(activity.id, user)
+
+ represented = StatusView.render("status.json", %{for: user, activity: reblog})
+
+ assert represented[:id] == reblog.id
+ assert represented[:reblog][:id] == activity.id
+ end
end