update_and_set_cache(cng)
end
+ def subscribe(subscriber, %{ap_id: ap_id}) do
+ info_cng =
+ subscriber.info
+ |> User.Info.add_to_subscriptions(ap_id)
+
+ change(subscriber)
+ |> put_embed(:info, info_cng)
+ |> update_and_set_cache()
+ end
+
+ def unsubscribe(unsubscriber, %{ap_id: ap_id}) do
+ info_cng =
+ unsubscriber.info
+ |> User.Info.remove_from_subscriptions(ap_id)
+
+ change(unsubscriber)
+ |> put_embed(:info, info_cng)
+ |> update_and_set_cache()
+ end
+
def block(blocker, %User{ap_id: ap_id} = blocked) do
# sever any follow relationships to prevent leaks per activitypub (Pleroma issue #213)
blocker =
end)
end
+ def subscribed_to?(user, %{ap_id: ap_id}) do
+ subs = user.info.subscriptions
+ Enum.member?(subs, ap_id)
+ end
+
def muted_users(user),
do: Repo.all(from(u in User, where: u.ap_id in ^user.info.mutes))
def blocked_users(user),
do: Repo.all(from(u in User, where: u.ap_id in ^user.info.blocks))
+ def subscribed_users(user),
+ do:
+ Repo.all(
+ from(u in User,
+ where: fragment("?->'subscriptions' @> ?", u.info, ^user.ap_id)
+ )
+ )
+
def block_domain(user, domain) do
info_cng =
user.info