commit: b975dce9ba8d417f7886d68586de1fad5621f7ec
parent d15f98bdecbca504576feace7137487855f411fc
Author: nicole mikołajczyk <git@mkljczk.pl>
Date: Sat, 1 Nov 2025 11:43:08 +0100
Add `timelines_access` to InstanceView
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
Diffstat:
3 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/changelog.d/instance-view-timeline-access.add b/changelog.d/instance-view-timeline-access.add
@@ -0,0 +1 @@
+Add `timelines_access` to InstanceView
diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex
@@ -257,10 +257,34 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
vapid: %{
public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key)
},
- translation: %{enabled: Pleroma.Language.Translation.configured?()}
+ translation: %{enabled: Pleroma.Language.Translation.configured?()},
+ timelines_access: %{
+ live_feeds: timelines_access(),
+ hashtag_feeds: timelines_access(),
+ # not implemented in Pleroma
+ trending_link_feeds: %{
+ local: "disabled",
+ remote: "disabled"
+ }
+ }
})
end
+ defp timelines_access do
+ %{
+ local: timeline_access(:local),
+ remote: timeline_access(:federated)
+ }
+ end
+
+ defp timeline_access(kind) do
+ if Config.restrict_unauthenticated_access?(:timelines, kind) do
+ "authenticated"
+ else
+ "public"
+ end
+ end
+
defp pleroma_configuration(instance) do
base_urls = %{}
diff --git a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs
@@ -194,4 +194,28 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do
refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "media_proxy")
refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "upload")
end
+
+ test "display timeline access restrictions", %{conn: conn} do
+ clear_config([:restrict_unauthenticated, :timelines, :local], true)
+ clear_config([:restrict_unauthenticated, :timelines, :federated], false)
+
+ conn = get(conn, "/api/v2/instance")
+
+ assert result = json_response_and_validate_schema(conn, 200)
+
+ assert result["configuration"]["timelines_access"] == %{
+ "live_feeds" => %{
+ "local" => "authenticated",
+ "remote" => "public"
+ },
+ "hashtag_feeds" => %{
+ "local" => "authenticated",
+ "remote" => "public"
+ },
+ "trending_link_feeds" => %{
+ "local" => "disabled",
+ "remote" => "disabled"
+ }
+ }
+ end
end