From 95871cb4628933900f2004a8bece1b929d5525bf Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Sat, 5 Oct 2019 20:11:43 +0000
Subject: [PATCH] user: implement User.invisible?/1

---
 lib/pleroma/user.ex |  3 +++
 test/user_test.exs  | 14 ++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index ec705b8f6..2bbfaa55b 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -88,6 +88,9 @@ defmodule Pleroma.User do
   def superuser?(%User{local: true, info: %User.Info{is_moderator: true}}), do: true
   def superuser?(_), do: false
 
+  def invisible?(%User{info: %User.Info{invisible: true}}), do: true
+  def invisible?(_), do: false
+
   def avatar_url(user, options \\ []) do
     case user.avatar do
       %{"url" => [%{"href" => href} | _]} -> href
diff --git a/test/user_test.exs b/test/user_test.exs
index ad050b7da..05bdb9a61 100644
--- a/test/user_test.exs
+++ b/test/user_test.exs
@@ -1232,6 +1232,20 @@ defmodule Pleroma.UserTest do
     end
   end
 
+  describe "invisible?/1" do
+    test "returns true for an invisible user" do
+      user = insert(:user, local: true, info: %{invisible: true})
+
+      assert User.invisible?(user)
+    end
+
+    test "returns false for a non-invisible user" do
+      user = insert(:user, local: true)
+
+      refute User.invisible?(user)
+    end
+  end
+
   describe "visible_for?/2" do
     test "returns true when the account is itself" do
       user = insert(:user, local: true)