+ def to_simple_form(%{data: %{"type" => "Follow"}} = activity, user, with_author) do
+ h = fn str -> [to_charlist(str)] end
+
+ updated_at = activity.data["published"]
+ inserted_at = activity.data["published"]
+
+ author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
+
+ mentions = (activity.recipients || []) |> get_mentions
+
+ [
+ {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
+ {:"activity:verb", ['http://activitystrea.ms/schema/1.0/follow']},
+ {:id, h.(activity.data["id"])},
+ {:title, ['#{user.nickname} started following #{activity.data["object"]}']},
+ {:content, [type: 'html'],
+ ['#{user.nickname} started following #{activity.data["object"]}']},
+ {:published, h.(inserted_at)},
+ {:updated, h.(updated_at)},
+ {:"activity:object",
+ [
+ {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/person']},
+ {:id, h.(activity.data["object"])},
+ {:uri, h.(activity.data["object"])}
+ ]},
+ {:link, [rel: 'self', type: ['application/atom+xml'], href: h.(activity.data["id"])], []}
+ ] ++ mentions ++ author
+ 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
+ h = fn str -> [to_charlist(str)] end
+
+ updated_at = activity.data["published"]
+ inserted_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
+
+ case follow_activity.data["type"] do
+ "Follow" ->
+ [
+ {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
+ {:"activity:verb", ['http://activitystrea.ms/schema/1.0/unfollow']},
+ {:id, h.(activity.data["id"])},
+ {:title, ['#{user.nickname} stopped following #{follow_activity.data["object"]}']},
+ {:content, [type: 'html'],
+ ['#{user.nickname} stopped following #{follow_activity.data["object"]}']},
+ {:published, h.(inserted_at)},
+ {:updated, h.(updated_at)},
+ {:"activity:object",
+ [
+ {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/person']},
+ {:id, h.(follow_activity.data["object"])},
+ {:uri, h.(follow_activity.data["object"])}
+ ]},
+ {:link, [rel: 'self', type: ['application/atom+xml'], href: h.(activity.data["id"])],
+ []}
+ ] ++ mentions ++ author
+
+ _ -> []
+ end
+ end
+
+ def to_simple_form(%{data: %{"type" => "Delete"}} = activity, user, with_author) do
+ h = fn str -> [to_charlist(str)] end
+
+ updated_at = activity.data["published"]
+ inserted_at = activity.data["published"]
+
+ author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
+
+ [
+ {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
+ {:"activity:verb", ['http://activitystrea.ms/schema/1.0/delete']},
+ {:id, h.(activity.data["object"])},
+ {:title, ['An object was deleted']},
+ {:content, [type: 'html'], ['An object was deleted']},
+ {:published, h.(inserted_at)},
+ {:updated, h.(updated_at)}
+ ] ++ author