Improve changing current actor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user