Browse Source

Ability to reset avatar, profile banner and backgroud

tags/v1.1.4
Sachin Joshi 5 years ago
parent
commit
17bfd000d7
3 changed files with 73 additions and 0 deletions
  1. +1
    -0
      CHANGELOG.md
  2. +35
    -0
      lib/pleroma/web/twitter_api/twitter_api_controller.ex
  3. +37
    -0
      test/web/twitter_api/twitter_api_controller_test.exs

+ 1
- 0
CHANGELOG.md View File

@@ -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


+ 35
- 0
lib/pleroma/web/twitter_api/twitter_api_controller.ex View File

@@ -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},


+ 37
- 0
test/web/twitter_api/twitter_api_controller_test.exs View File

@@ -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


Loading…
Cancel
Save