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"}