@@ -2,15 +2,12 @@ defmodule MobilizonWeb.API.Events do
|
||||
@moduledoc """
|
||||
API for Events
|
||||
"""
|
||||
alias Mobilizon.Addresses
|
||||
alias Mobilizon.Actors
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mobilizon.Service.ActivityPub
|
||||
alias Mobilizon.Service.ActivityPub.Utils, as: ActivityPubUtils
|
||||
alias MobilizonWeb.API.Utils
|
||||
|
||||
@visibility %{"PUBLIC" => :public, "PRIVATE" => :private}
|
||||
|
||||
@doc """
|
||||
Create an event
|
||||
"""
|
||||
@@ -51,15 +48,4 @@ defmodule MobilizonWeb.API.Events do
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
defp get_physical_address(address_id) when is_number(address_id),
|
||||
do: Addresses.get_address!(address_id)
|
||||
|
||||
defp get_physical_address(address_id) when is_binary(address_id) do
|
||||
with {address_id, ""} <- Integer.parse(address_id) do
|
||||
get_physical_address(address_id)
|
||||
end
|
||||
end
|
||||
|
||||
defp get_physical_address(nil), do: nil
|
||||
end
|
||||
|
||||
24
lib/mobilizon_web/api/participations.ex
Normal file
24
lib/mobilizon_web/api/participations.ex
Normal file
@@ -0,0 +1,24 @@
|
||||
defmodule MobilizonWeb.API.Participations do
|
||||
@moduledoc """
|
||||
Common API to join events and groups
|
||||
"""
|
||||
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mobilizon.Events.{Event, Participant}
|
||||
alias Mobilizon.Service.ActivityPub
|
||||
require Logger
|
||||
|
||||
@spec join(Event.t(), Actor.t()) :: {:ok, Participant.t()}
|
||||
def join(%Event{id: event_id} = event, %Actor{id: actor_id} = actor) do
|
||||
with {:error, :participant_not_found} <- Mobilizon.Events.get_participant(event_id, actor_id),
|
||||
{:ok, activity, participant} <- ActivityPub.join(event, actor, true) do
|
||||
{:ok, activity, participant}
|
||||
end
|
||||
end
|
||||
|
||||
def leave(%Event{} = event, %Actor{} = actor) do
|
||||
with {:ok, activity, participant} <- ActivityPub.leave(event, actor, true) do
|
||||
{:ok, activity, participant}
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user