diff options
author | Ekaterina Vaartis <vaartis@cock.li> | 2018-09-05 23:49:15 +0300 |
---|---|---|
committer | Ekaterina Vaartis <vaartis@cock.li> | 2019-02-19 21:49:55 +0300 |
commit | f41f017bbca232c2ab3cd41ad23ef95d5ad13e36 (patch) | |
tree | bca7dd7e91132067bda3adb2738c34356e94dfc1 /lib/pleroma/user.ex | |
parent | 1dd718e83c76db218f12a98344b568fe10ecbefe (diff) | |
download | pleroma-f41f017bbca232c2ab3cd41ad23ef95d5ad13e36.tar.gz |
Implement muting, add it to the mastodon API
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 18bb56667..9a774e7b7 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -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 |