Implement muting, add it to the mastodon API

This commit is contained in:
Ekaterina Vaartis 2018-09-05 23:49:15 +03:00
commit f41f017bbc
5 changed files with 58 additions and 2 deletions

View file

@ -888,6 +888,28 @@ defmodule Pleroma.User do
)
end
def mute(muter, %User{ap_id: ap_id} = muted) do
if following?(muter, muter) do
unfollow(muter, muter)
end
mutes = muter.info["mutes"] || []
new_mutes = Enum.uniq([ap_id | mutes])
new_info = Map.put(muter.info, "mutes", new_mutes)
cs = User.info_changeset(muter, %{info: new_info})
update_and_set_cache(cs)
end
def unmute(user, %{ap_id: ap_id}) do
mutes = user.info["mutes"] || []
new_mutes = List.delete(mutes, ap_id)
new_info = Map.put(user.info, "mutes", new_mutes)
cs = User.info_changeset(user, %{info: new_info})
update_and_set_cache(cs)
end
def block(blocker, %User{ap_id: ap_id} = blocked) do
# sever any follow relationships to prevent leaks per activitypub (Pleroma issue #213)
blocker =
@ -930,6 +952,8 @@ defmodule Pleroma.User do
update_and_set_cache(cng)
end
def mutes?(user, %{ap_id: ap_id}), do: Enum.member?(user.info["mutes"] || [], ap_id)
def blocks?(user, %{ap_id: ap_id}) do
blocks = user.info.blocks
domain_blocks = user.info.domain_blocks