defmodule Clacks.Inbox do alias Clacks.{Repo, Activity, Object, Actor} def handle_create(%{"type" => "Create", "object" => object, "actor" => actor} = activity) do changeset = Object.changeset(%Object{}, %{data: object}) {:ok, _object} = Repo.insert(changeset) changeset = Activity.changeset(%Activity{}, %{ data: activity, local: false, actor: actor }) {:ok, _activity} = Repo.insert(changeset) end def handle_follow(%{"type" => "Follow", "object" => followed_id, "actor" => follower}) when is_binary(followed_id) do followed = Actor.get_by_ap_id(followed_id) changeset = Actor.changeset(followed, %{followers: [follower | followed.followers]}) {:ok, _followed} = Repo.update(changeset) end end