diff options
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | lib/pleroma/web/admin_api/controllers/frontend_controller.ex | 8 | ||||
| -rw-r--r-- | test/pleroma/web/admin_api/controllers/frontend_controller_test.exs | 14 | 
3 files changed, 22 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 02d9d59cb..90e0ca82a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).  - AdminAPI: Fix rendering reports containing a `nil` object  - Mastodon API: Activity Search fallbacks on status fetching after a DB Timeout/Error  - Mastodon API: Fix crash in Streamer related to reblogging +- AdminAPI: List available frontends when `static/frontends` folder is missing  ## 2.4.0 - 2021-08-08 diff --git a/lib/pleroma/web/admin_api/controllers/frontend_controller.ex b/lib/pleroma/web/admin_api/controllers/frontend_controller.ex index 722f51bd2..442e6a5a0 100644 --- a/lib/pleroma/web/admin_api/controllers/frontend_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/frontend_controller.ex @@ -35,6 +35,12 @@ defmodule Pleroma.Web.AdminAPI.FrontendController do    end    defp installed do -    File.ls!(Pleroma.Frontend.dir()) +    frontend_directory = Pleroma.Frontend.dir() + +    if File.exists?(frontend_directory) do +      File.ls!(frontend_directory) +    else +      [] +    end    end  end diff --git a/test/pleroma/web/admin_api/controllers/frontend_controller_test.exs b/test/pleroma/web/admin_api/controllers/frontend_controller_test.exs index bc827cc12..200682ba9 100644 --- a/test/pleroma/web/admin_api/controllers/frontend_controller_test.exs +++ b/test/pleroma/web/admin_api/controllers/frontend_controller_test.exs @@ -42,6 +42,20 @@ defmodule Pleroma.Web.AdminAPI.FrontendControllerTest do        refute Enum.any?(response, fn frontend -> frontend["installed"] == true end)      end + +    test "it lists available frontends when no frontend folder was created yet", %{conn: conn} do +      File.rm_rf(@dir) + +      response = +        conn +        |> get("/api/pleroma/admin/frontends") +        |> json_response_and_validate_schema(:ok) + +      assert Enum.map(response, & &1["name"]) == +               Enum.map(Config.get([:frontends, :available]), fn {_, map} -> map["name"] end) + +      refute Enum.any?(response, fn frontend -> frontend["installed"] == true end) +    end    end    describe "POST /api/pleroma/admin/frontends/install" do  | 
