Browse Source

MastodonAPI: Add extension to set and get pleroma_settings_store.

tags/v1.1.4
lain 5 years ago
parent
commit
7861974ab2
3 changed files with 72 additions and 3 deletions
  1. +2
    -1
      lib/pleroma/user/info.ex
  2. +10
    -2
      lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
  3. +60
    -0
      test/web/mastodon_api/mastodon_api_controller_test.exs

+ 2
- 1
lib/pleroma/user/info.ex View File

@@ -210,7 +210,8 @@ defmodule Pleroma.User.Info do
:hide_followers,
:hide_favorites,
:background,
:show_role
:show_role,
:pleroma_settings_store
])
end



+ 10
- 2
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex View File

@@ -124,6 +124,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end)
end)
|> add_if_present(params, "default_scope", :default_scope)
|> add_if_present(params, "pleroma_settings_store", :pleroma_settings_store, fn value ->
{:ok, Map.merge(user.info.pleroma_settings_store, value)}
end)
|> add_if_present(params, "header", :banner, fn value ->
with %Plug.Upload{} <- value,
{:ok, object} <- ActivityPub.upload(value, type: :banner) do
@@ -143,7 +146,10 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
CommonAPI.update(user)
end

json(conn, AccountView.render("account.json", %{user: user, for: user}))
json(
conn,
AccountView.render("account.json", %{user: user, for: user, with_pleroma_settings: true})
)
else
_e ->
conn
@@ -153,7 +159,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end

def verify_credentials(%{assigns: %{user: user}} = conn, _) do
account = AccountView.render("account.json", %{user: user, for: user})
account =
AccountView.render("account.json", %{user: user, for: user, with_pleroma_settings: true})

json(conn, account)
end



+ 60
- 0
test/web/mastodon_api/mastodon_api_controller_test.exs View File

@@ -2322,6 +2322,66 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
end

describe "updating credentials" do
test "sets user settings in a generic way", %{conn: conn} do
user = insert(:user)

res_conn =
conn
|> assign(:user, user)
|> patch("/api/v1/accounts/update_credentials", %{
"pleroma_settings_store" => %{
pleroma_fe: %{
theme: "bla"
}
}
})

assert user = json_response(res_conn, 200)
assert user["pleroma"]["settings_store"] == %{"pleroma_fe" => %{"theme" => "bla"}}

user = Repo.get(User, user["id"])

res_conn =
conn
|> assign(:user, user)
|> patch("/api/v1/accounts/update_credentials", %{
"pleroma_settings_store" => %{
masto_fe: %{
theme: "bla"
}
}
})

assert user = json_response(res_conn, 200)

assert user["pleroma"]["settings_store"] ==
%{
"pleroma_fe" => %{"theme" => "bla"},
"masto_fe" => %{"theme" => "bla"}
}

user = Repo.get(User, user["id"])

res_conn =
conn
|> assign(:user, user)
|> patch("/api/v1/accounts/update_credentials", %{
"pleroma_settings_store" => %{
masto_fe: %{
theme: "blub"
}
}
})

assert user = json_response(res_conn, 200)

assert user["pleroma"]["settings_store"] ==
%{
"pleroma_fe" => %{"theme" => "bla"},
"masto_fe" => %{"theme" => "blub"}
}
end

test "updates the user's bio", %{conn: conn} do
user = insert(:user)
user2 = insert(:user)


Loading…
Cancel
Save