Merge remote-tracking branch 'upstream/develop' into by-approval
[akkoma] / lib / pleroma / web / mastodon_api / views / instance_view.ex
index 6a630eafac491d87a524e39090a98be294ccd25d..ea2d3aa9c9603cb26ee30b4bb7c9bb6c42fd8a3c 100644 (file)
@@ -23,9 +23,10 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
         streaming_api: Pleroma.Web.Endpoint.websocket_url()
       },
       stats: Pleroma.Stats.get_stats(),
-      thumbnail: instance_thumbnail(),
+      thumbnail: Keyword.get(instance, :instance_thumbnail),
       languages: ["en"],
       registrations: Keyword.get(instance, :registrations_open),
+      approval_required: Keyword.get(instance, :account_approval_required),
       # Extra (not present in Mastodon):
       max_toot_chars: Keyword.get(instance, :limit),
       poll_limits: Keyword.get(instance, :poll_limits),
@@ -34,10 +35,15 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
       background_upload_limit: Keyword.get(instance, :background_upload_limit),
       banner_upload_limit: Keyword.get(instance, :banner_upload_limit),
       background_image: Keyword.get(instance, :background_image),
+      chat_limit: Keyword.get(instance, :chat_limit),
+      description_limit: Keyword.get(instance, :description_limit),
       pleroma: %{
         metadata: %{
+          account_activation_required: Keyword.get(instance, :account_activation_required),
           features: features(),
-          federation: federation()
+          federation: federation(),
+          fields_limits: fields_limits(),
+          post_formats: Config.get([:instance, :allowed_post_formats])
         },
         vapid_public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key)
       }
@@ -69,7 +75,8 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
       if Config.get([:instance, :safe_dm_mentions]) do
         "safe_dm_mentions"
       end,
-      "pleroma_emoji_reactions"
+      "pleroma_emoji_reactions",
+      "pleroma_chat_messages"
     ]
     |> Enum.filter(& &1)
   end
@@ -77,7 +84,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
   def federation do
     quarantined = Config.get([:instance, :quarantined_instances], [])
 
-    if Config.get([:instance, :mrf_transparency]) do
+    if Config.get([:mrf, :transparency]) do
       {:ok, data} = MRF.describe()
 
       data
@@ -88,8 +95,12 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
     |> Map.put(:enabled, Config.get([:instance, :federating]))
   end
 
-  defp instance_thumbnail do
-    Pleroma.Config.get([:instance, :instance_thumbnail]) ||
-      "#{Pleroma.Web.base_url()}/instance/thumbnail.jpeg"
+  def fields_limits do
+    %{
+      max_fields: Config.get([:instance, :max_account_fields]),
+      max_remote_fields: Config.get([:instance, :max_remote_account_fields]),
+      name_length: Config.get([:instance, :account_field_name_length]),
+      value_length: Config.get([:instance, :account_field_value_length])
+    }
   end
 end