Split hide_network into hide_followers & hide_followings (fixed) See merge request pleroma/pleroma!765tags/v0.9.9
@@ -30,7 +30,8 @@ defmodule Pleroma.User.Info do | |||
field(:topic, :string, default: nil) | |||
field(:hub, :string, default: nil) | |||
field(:salmon, :string, default: nil) | |||
field(:hide_network, :boolean, default: false) | |||
field(:hide_followers, :boolean, default: false) | |||
field(:hide_followings, :boolean, default: false) | |||
field(:pinned_activities, {:array, :string}, default: []) | |||
# Found in the wild | |||
@@ -143,7 +144,8 @@ defmodule Pleroma.User.Info do | |||
:no_rich_text, | |||
:default_scope, | |||
:banner, | |||
:hide_network, | |||
:hide_followings, | |||
:hide_followers, | |||
:background | |||
]) | |||
end | |||
@@ -86,7 +86,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do | |||
query = from(user in query, select: [:ap_id]) | |||
following = Repo.all(query) | |||
collection(following, "#{user.ap_id}/following", page, !user.info.hide_network) | |||
collection(following, "#{user.ap_id}/following", page, !user.info.hide_followings) | |||
|> Map.merge(Utils.make_json_ld_header()) | |||
end | |||
@@ -99,7 +99,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do | |||
"id" => "#{user.ap_id}/following", | |||
"type" => "OrderedCollection", | |||
"totalItems" => length(following), | |||
"first" => collection(following, "#{user.ap_id}/following", 1, !user.info.hide_network) | |||
"first" => collection(following, "#{user.ap_id}/following", 1, !user.info.hide_followings) | |||
} | |||
|> Map.merge(Utils.make_json_ld_header()) | |||
end | |||
@@ -109,7 +109,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do | |||
query = from(user in query, select: [:ap_id]) | |||
followers = Repo.all(query) | |||
collection(followers, "#{user.ap_id}/followers", page, !user.info.hide_network) | |||
collection(followers, "#{user.ap_id}/followers", page, !user.info.hide_followers) | |||
|> Map.merge(Utils.make_json_ld_header()) | |||
end | |||
@@ -122,7 +122,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do | |||
"id" => "#{user.ap_id}/followers", | |||
"type" => "OrderedCollection", | |||
"totalItems" => length(followers), | |||
"first" => collection(followers, "#{user.ap_id}/followers", 1, !user.info.hide_network) | |||
"first" => collection(followers, "#{user.ap_id}/followers", 1, !user.info.hide_followers) | |||
} | |||
|> Map.merge(Utils.make_json_ld_header()) | |||
end | |||
@@ -605,7 +605,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do | |||
followers = | |||
cond do | |||
for_user && user.id == for_user.id -> followers | |||
user.info.hide_network -> [] | |||
user.info.hide_followers -> [] | |||
true -> followers | |||
end | |||
@@ -621,7 +621,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do | |||
followers = | |||
cond do | |||
for_user && user.id == for_user.id -> followers | |||
user.info.hide_network -> [] | |||
user.info.hide_followings -> [] | |||
true -> followers | |||
end | |||
@@ -503,7 +503,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do | |||
followers = | |||
cond do | |||
for_user && user.id == for_user.id -> followers | |||
user.info.hide_network -> [] | |||
user.info.hide_followers -> [] | |||
true -> followers | |||
end | |||
@@ -523,7 +523,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do | |||
friends = | |||
cond do | |||
for_user && user.id == for_user.id -> friends | |||
user.info.hide_network -> [] | |||
user.info.hide_followings -> [] | |||
true -> friends | |||
end | |||
@@ -618,7 +618,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do | |||
defp build_info_cng(user, params) do | |||
info_params = | |||
["no_rich_text", "locked", "hide_network"] | |||
["no_rich_text", "locked", "hide_followers", "hide_followings"] | |||
|> Enum.reduce(%{}, fn key, res -> | |||
if value = params[key] do | |||
Map.put(res, key, value == "true") | |||
@@ -108,7 +108,8 @@ defmodule Pleroma.Web.TwitterAPI.UserView do | |||
"locked" => user.info.locked, | |||
"default_scope" => user.info.default_scope, | |||
"no_rich_text" => user.info.no_rich_text, | |||
"hide_network" => user.info.hide_network, | |||
"hide_followers" => user.info.hide_followers, | |||
"hide_followings" => user.info.hide_followings, | |||
"fields" => fields, | |||
# Pleroma extension | |||
@@ -0,0 +1,12 @@ | |||
defmodule Pleroma.Repo.Migrations.SplitHideNetwork do | |||
use Ecto.Migration | |||
def up do | |||
execute("UPDATE users SET info = jsonb_set(info, '{hide_network}'::text[], 'false'::jsonb) WHERE NOT(info::jsonb ? 'hide_network')") | |||
execute("UPDATE users SET info = jsonb_set(info, '{hide_followings}'::text[], info->'hide_network')") | |||
execute("UPDATE users SET info = jsonb_set(info, '{hide_followers}'::text[], info->'hide_network')") | |||
end | |||
def down do | |||
end | |||
end |
@@ -386,9 +386,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do | |||
assert result["first"]["orderedItems"] == [user.ap_id] | |||
end | |||
test "it returns returns empty if the user has 'hide_network' set", %{conn: conn} do | |||
test "it returns returns empty if the user has 'hide_followers' set", %{conn: conn} do | |||
user = insert(:user) | |||
user_two = insert(:user, %{info: %{hide_network: true}}) | |||
user_two = insert(:user, %{info: %{hide_followers: true}}) | |||
User.follow(user, user_two) | |||
result = | |||
@@ -441,8 +441,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do | |||
assert result["first"]["orderedItems"] == [user_two.ap_id] | |||
end | |||
test "it returns returns empty if the user has 'hide_network' set", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_network: true}}) | |||
test "it returns returns empty if the user has 'hide_followings' set", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_followings: true}}) | |||
user_two = insert(:user) | |||
User.follow(user, user_two) | |||
@@ -1101,9 +1101,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do | |||
assert id == to_string(user.id) | |||
end | |||
test "getting followers, hide_network", %{conn: conn} do | |||
test "getting followers, hide_followers", %{conn: conn} do | |||
user = insert(:user) | |||
other_user = insert(:user, %{info: %{hide_network: true}}) | |||
other_user = insert(:user, %{info: %{hide_followers: true}}) | |||
{:ok, _user} = User.follow(user, other_user) | |||
conn = | |||
@@ -1113,9 +1113,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do | |||
assert [] == json_response(conn, 200) | |||
end | |||
test "getting followers, hide_network, same user requesting", %{conn: conn} do | |||
test "getting followers, hide_followers, same user requesting", %{conn: conn} do | |||
user = insert(:user) | |||
other_user = insert(:user, %{info: %{hide_network: true}}) | |||
other_user = insert(:user, %{info: %{hide_followers: true}}) | |||
{:ok, _user} = User.follow(user, other_user) | |||
conn = | |||
@@ -1139,8 +1139,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do | |||
assert id == to_string(other_user.id) | |||
end | |||
test "getting following, hide_network", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_network: true}}) | |||
test "getting following, hide_followings", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_followings: true}}) | |||
other_user = insert(:user) | |||
{:ok, user} = User.follow(user, other_user) | |||
@@ -1151,8 +1151,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do | |||
assert [] == json_response(conn, 200) | |||
end | |||
test "getting following, hide_network, same user requesting", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_network: true}}) | |||
test "getting following, hide_followings, same user requesting", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_followings: true}}) | |||
other_user = insert(:user) | |||
{:ok, user} = User.follow(user, other_user) | |||
@@ -1132,8 +1132,8 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do | |||
) | |||
end | |||
test "it returns empty for a hidden network", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_network: true}}) | |||
test "it returns empty when hide_followers is set to true", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_followers: true}}) | |||
follower_one = insert(:user) | |||
follower_two = insert(:user) | |||
not_follower = insert(:user) | |||
@@ -1150,10 +1150,11 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do | |||
assert [] == response | |||
end | |||
test "it returns the followers for a hidden network if requested by the user themselves", %{ | |||
conn: conn | |||
} do | |||
user = insert(:user, %{info: %{hide_network: true}}) | |||
test "it returns the followers when hide_followers is set to true if requested by the user themselves", | |||
%{ | |||
conn: conn | |||
} do | |||
user = insert(:user, %{info: %{hide_followers: true}}) | |||
follower_one = insert(:user) | |||
follower_two = insert(:user) | |||
_not_follower = insert(:user) | |||
@@ -1256,8 +1257,8 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do | |||
) | |||
end | |||
test "it returns empty for a hidden network", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_network: true}}) | |||
test "it returns empty when hide_followings is set to true", %{conn: conn} do | |||
user = insert(:user, %{info: %{hide_followings: true}}) | |||
followed_one = insert(:user) | |||
followed_two = insert(:user) | |||
not_followed = insert(:user) | |||
@@ -1273,10 +1274,11 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do | |||
assert [] == json_response(conn, 200) | |||
end | |||
test "it returns friends for a hidden network if the user themselves request it", %{ | |||
conn: conn | |||
} do | |||
user = insert(:user, %{info: %{hide_network: true}}) | |||
test "it returns friends when hide_followings is set to true if the user themselves request it", | |||
%{ | |||
conn: conn | |||
} do | |||
user = insert(:user, %{info: %{hide_followings: true}}) | |||
followed_one = insert(:user) | |||
followed_two = insert(:user) | |||
_not_followed = insert(:user) | |||
@@ -1364,27 +1366,51 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do | |||
assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user}) | |||
end | |||
test "it sets and un-sets hide_network", %{conn: conn} do | |||
test "it sets and un-sets hide_followings", %{conn: conn} do | |||
user = insert(:user) | |||
conn | |||
|> assign(:user, user) | |||
|> post("/api/account/update_profile.json", %{ | |||
"hide_followings" => "true" | |||
}) | |||
user = Repo.get!(User, user.id) | |||
assert user.info.hide_followings == true | |||
conn = | |||
conn | |||
|> assign(:user, user) | |||
|> post("/api/account/update_profile.json", %{ | |||
"hide_followings" => "false" | |||
}) | |||
user = Repo.get!(User, user.id) | |||
assert user.info.hide_followings == false | |||
assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user}) | |||
end | |||
test "it sets and un-sets hide_followers", %{conn: conn} do | |||
user = insert(:user) | |||
conn | |||
|> assign(:user, user) | |||
|> post("/api/account/update_profile.json", %{ | |||
"hide_network" => "true" | |||
"hide_followers" => "true" | |||
}) | |||
user = Repo.get!(User, user.id) | |||
assert user.info.hide_network == true | |||
assert user.info.hide_followers == true | |||
conn = | |||
conn | |||
|> assign(:user, user) | |||
|> post("/api/account/update_profile.json", %{ | |||
"hide_network" => "false" | |||
"hide_followers" => "false" | |||
}) | |||
user = Repo.get!(User, user.id) | |||
assert user.info.hide_network == false | |||
assert user.info.hide_followers == false | |||
assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user}) | |||
end | |||
@@ -100,7 +100,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do | |||
"locked" => false, | |||
"default_scope" => "public", | |||
"no_rich_text" => false, | |||
"hide_network" => false, | |||
"hide_followings" => false, | |||
"hide_followers" => false, | |||
"fields" => [], | |||
"pleroma" => %{ | |||
"confirmation_pending" => false, | |||
@@ -147,7 +148,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do | |||
"locked" => false, | |||
"default_scope" => "public", | |||
"no_rich_text" => false, | |||
"hide_network" => false, | |||
"hide_followings" => false, | |||
"hide_followers" => false, | |||
"fields" => [], | |||
"pleroma" => %{ | |||
"confirmation_pending" => false, | |||
@@ -195,7 +197,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do | |||
"locked" => false, | |||
"default_scope" => "public", | |||
"no_rich_text" => false, | |||
"hide_network" => false, | |||
"hide_followings" => false, | |||
"hide_followers" => false, | |||
"fields" => [], | |||
"pleroma" => %{ | |||
"confirmation_pending" => false, | |||
@@ -257,7 +260,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do | |||
"locked" => false, | |||
"default_scope" => "public", | |||
"no_rich_text" => false, | |||
"hide_network" => false, | |||
"hide_followings" => false, | |||
"hide_followers" => false, | |||
"fields" => [], | |||
"pleroma" => %{ | |||
"confirmation_pending" => false, | |||