List available frontends also when no static/frontends folder is present yet

* To see what front ends are installed, it ls static/frontends. When this folder doesn't exists yet, it will return an empty array.
* Installing still works since the folder is created during installation already
This commit is contained in:
Ilja 2021-08-14 18:42:12 +00:00 committed by Haelwenn
parent 97eb160c3e
commit f9bafc17fb
2 changed files with 21 additions and 1 deletions

View File

@ -35,6 +35,12 @@ defmodule Pleroma.Web.AdminAPI.FrontendController do
end end
defp installed do 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
end end

View File

@ -42,6 +42,20 @@ defmodule Pleroma.Web.AdminAPI.FrontendControllerTest do
refute Enum.any?(response, fn frontend -> frontend["installed"] == true end) refute Enum.any?(response, fn frontend -> frontend["installed"] == true end)
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 end
describe "POST /api/pleroma/admin/frontends/install" do describe "POST /api/pleroma/admin/frontends/install" do