postland/lib/postland/activities.ex
2024-10-09 22:45:28 +00:00

37 lines
854 B
Elixir

defmodule Postland.Activities do
use Phoenix.VerifiedRoutes, endpoint: PostlandWeb.Endpoint, router: PostlandWeb.Router
alias Postland.Activity
alias Postland.Repo
def process_activity(params) do
case record_activity(params) do
{:ok, activity} ->
cause_effects(activity)
other ->
other
end
end
def record_activity(params) do
params
|> Activity.changeset()
|> Repo.insert()
end
def cause_effects(%Activity{actor_id: actor_id, type: "Follow", data: %{"object" => object}} = activity) do
if object == Postland.my_actor_id() do
case Postland.Follows.record_inbound_request(actor_id) do
{:ok, _follow} ->
{:ok, activity}
other ->
other
end
else
{:ok, activity}
end
end
def cause_effects(activity), do: activity
end