- render(conn, "profile.html", %{
- user: User.sanitize_html(user),
- timeline: timeline,
- prev_page_id: prev_page_id,
- next_page_id: next_page_id,
- meta: meta
- })
+ timeline =
+ case tab do
+ tab when tab in ["posts", "with_replies", "media"] ->
+ user
+ |> ActivityPub.fetch_user_activities(_reading_user = nil, params)
+ |> Enum.map(&represent/1)
+
+ "following" when not user.hide_follows ->
+ User.get_friends(user)
+
+ "followers" when not user.hide_followers ->
+ User.get_followers(user)
+
+ _ ->
+ []
+ end
+
+ prev_page_id =
+ (params["min_id"] || params["max_id"]) &&
+ List.first(timeline) && List.first(timeline).id
+
+ next_page_id = List.last(timeline) && List.last(timeline).id
+
+ render(conn, "profile.html", %{
+ user: User.sanitize_html(user),
+ timeline: timeline,
+ prev_page_id: prev_page_id,
+ next_page_id: next_page_id,
+ meta: meta
+ })
+ else
+ {_, %User{} = user} ->
+ conn
+ |> put_status(:found)
+ |> redirect(external: user.uri || user.ap_id)