+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
defmodule Pleroma.Web.OStatus.ActivityRepresenter do
- alias Pleroma.{Activity, User, Object}
+ alias Pleroma.Activity
+ alias Pleroma.User
+ alias Pleroma.Object
alias Pleroma.Web.OStatus.UserRepresenter
- alias Pleroma.Formatter
+
require Logger
defp get_href(id) do
_in_reply_to = get_in_reply_to(activity.data)
author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
- retweeted_activity = Activity.get_create_activity_by_object_ap_id(activity.data["object"])
+ retweeted_activity = Activity.get_create_by_object_ap_id(activity.data["object"])
retweeted_user = User.get_cached_by_ap_id(retweeted_activity.data["actor"])
retweeted_xml = to_simple_form(retweeted_activity, retweeted_user, true)
- mentions = activity.recipients |> get_mentions
+ mentions =
+ ([retweeted_user.ap_id] ++ activity.recipients)
+ |> Enum.uniq()
+ |> get_mentions()
[
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
end
# Only undos of follow for now. Will need to get redone once there are more
- def to_simple_form(%{data: %{"type" => "Undo"}} = activity, user, with_author) do
+ def to_simple_form(
+ %{data: %{"type" => "Undo", "object" => %{"type" => "Follow"} = follow_activity}} =
+ activity,
+ user,
+ with_author
+ ) do
h = fn str -> [to_charlist(str)] end
updated_at = activity.data["published"]
author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
- follow_activity =
- if is_map(activity.data["object"]) do
- Activity.get_by_ap_id(activity.data["object"]["id"])
- else
- Activity.get_by_ap_id(activity.data["object"])
- end
-
mentions = (activity.recipients || []) |> get_mentions
+ follow_activity = Activity.normalize(follow_activity)
[
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},