- def to_map(%Activity{} = activity, %{user: user} = opts) do
- content = get_in(activity.data, ["object", "content"])
- created_at = get_in(activity.data, ["object", "published"])
- |> date_to_asctime
- like_count = get_in(activity.data, ["object", "like_count"]) || 0
- announcement_count = get_in(activity.data, ["object", "announcement_count"]) || 0
- favorited = opts[:for] && opts[:for].ap_id in (activity.data["object"]["likes"] || [])
- repeated = opts[:for] && opts[:for].ap_id in (activity.data["object"]["announcements"] || [])
+ # TODO:
+ # Make this more proper. Just a placeholder to not break the frontend.
+ def to_map(
+ %Activity{
+ data: %{"type" => "Undo", "published" => created_at, "object" => undid_activity}
+ } = activity,
+ %{user: user} = opts
+ ) do
+ created_at = created_at |> Utils.date_to_asctime()
+
+ text = "#{user.nickname} undid the action at #{undid_activity["id"]}"
+
+ %{
+ "id" => activity.id,
+ "user" => UserView.render("show.json", %{user: user, for: opts[:for]}),
+ "attentions" => [],
+ "statusnet_html" => text,
+ "text" => text,
+ "is_local" => activity.local,
+ "is_post_verb" => false,
+ "created_at" => created_at,
+ "in_reply_to_status_id" => nil,
+ "external_url" => activity.data["id"],
+ "activity_type" => "undo"
+ }
+ end
+
+ def to_map(
+ %Activity{data: %{"type" => "Delete", "published" => created_at, "object" => _}} =
+ activity,
+ %{user: user} = opts
+ ) do
+ created_at = created_at |> Utils.date_to_asctime()
+
+ %{
+ "id" => activity.id,
+ "uri" => activity.data["object"],
+ "user" => UserView.render("show.json", %{user: user, for: opts[:for]}),
+ "attentions" => [],
+ "statusnet_html" => "deleted notice {{tag",
+ "text" => "deleted notice {{tag",
+ "is_local" => activity.local,
+ "is_post_verb" => false,
+ "created_at" => created_at,
+ "in_reply_to_status_id" => nil,
+ "external_url" => activity.data["id"],
+ "activity_type" => "delete"
+ }
+ end
+
+ def to_map(
+ %Activity{data: %{"object" => %{"content" => _content} = object}} = activity,
+ %{user: user} = opts
+ ) do
+ created_at = object["published"] |> Utils.date_to_asctime()
+ like_count = object["like_count"] || 0
+ announcement_count = object["announcement_count"] || 0
+ favorited = opts[:for] && opts[:for].ap_id in (object["likes"] || [])
+ repeated = opts[:for] && opts[:for].ap_id in (object["announcements"] || [])
+ pinned = activity.id in user.info.pinned_activities