Preload `/api/pleroma/frontend_configurations`, fixes #1932
authorAlex Gleason <alex@alexgleason.me>
Mon, 12 Oct 2020 23:49:37 +0000 (18:49 -0500)
committerAlex Gleason <alex@alexgleason.me>
Mon, 12 Oct 2020 23:49:37 +0000 (18:49 -0500)
lib/pleroma/web/preload/instance.ex
lib/pleroma/web/twitter_api/controllers/util_controller.ex
lib/pleroma/web/twitter_api/views/util_view.ex
test/web/preload/instance_test.exs

index 50d1f3382fe66b7192a5ba0781d70ec8c95e3b31..cc6f8cf99804d099e08adfd3eb43bac33eab59c5 100644 (file)
@@ -7,11 +7,13 @@ defmodule Pleroma.Web.Preload.Providers.Instance do
   alias Pleroma.Web.MastodonAPI.InstanceView
   alias Pleroma.Web.Nodeinfo.Nodeinfo
   alias Pleroma.Web.Preload.Providers.Provider
   alias Pleroma.Web.MastodonAPI.InstanceView
   alias Pleroma.Web.Nodeinfo.Nodeinfo
   alias Pleroma.Web.Preload.Providers.Provider
+  alias Pleroma.Web.TwitterAPI.UtilView
 
   @behaviour Provider
   @instance_url "/api/v1/instance"
   @panel_url "/instance/panel.html"
   @nodeinfo_url "/nodeinfo/2.0.json"
 
   @behaviour Provider
   @instance_url "/api/v1/instance"
   @panel_url "/instance/panel.html"
   @nodeinfo_url "/nodeinfo/2.0.json"
+  @fe_config_url "/api/pleroma/frontend_configurations"
 
   @impl Provider
   def generate_terms(_params) do
 
   @impl Provider
   def generate_terms(_params) do
@@ -19,6 +21,7 @@ defmodule Pleroma.Web.Preload.Providers.Instance do
     |> build_info_tag()
     |> build_panel_tag()
     |> build_nodeinfo_tag()
     |> build_info_tag()
     |> build_panel_tag()
     |> build_nodeinfo_tag()
+    |> build_fe_config_tag()
   end
 
   defp build_info_tag(acc) do
   end
 
   defp build_info_tag(acc) do
@@ -47,4 +50,10 @@ defmodule Pleroma.Web.Preload.Providers.Instance do
         Map.put(acc, @nodeinfo_url, nodeinfo_data)
     end
   end
         Map.put(acc, @nodeinfo_url, nodeinfo_data)
     end
   end
+
+  defp build_fe_config_tag(acc) do
+    fe_data = UtilView.render("frontend_configurations.json", %{})
+
+    Map.put(acc, @fe_config_url, fe_data)
+  end
 end
 end
index 70b0fbd546f32ddaeb62a3110b83c7d81d5dfd94..6d827846d1a9bca97bd54c2393982347c6b98b2f 100644 (file)
@@ -74,11 +74,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
   end
 
   def frontend_configurations(conn, _params) do
   end
 
   def frontend_configurations(conn, _params) do
-    config =
-      Config.get(:frontend_configurations, %{})
-      |> Enum.into(%{})
-
-    json(conn, config)
+    render(conn, "frontend_configurations.json")
   end
 
   def emoji(conn, _params) do
   end
 
   def emoji(conn, _params) do
index d3bdb4f6230662f7cf62e57672dc352729ebc145..98eea1d182f019cc82cb270131589cc76ee792c6 100644 (file)
@@ -5,6 +5,7 @@
 defmodule Pleroma.Web.TwitterAPI.UtilView do
   use Pleroma.Web, :view
   import Phoenix.HTML.Form
 defmodule Pleroma.Web.TwitterAPI.UtilView do
   use Pleroma.Web, :view
   import Phoenix.HTML.Form
+  alias Pleroma.Config
   alias Pleroma.Web
 
   def status_net_config(instance) do
   alias Pleroma.Web
 
   def status_net_config(instance) do
@@ -19,4 +20,9 @@ defmodule Pleroma.Web.TwitterAPI.UtilView do
     </config>
     """
   end
     </config>
     """
   end
+
+  def render("frontend_configurations.json", _) do
+    Config.get(:frontend_configurations, %{})
+    |> Enum.into(%{})
+  end
 end
 end
index a46f2831248626a0340dfbe0865e3f7168701d6a..8493f2a94a76b3f7cbe61d32292f160c8ad03949 100644 (file)
@@ -45,4 +45,12 @@ defmodule Pleroma.Web.Preload.Providers.InstanceTest do
     assert metadata.private == false
     assert metadata.suggestions == %{enabled: false}
   end
     assert metadata.private == false
     assert metadata.suggestions == %{enabled: false}
   end
+
+  test "it renders the frontend configurations", %{
+    "/api/pleroma/frontend_configurations" => fe_configs
+  } do
+    assert %{
+             pleroma_fe: %{background: "/images/city.jpg", logo: "/static/logo.png"}
+           } = fe_configs
+  end
 end
 end