From a5bbebda588a54cb76d1a75239523db676980eb0 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 19 May 2021 13:38:01 -0500 Subject: Fix InstanceView recompilation issue --- .../web/mastodon_api/views/instance_view.ex | 62 ++------------------- lib/pleroma/web/nodeinfo/nodeinfo.ex | 63 +++++++++++++++++++--- 2 files changed, 61 insertions(+), 64 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex index 73205fb6d..af0d6a8a8 100644 --- a/lib/pleroma/web/mastodon_api/views/instance_view.ex +++ b/lib/pleroma/web/mastodon_api/views/instance_view.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do use Pleroma.Web, :view alias Pleroma.Config - alias Pleroma.Web.ActivityPub.MRF + alias Pleroma.Web.Nodeinfo.Nodeinfo @mastodon_api_level "2.7.2" @@ -40,9 +40,9 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do pleroma: %{ metadata: %{ account_activation_required: Keyword.get(instance, :account_activation_required), - features: features(), - federation: federation(), - fields_limits: fields_limits(), + features: Nodeinfo.features(), + federation: Nodeinfo.federation(), + fields_limits: Nodeinfo.fields_limits(), post_formats: Config.get([:instance, :allowed_post_formats]) }, stats: %{mau: Pleroma.User.active_user_count()}, @@ -50,58 +50,4 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do } } end - - def features do - [ - "pleroma_api", - "mastodon_api", - "mastodon_api_streaming", - "polls", - "pleroma_explicit_addressing", - "shareable_emoji_packs", - "multifetch", - "pleroma:api/v1/notifications:include_types_filter", - if Config.get([:media_proxy, :enabled]) do - "media_proxy" - end, - if Config.get([:gopher, :enabled]) do - "gopher" - end, - if Config.get([:chat, :enabled]) do - "chat" - end, - if Config.get([:instance, :allow_relay]) do - "relay" - end, - if Config.get([:instance, :safe_dm_mentions]) do - "safe_dm_mentions" - end, - "pleroma_emoji_reactions", - "pleroma_chat_messages" - ] - |> Enum.filter(& &1) - end - - def federation do - quarantined = Config.get([:instance, :quarantined_instances], []) - - if Config.get([:mrf, :transparency]) do - {:ok, data} = MRF.describe() - - data - |> Map.merge(%{quarantined_instances: quarantined}) - else - %{} - end - |> Map.put(:enabled, Config.get([:instance, :federating])) - end - - 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 diff --git a/lib/pleroma/web/nodeinfo/nodeinfo.ex b/lib/pleroma/web/nodeinfo/nodeinfo.ex index 6a0112d2a..b2b6d187d 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo.ex @@ -6,8 +6,8 @@ defmodule Pleroma.Web.Nodeinfo.Nodeinfo do alias Pleroma.Config alias Pleroma.Stats alias Pleroma.User + alias Pleroma.Web.ActivityPub.MRF alias Pleroma.Web.Federator.Publisher - alias Pleroma.Web.MastodonAPI.InstanceView # returns a nodeinfo 2.0 map, since 2.1 just adds a repository field # under software. @@ -18,9 +18,6 @@ defmodule Pleroma.Web.Nodeinfo.Nodeinfo do User.all_superusers() |> Enum.map(fn u -> u.ap_id end) - federation = InstanceView.federation() - features = InstanceView.features() - %{ version: "2.0", software: %{ @@ -47,7 +44,7 @@ defmodule Pleroma.Web.Nodeinfo.Nodeinfo do enabled: false }, staffAccounts: staff_accounts, - federation: federation, + federation: federation(), pollLimits: Config.get([:instance, :poll_limits]), postFormats: Config.get([:instance, :allowed_post_formats]), uploadLimits: %{ @@ -65,7 +62,7 @@ defmodule Pleroma.Web.Nodeinfo.Nodeinfo do accountActivationRequired: Config.get([:instance, :account_activation_required], false), invitesEnabled: Config.get([:instance, :invites_enabled], false), mailerEnabled: Config.get([Pleroma.Emails.Mailer, :enabled], false), - features: features, + features: features(), restrictedNicknames: Config.get([Pleroma.User, :restricted_nicknames]), skipThreadContainment: Config.get([:instance, :skip_thread_containment], false) } @@ -88,4 +85,58 @@ defmodule Pleroma.Web.Nodeinfo.Nodeinfo do def get_nodeinfo(_version) do {:error, :missing} end + + def features do + [ + "pleroma_api", + "mastodon_api", + "mastodon_api_streaming", + "polls", + "pleroma_explicit_addressing", + "shareable_emoji_packs", + "multifetch", + "pleroma:api/v1/notifications:include_types_filter", + if Config.get([:media_proxy, :enabled]) do + "media_proxy" + end, + if Config.get([:gopher, :enabled]) do + "gopher" + end, + if Config.get([:chat, :enabled]) do + "chat" + end, + if Config.get([:instance, :allow_relay]) do + "relay" + end, + if Config.get([:instance, :safe_dm_mentions]) do + "safe_dm_mentions" + end, + "pleroma_emoji_reactions", + "pleroma_chat_messages" + ] + |> Enum.filter(& &1) + end + + def federation do + quarantined = Config.get([:instance, :quarantined_instances], []) + + if Config.get([:mrf, :transparency]) do + {:ok, data} = MRF.describe() + + data + |> Map.merge(%{quarantined_instances: quarantined}) + else + %{} + end + |> Map.put(:enabled, Config.get([:instance, :federating])) + end + + 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 -- cgit v1.2.3