37 lines
854 B
Elixir
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
|