diff options
| author | lain <lain@soykaf.club> | 2019-11-10 11:20:20 +0000 | 
|---|---|---|
| committer | lain <lain@soykaf.club> | 2019-11-10 11:20:20 +0000 | 
| commit | 3a1aaadc18372fb8c76fa72cd20ed65dd85b2326 (patch) | |
| tree | 1e1cd55fa0f4f4ea867e7fbc3c14e82e3c67ee90 /lib | |
| parent | 8b8d705ce6768ebe5812b4d4563eade85220f9cf (diff) | |
| parent | e08bd99bab2bcdcbcea68c383dd94952f60e0194 (diff) | |
| download | pleroma-3a1aaadc18372fb8c76fa72cd20ed65dd85b2326.tar.gz pleroma-3a1aaadc18372fb8c76fa72cd20ed65dd85b2326.zip  | |
Merge branch 'issue/1339' into 'develop'
[#1339] add subject to atom feed
See merge request pleroma/pleroma!1961
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 1 | ||||
| -rw-r--r-- | lib/pleroma/web/feed/feed_controller.ex | 21 | ||||
| -rw-r--r-- | lib/pleroma/web/feed/feed_view.ex | 35 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/templates/feed/feed/_activity.xml.eex | 8 | ||||
| -rw-r--r-- | lib/pleroma/web/templates/feed/feed/feed.xml.eex | 2 | 
6 files changed, 36 insertions, 33 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 51a9c6169..65dd251f3 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -568,7 +568,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do      |> fetch_activities_query(opts)      |> restrict_unlisted()      |> Pagination.fetch_paginated(opts, pagination) -    |> Enum.reverse()    end    @valid_visibilities ~w[direct unlisted public private] diff --git a/lib/pleroma/web/feed/feed_controller.ex b/lib/pleroma/web/feed/feed_controller.ex index d91ecef9c..d0e23007d 100644 --- a/lib/pleroma/web/feed/feed_controller.ex +++ b/lib/pleroma/web/feed/feed_controller.ex @@ -33,21 +33,22 @@ defmodule Pleroma.Web.Feed.FeedController do    def feed(conn, %{"nickname" => nickname} = params) do      with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname(nickname)} do -      query_params = -        params -        |> Map.take(["max_id"]) -        |> Map.put("type", ["Create"]) -        |> Map.put("whole_db", true) -        |> Map.put("actor_id", user.ap_id) -        activities = -        query_params +        %{ +          "type" => ["Create"], +          "whole_db" => true, +          "actor_id" => user.ap_id +        } +        |> Map.merge(Map.take(params, ["max_id"]))          |> ActivityPub.fetch_public_activities() -        |> Enum.reverse()        conn        |> put_resp_content_type("application/atom+xml") -      |> render("feed.xml", user: user, activities: activities) +      |> render("feed.xml", +        user: user, +        activities: activities, +        feed_config: Pleroma.Config.get([:feed]) +      )      end    end diff --git a/lib/pleroma/web/feed/feed_view.ex b/lib/pleroma/web/feed/feed_view.ex index 5eef1e757..bb1332fd3 100644 --- a/lib/pleroma/web/feed/feed_view.ex +++ b/lib/pleroma/web/feed/feed_view.ex @@ -6,12 +6,23 @@ defmodule Pleroma.Web.Feed.FeedView do    use Phoenix.HTML    use Pleroma.Web, :view +  alias Pleroma.Formatter    alias Pleroma.Object    alias Pleroma.User    alias Pleroma.Web.MediaProxy    require Pleroma.Constants +  def prepare_activity(activity) do +    object = activity_object(activity) + +    %{ +      activity: activity, +      data: Map.get(object, :data), +      object: object +    } +  end +    def most_recent_update(activities, user) do      (List.first(activities) || user).updated_at      |> NaiveDateTime.to_iso8601() @@ -23,31 +34,23 @@ defmodule Pleroma.Web.Feed.FeedView do      |> MediaProxy.url()    end -  def last_activity(activities) do -    List.last(activities) -  end +  def last_activity(activities), do: List.last(activities) -  def activity_object(activity) do -    Object.normalize(activity) -  end +  def activity_object(activity), do: Object.normalize(activity) -  def activity_object_data(activity) do -    activity -    |> activity_object() -    |> Map.get(:data) +  def activity_title(%{data: %{"content" => content}}, opts \\ %{}) do +    content +    |> Formatter.truncate(opts[:max_length], opts[:omission]) +    |> escape()    end -  def activity_content(activity) do -    content = activity_object_data(activity)["content"] - +  def activity_content(%{data: %{"content" => content}}) do      content      |> String.replace(~r/[\n\r]/, "")      |> escape()    end -  def activity_context(activity) do -    activity.data["context"] -  end +  def activity_context(activity), do: activity.data["context"]    def attachment_href(attachment) do      attachment["url"] diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index f2d2d3ccb..384159336 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -71,7 +71,6 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do        |> Map.put("blocking_user", user)        |> Map.put("muting_user", user)        |> ActivityPub.fetch_public_activities() -      |> Enum.reverse()      conn      |> add_link_headers(activities, %{"local" => local_only}) @@ -110,7 +109,6 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do        |> Map.put("tag_all", tag_all)        |> Map.put("tag_reject", tag_reject)        |> ActivityPub.fetch_public_activities() -      |> Enum.reverse()      conn      |> add_link_headers(activities, %{"local" => local_only}) diff --git a/lib/pleroma/web/templates/feed/feed/_activity.xml.eex b/lib/pleroma/web/templates/feed/feed/_activity.xml.eex index d1f5e903c..514eacaed 100644 --- a/lib/pleroma/web/templates/feed/feed/_activity.xml.eex +++ b/lib/pleroma/web/templates/feed/feed/_activity.xml.eex @@ -2,11 +2,13 @@    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>    <id><%= @data["id"] %></id> -  <title><%= "New note by #{@user.nickname}" %></title> -  <content type="html"><%= activity_content(@activity) %></content> +  <title><%= activity_title(@object, Keyword.get(@feed_config, :post_title, %{})) %></title> +  <content type="html"><%= activity_content(@object) %></content>    <published><%= @data["published"] %></published>    <updated><%= @data["published"] %></updated> -  <ostatus:conversation ref="<%= activity_context(@activity) %>"><%= activity_context(@activity) %></ostatus:conversation> +  <ostatus:conversation ref="<%= activity_context(@activity) %>"> +    <%= activity_context(@activity) %> +  </ostatus:conversation>    <link ref="<%= activity_context(@activity) %>" rel="ostatus:conversation"/>    <%= if @data["summary"] do %> diff --git a/lib/pleroma/web/templates/feed/feed/feed.xml.eex b/lib/pleroma/web/templates/feed/feed/feed.xml.eex index 45df9dc09..5ae36d345 100644 --- a/lib/pleroma/web/templates/feed/feed/feed.xml.eex +++ b/lib/pleroma/web/templates/feed/feed/feed.xml.eex @@ -19,6 +19,6 @@    <% end %>    <%= for activity <- @activities do %> -    <%= render @view_module, "_activity.xml", Map.merge(assigns, %{activity: activity, data: activity_object_data(activity)}) %> +  <%= render @view_module, "_activity.xml", Map.merge(assigns, prepare_activity(activity)) %>    <% end %>  </feed>  | 
