[#1304] Merged `develop`, handled User.Info.invisible.
authorIvan Tashkinov <ivantashkinov@gmail.com>
Mon, 21 Oct 2019 08:58:22 +0000 (11:58 +0300)
committerIvan Tashkinov <ivantashkinov@gmail.com>
Mon, 21 Oct 2019 08:58:22 +0000 (11:58 +0300)
lib/pleroma/user.ex
lib/pleroma/web/activity_pub/relay.ex
priv/repo/migrations/20191009154608_copy_users_info_fields_to_users.exs
priv/repo/migrations/20191017225002_drop_websub_tables.exs
test/user_test.exs
test/web/activity_pub/views/user_view_test.exs

index 00a1df133d57f7b6216d3c9bf384dbde16dda24b..e8038c1c181722f2c728797c1a0e61f8b5b1602e 100644 (file)
@@ -103,6 +103,7 @@ defmodule Pleroma.User do
     field(:fields, {:array, :map}, default: nil)
     field(:raw_fields, {:array, :map}, default: [])
     field(:discoverable, :boolean, default: false)
+    field(:invisible, :boolean, default: false)
     field(:skip_thread_containment, :boolean, default: false)
 
     field(:notification_settings, :map,
@@ -142,7 +143,7 @@ defmodule Pleroma.User do
   def superuser?(%User{local: true, is_moderator: true}), do: true
   def superuser?(_), do: false
 
-  def invisible?(%User{info: %User.Info{invisible: true}}), do: true
+  def invisible?(%User{invisible: true}), do: true
   def invisible?(_), do: false
 
   def avatar_url(user, options \\ []) do
@@ -264,6 +265,7 @@ defmodule Pleroma.User do
     :fields,
     :raw_fields,
     :discoverable,
+    :invisible,
     :skip_thread_containment,
     :notification_settings
   ]
@@ -321,7 +323,8 @@ defmodule Pleroma.User do
           :follower_count,
           :fields,
           :following_count,
-          :discoverable
+          :discoverable,
+          :invisible
         ]
       )
       |> validate_required([:name, :ap_id])
@@ -2021,4 +2024,13 @@ defmodule Pleroma.User do
     |> cast(params, [:muted_reblogs])
     |> update_and_set_cache()
   end
+
+  def set_invisible(user, invisible) do
+    params = %{invisible: invisible}
+
+    user
+    |> cast(params, [:invisible])
+    |> validate_required([:invisible])
+    |> update_and_set_cache()
+  end
 end
index de80612f172995285d7da651f40ecbf745bfa60a..a9434d75c09000e6fad587ba37a6eb90c225f203 100644 (file)
@@ -14,7 +14,7 @@ defmodule Pleroma.Web.ActivityPub.Relay do
       "#{Pleroma.Web.Endpoint.url()}/relay"
       |> User.get_or_create_service_actor_by_ap_id()
 
-    {:ok, actor} = User.update_info(actor, &User.Info.set_invisible(&1, true))
+    {:ok, actor} = User.set_invisible(actor, true)
     actor
   end
 
index 72c852d2b0a15925653b196f2e25e905c06c50dd..87b1e2c8cfea77cd82711810bedb38932bce26ff 100644 (file)
@@ -42,6 +42,7 @@ defmodule Pleroma.Repo.Migrations.CopyUsersInfoFieldsToUsers do
     :fields,
     :raw_fields,
     :discoverable,
+    :invisible,
     :skip_thread_containment,
     :notification_settings
   ]
@@ -77,6 +78,7 @@ defmodule Pleroma.Repo.Migrations.CopyUsersInfoFieldsToUsers do
     :hide_follows,
     :hide_favorites,
     :discoverable,
+    :invisible,
     :skip_thread_containment
   ]
 
@@ -132,6 +134,7 @@ defmodule Pleroma.Repo.Migrations.CopyUsersInfoFieldsToUsers do
       add(:fields, {:array, :map}, default: nil)
       add(:raw_fields, {:array, :map}, default: [])
       add(:discoverable, :boolean, default: false, null: false)
+      add(:invisible, :boolean, default: false, null: false)
       add(:notification_settings, :map, default: %{})
       add(:skip_thread_containment, :boolean, default: false, null: false)
     end
index 9e483b2a1e8d7144ef6f7360e2b8a717815e99e9..4cf67a59ca2fc55f4ef5ca673426154dc5db1c1c 100644 (file)
@@ -1,8 +1,10 @@
 defmodule Pleroma.Repo.Migrations.DropWebsubTables do
   use Ecto.Migration
 
-  def change do
+  def up do
     drop_if_exists(table(:websub_client_subscriptions))
     drop_if_exists(table(:websub_server_subscriptions))
   end
+
+  def down, do: :noop
 end
index c78e1512a784c790845e48b4f04a0e742db1500f..92de31c748a3c5259fd772b0a00a55cc63e293c5 100644 (file)
@@ -1233,7 +1233,7 @@ defmodule Pleroma.UserTest do
 
   describe "invisible?/1" do
     test "returns true for an invisible user" do
-      user = insert(:user, local: true, info: %{invisible: true})
+      user = insert(:user, local: true, invisible: true)
 
       assert User.invisible?(user)
     end
index 392b717b1a0fda192d3237dd2629d28f9c993732..3299be2d51530b1503ac6415f5f112128271b298 100644 (file)
@@ -75,7 +75,7 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do
   end
 
   test "renders an invisible user with the invisible property set to true" do
-    user = insert(:user, %{info: %{invisible: true}})
+    user = insert(:user, invisible: true)
 
     assert %{"invisible" => true} = UserView.render("service.json", %{user: user})
   end