Add ability to delete an event

This commit is contained in:
Chocobozzz
2019-01-25 17:06:57 +01:00
parent b6f905313a
commit dd174f2446
8 changed files with 98 additions and 4 deletions

View File

@@ -5,6 +5,7 @@ defmodule MobilizonWeb.Resolvers.Event do
alias Mobilizon.Service.ActivityPub
alias Mobilizon.Activity
alias Mobilizon.Events.Event
alias Mobilizon.Actors.User
# We limit the max number of events that can be retrieved
@event_max_limit 100
@@ -94,4 +95,31 @@ defmodule MobilizonWeb.Resolvers.Event do
def create_event(_parent, _args, _resolution) do
{:error, "You need to be logged-in to create events"}
end
@doc """
Delete an event
"""
def delete_event(_parent, %{event_id: event_id, actor_id: actor_id}, %{
context: %{current_user: user}
}) do
with {:ok, %Event{} = event} <- Mobilizon.Events.get_event(event_id),
{:is_owned, true} <- User.owns_actor(user, actor_id),
{:event_can_be_managed, true} <- Event.can_event_be_managed_by(event, actor_id),
event <- Mobilizon.Events.delete_event!(event) do
{:ok, %{id: event.id}}
else
{:error, :event_not_found} ->
{:error, "Event not found"}
{:is_owned, false} ->
{:error, "Actor id is not owned by authenticated user"}
{:event_can_be_managed, false} ->
{:error, "You cannot delete this event"}
end
end
def delete_event(_parent, _args, _resolution) do
{:error, "You need to be logged-in to delete an event"}
end
end

View File

@@ -89,7 +89,7 @@ defmodule MobilizonWeb.Resolvers.Group do
{:ok, %{id: group.id}}
else
{:error, :group_not_found} ->
{:error, "Group with preferred username not found"}
{:error, "Group not found"}
{:is_owned, false} ->
{:error, "Actor id is not owned by authenticated user"}

View File

@@ -217,6 +217,14 @@ defmodule MobilizonWeb.Schema do
resolve(&Resolvers.Event.create_event/3)
end
@desc "Delete an event"
field :delete_event, :deleted_object do
arg(:event_id, non_null(:integer))
arg(:actor_id, non_null(:integer))
resolve(&Resolvers.Event.delete_event/3)
end
@desc "Create a comment"
field :create_comment, type: :comment do
arg(:text, non_null(:string))