diff options
5 files changed, 30 insertions, 6 deletions
| diff --git a/docs/development/API/admin_api.md b/docs/development/API/admin_api.md index f6e9f7d2a..7d31ee262 100644 --- a/docs/development/API/admin_api.md +++ b/docs/development/API/admin_api.md @@ -1585,6 +1585,7 @@ Returns the content of the document      "build_url": "https://git.pleroma.social/pleroma/fedi-fe/-/jobs/artifacts/${ref}/download?job=build",      "git": "https://git.pleroma.social/pleroma/fedi-fe",      "installed": true, +    "installed_refs": ["master"],      "name": "fedi-fe",      "ref": "master"    }, @@ -1592,6 +1593,7 @@ Returns the content of the document      "build_url": "https://git.pleroma.social/lambadalambda/kenoma/-/jobs/artifacts/${ref}/download?job=build",      "git": "https://git.pleroma.social/lambadalambda/kenoma",      "installed": false, +    "installed_refs": [],      "name": "kenoma",      "ref": "master"    } diff --git a/lib/pleroma/web/admin_api/controllers/frontend_controller.ex b/lib/pleroma/web/admin_api/controllers/frontend_controller.ex index b4dbb82fe..9e2ed4aac 100644 --- a/lib/pleroma/web/admin_api/controllers/frontend_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/frontend_controller.ex @@ -18,13 +18,24 @@ defmodule Pleroma.Web.AdminAPI.FrontendController do    def index(conn, _params) do      installed = installed() +    # FIrst get frontends from config, +    # then add frontends that are installed but not in the config      frontends = -      [:frontends, :available] -      |> Config.get([]) +      Config.get([:frontends, :available], [])        |> Enum.map(fn {name, desc} -> -        Map.put(desc, "installed", name in installed) +        desc +        |> Map.put("installed", name in installed) +        |> Map.put("installed_refs", installed_refs(name))        end) +    frontends = +      frontends ++ +        (installed +         |> Enum.filter(fn n -> not Enum.any?(frontends, fn f -> f["name"] == n end) end) +         |> Enum.map(fn name -> +           %{"name" => name, "installed" => true, "installed_refs" => installed_refs(name)} +         end)) +      render(conn, "index.json", frontends: frontends)    end @@ -43,4 +54,12 @@ defmodule Pleroma.Web.AdminAPI.FrontendController do        []      end    end + +  def installed_refs(name) do +    if name in installed() do +      File.ls!(Path.join(Pleroma.Frontend.dir(), name)) +    else +      [] +    end +  end  end diff --git a/lib/pleroma/web/admin_api/views/frontend_view.ex b/lib/pleroma/web/admin_api/views/frontend_view.ex index 0ca3d67cb..ae4016581 100644 --- a/lib/pleroma/web/admin_api/views/frontend_view.ex +++ b/lib/pleroma/web/admin_api/views/frontend_view.ex @@ -15,7 +15,8 @@ defmodule Pleroma.Web.AdminAPI.FrontendView do        git: frontend["git"],        build_url: frontend["build_url"],        ref: frontend["ref"], -      installed: frontend["installed"] +      installed: frontend["installed"], +      installed_refs: frontend["installed_refs"]      }    end  end diff --git a/lib/pleroma/web/api_spec/operations/admin/frontend_operation.ex b/lib/pleroma/web/api_spec/operations/admin/frontend_operation.ex index 4bfe5ac5a..3e85c44d2 100644 --- a/lib/pleroma/web/api_spec/operations/admin/frontend_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/frontend_operation.ex @@ -51,8 +51,9 @@ defmodule Pleroma.Web.ApiSpec.Admin.FrontendOperation do            name: %Schema{type: :string},            git: %Schema{type: :string, format: :uri, nullable: true},            build_url: %Schema{type: :string, format: :uri, nullable: true}, -          ref: %Schema{type: :string}, -          installed: %Schema{type: :boolean} +          ref: %Schema{type: :string, nullable: true}, +          installed: %Schema{type: :boolean}, +          installed_refs: %Schema{type: :array, items: %Schema{type: :string}}          }        }      } 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 38a23b224..0d1a4999e 100644 --- a/test/pleroma/web/admin_api/controllers/frontend_controller_test.exs +++ b/test/pleroma/web/admin_api/controllers/frontend_controller_test.exs @@ -89,6 +89,7 @@ defmodule Pleroma.Web.AdminAPI.FrontendControllerTest do                   "build_url" => "http://gensokyo.2hu/builds/${ref}",                   "git" => nil,                   "installed" => true, +                 "installed_refs" => ["fantasy"],                   "name" => "pleroma",                   "ref" => "fantasy"                 } | 
