alias Pleroma.Web.Preload.Providers.Provider
@behaviour Provider
- @public_url :"/api/v1/timelines/public"
+ @public_url "/api/v1/timelines/public"
@impl Provider
- def generate_terms(_params) do
- build_public_tag(%{})
+ def generate_terms(params) do
+ build_public_tag(%{}, params)
end
- def build_public_tag(acc) do
- if Pleroma.Config.get([:restrict_unauthenticated, :timelines, :federated], true) do
+ def build_public_tag(acc, params) do
+ if Pleroma.Config.restrict_unauthenticated_access?(:timelines, :federated) do
acc
else
- Map.put(acc, @public_url, public_timeline(nil))
+ Map.put(acc, @public_url, public_timeline(params))
end
end
- defp public_timeline(user) do
- activities =
- create_timeline_params(user)
- |> Map.put("local_only", false)
- |> ActivityPub.fetch_public_activities()
+ defp public_timeline(%{"path" => ["main", "all"]}), do: get_public_timeline(false)
- StatusView.render("index.json", activities: activities, for: user, as: :activity)
- end
+ defp public_timeline(_params), do: get_public_timeline(true)
+
+ defp get_public_timeline(local_only) do
+ activities =
+ ActivityPub.fetch_public_activities(%{
+ type: ["Create"],
+ local_only: local_only
+ })
- defp create_timeline_params(user) do
- %{}
- |> Map.put("type", ["Create", "Announce"])
- |> Map.put("blocking_user", user)
- |> Map.put("muting_user", user)
- |> Map.put("user", user)
+ StatusView.render("index.json", activities: activities, for: nil, as: :activity)
end
end