@@ -89,6 +89,7 @@ defmodule Mobilizon.GraphQL.Error do
|
||||
defp metadata(:event_not_found), do: {404, dgettext("errors", "Event not found")}
|
||||
defp metadata(:group_not_found), do: {404, dgettext("errors", "Group not found")}
|
||||
defp metadata(:resource_not_found), do: {404, dgettext("errors", "Resource not found")}
|
||||
defp metadata(:discussion_not_found), do: {404, dgettext("errors", "Discussion not found")}
|
||||
defp metadata(:unknown), do: {500, dgettext("errors", "Something went wrong")}
|
||||
|
||||
defp metadata(code) do
|
||||
|
||||
@@ -109,6 +109,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
|
||||
end
|
||||
end
|
||||
|
||||
def create_discussion(_, _, _), do: {:error, :unauthenticated}
|
||||
|
||||
def reply_to_discussion(
|
||||
_parent,
|
||||
%{text: text, discussion_id: discussion_id},
|
||||
@@ -141,9 +143,14 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
|
||||
origin_comment_id || previous_in_reply_to_comment_id || last_comment_id
|
||||
}) do
|
||||
{:ok, discussion}
|
||||
else
|
||||
{:no_discussion, _} ->
|
||||
{:error, :discussion_not_found}
|
||||
end
|
||||
end
|
||||
|
||||
def reply_to_discussion(_, _, _), do: {:error, :unauthenticated}
|
||||
|
||||
@spec update_discussion(map(), map(), map()) :: {:ok, Discussion.t()}
|
||||
def update_discussion(
|
||||
_parent,
|
||||
@@ -166,9 +173,14 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
|
||||
}
|
||||
) do
|
||||
{:ok, discussion}
|
||||
else
|
||||
{:member, false} ->
|
||||
{:error, :unauthorized}
|
||||
end
|
||||
end
|
||||
|
||||
def update_discussion(_, _, _), do: {:error, :unauthenticated}
|
||||
|
||||
def delete_discussion(_parent, %{discussion_id: discussion_id}, %{
|
||||
context: %{
|
||||
current_user: %User{} = user
|
||||
@@ -186,8 +198,9 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
|
||||
{:error, dgettext("errors", "No discussion with ID %{id}", id: discussion_id)}
|
||||
|
||||
{:member, _} ->
|
||||
{:error,
|
||||
dgettext("errors", "You are not a member of the group the discussion belongs to")}
|
||||
{:error, :unauthorized}
|
||||
end
|
||||
end
|
||||
|
||||
def delete_discussion(_, _, _), do: {:error, :unauthenticated}
|
||||
end
|
||||
|
||||
@@ -329,7 +329,7 @@ defmodule Mobilizon.Discussions do
|
||||
@doc """
|
||||
Get a discussion by it's ID
|
||||
"""
|
||||
@spec get_discussion(String.t() | integer()) :: Discussion.t()
|
||||
@spec get_discussion(String.t() | integer()) :: Discussion.t() | nil
|
||||
def get_discussion(discussion_id) do
|
||||
Discussion
|
||||
|> Repo.get(discussion_id)
|
||||
@@ -399,7 +399,8 @@ defmodule Mobilizon.Discussions do
|
||||
} ->
|
||||
Changeset.change(comment, %{discussion_id: discussion_id, url: discussion_url})
|
||||
end)
|
||||
|> Repo.transaction() do
|
||||
|> Repo.transaction(),
|
||||
%Discussion{} = discussion <- Repo.preload(discussion, @discussion_preloads) do
|
||||
{:ok, discussion}
|
||||
end
|
||||
end
|
||||
@@ -427,8 +428,9 @@ defmodule Mobilizon.Discussions do
|
||||
%{last_comment_id: comment_id}
|
||||
)
|
||||
end)
|
||||
|> Repo.transaction() do
|
||||
# Discussion is not updated
|
||||
|> Repo.transaction(),
|
||||
# Discussion is not updated
|
||||
%Comment{} = comment <- Repo.preload(comment, @comment_preloads) do
|
||||
{:ok, Map.put(discussion, :last_comment, comment)}
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user