Improve changing current actor

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-10-25 13:20:33 +02:00
parent d0b45de175
commit bac6628aea
3 changed files with 21 additions and 28 deletions

View File

@@ -311,19 +311,20 @@ defmodule Mobilizon.GraphQL.Resolvers.User do
def change_default_actor(
_parent,
%{preferred_username: username},
%{context: %{current_user: %User{id: user_id} = user}}
%{context: %{current_user: %User{} = user}}
) do
with %Actor{id: actor_id} = actor <- Actors.get_local_actor_by_name(username),
{:user_actor, true} <-
{:user_actor, actor_id in Enum.map(Users.get_actors_for_user(user), & &1.id)},
%User{} = user <- Users.update_user_default_actor(user_id, actor) do
{:ok, user}
else
{:user_actor, _} ->
{:error, :actor_not_from_user}
case Actors.get_local_actor_by_name(username) do
%Actor{id: actor_id} = actor ->
if actor_id in Enum.map(Users.get_actors_for_user(user), & &1.id) do
%User{} = user = Users.update_user_default_actor(user, actor)
{:ok, user}
else
{:error, dgettext("errors", "This profile does not belong to you")}
end
_error ->
{:error, :unable_to_change_default_actor}
nil ->
{:error,
dgettext("errors", "Profile with username %{username} not found", %{username: username})}
end
end