@@ -38,6 +38,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). | |||
- Metadata: RelMe provider | |||
- OAuth: added support for refresh tokens | |||
- Emoji packs and emoji pack manager | |||
- Ability to reset avatar, profile banner and backgroud | |||
### Changed | |||
- **Breaking:** Configuration: move from Pleroma.Mailer to Pleroma.Emails.Mailer | |||
@@ -456,6 +456,16 @@ defmodule Pleroma.Web.TwitterAPI.Controller do | |||
end | |||
end | |||
def update_avatar(%{assigns: %{user: user}} = conn, %{"img" => ""}) do | |||
change = Changeset.change(user, %{avatar: nil}) | |||
{:ok, user} = User.update_and_set_cache(change) | |||
CommonAPI.update(user) | |||
conn | |||
|> put_view(UserView) | |||
|> render("show.json", %{user: user, for: user}) | |||
end | |||
def update_avatar(%{assigns: %{user: user}} = conn, params) do | |||
{:ok, object} = ActivityPub.upload(params, type: :avatar) | |||
change = Changeset.change(user, %{avatar: object.data}) | |||
@@ -467,6 +477,19 @@ defmodule Pleroma.Web.TwitterAPI.Controller do | |||
|> render("show.json", %{user: user, for: user}) | |||
end | |||
def update_banner(%{assigns: %{user: user}} = conn, %{"banner" => ""}) do | |||
with new_info <- %{"banner" => %{}}, | |||
info_cng <- User.Info.profile_update(user.info, new_info), | |||
changeset <- Ecto.Changeset.change(user) |> Ecto.Changeset.put_embed(:info, info_cng), | |||
{:ok, user} <- User.update_and_set_cache(changeset) do | |||
CommonAPI.update(user) | |||
response = %{url: nil} |> Jason.encode!() | |||
conn | |||
|> json_reply(200, response) | |||
end | |||
end | |||
def update_banner(%{assigns: %{user: user}} = conn, params) do | |||
with {:ok, object} <- ActivityPub.upload(%{"img" => params["banner"]}, type: :banner), | |||
new_info <- %{"banner" => object.data}, | |||
@@ -482,6 +505,18 @@ defmodule Pleroma.Web.TwitterAPI.Controller do | |||
end | |||
end | |||
def update_background(%{assigns: %{user: user}} = conn, %{"img" => ""}) do | |||
with new_info <- %{"background" => %{}}, | |||
info_cng <- User.Info.profile_update(user.info, new_info), | |||
changeset <- Ecto.Changeset.change(user) |> Ecto.Changeset.put_embed(:info, info_cng), | |||
{:ok, _user} <- User.update_and_set_cache(changeset) do | |||
response = %{url: nil} |> Jason.encode!() | |||
conn | |||
|> json_reply(200, response) | |||
end | |||
end | |||
def update_background(%{assigns: %{user: user}} = conn, params) do | |||
with {:ok, object} <- ActivityPub.upload(params, type: :background), | |||
new_info <- %{"background" => object.data}, | |||
@@ -40,6 +40,18 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do | |||
user = refresh_record(user) | |||
assert user.info.banner["type"] == "Image" | |||
end | |||
test "profile banner can be reset", %{conn: conn} do | |||
user = insert(:user) | |||
conn | |||
|> assign(:user, user) | |||
|> post(authenticated_twitter_api__path(conn, :update_banner), %{"banner" => ""}) | |||
|> json_response(200) | |||
user = refresh_record(user) | |||
assert user.info.banner == %{} | |||
end | |||
end | |||
describe "POST /api/qvitter/update_background_image" do | |||
@@ -54,6 +66,18 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do | |||
user = refresh_record(user) | |||
assert user.info.background["type"] == "Image" | |||
end | |||
test "background can be reset", %{conn: conn} do | |||
user = insert(:user) | |||
conn | |||
|> assign(:user, user) | |||
|> post(authenticated_twitter_api__path(conn, :update_background), %{"img" => ""}) | |||
|> json_response(200) | |||
user = refresh_record(user) | |||
assert user.info.background == %{} | |||
end | |||
end | |||
describe "POST /api/account/verify_credentials" do | |||
@@ -853,6 +877,19 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do | |||
assert json_response(conn, 200) == | |||
UserView.render("show.json", %{user: current_user, for: current_user}) | |||
end | |||
test "user avatar can be reset", %{conn: conn, user: current_user} do | |||
conn = | |||
conn | |||
|> with_credentials(current_user.nickname, "test") | |||
|> post("/api/qvitter/update_avatar.json", %{img: ""}) | |||
current_user = User.get_cached_by_id(current_user.id) | |||
assert current_user.avatar == nil | |||
assert json_response(conn, 200) == | |||
UserView.render("show.json", %{user: current_user, for: current_user}) | |||
end | |||
end | |||
describe "GET /api/qvitter/mutes.json" do | |||