Search should return only groups, don't show user profiles

Closes #845

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2021-08-23 10:34:33 +02:00
parent c5d5758ece
commit 264b94e30c
No known key found for this signature in database
GPG Key ID: A061B9DDE0CA0773
2 changed files with 10 additions and 4 deletions

View File

@ -94,9 +94,13 @@ defmodule Mobilizon.GraphQL.API.Search do
@spec process_from_username(String.t()) :: Page.t() @spec process_from_username(String.t()) :: Page.t()
defp process_from_username(search) do defp process_from_username(search) do
case ActivityPubActor.find_or_make_actor_from_nickname(search) do case ActivityPubActor.find_or_make_actor_from_nickname(search) do
{:ok, actor} -> {:ok, %Actor{type: :Group} = actor} ->
%Page{total: 1, elements: [actor]} %Page{total: 1, elements: [actor]}
# Don't return anything else than groups
{:ok, %Actor{}} ->
%Page{total: 0, elements: []}
{:error, _err} -> {:error, _err} ->
Logger.debug(fn -> "Unable to find or make actor '#{search}'" end) Logger.debug(fn -> "Unable to find or make actor '#{search}'" end)

View File

@ -16,9 +16,11 @@ defmodule Mobilizon.GraphQL.API.SearchTest do
test "search an user by username" do test "search an user by username" do
with_mock ActivityPubActor, with_mock ActivityPubActor,
find_or_make_actor_from_nickname: fn "toto@domain.tld" -> {:ok, %Actor{id: 42}} end do find_or_make_actor_from_nickname: fn "toto@domain.tld" ->
assert {:ok, %Page{total: 1, elements: [%Actor{id: 42}]}} == {:ok, %Actor{id: 42, type: :Group}}
Search.search_actors(%{term: "toto@domain.tld"}, 1, 10, :Person) end do
assert {:ok, %Page{total: 1, elements: [%Actor{id: 42, type: :Group}]}} ==
Search.search_actors(%{term: "toto@domain.tld"}, 1, 10, :Group)
assert_called(ActivityPubActor.find_or_make_actor_from_nickname("toto@domain.tld")) assert_called(ActivityPubActor.find_or_make_actor_from_nickname("toto@domain.tld"))
end end