diff options
author | lain <lain@soykaf.club> | 2020-11-17 15:01:38 +0100 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-11-17 15:01:38 +0100 |
commit | fec1ed802ef44a700df27aa132146f79e9e4cd6d (patch) | |
tree | 6bbb39b647305521209bebbd7bdea3e4be012d1c /lib/pleroma/web/common_api.ex | |
parent | 81293e5aadd5f1dfe7f90f6a71f625ef86cf3359 (diff) | |
parent | 9b9afe6b3fde77ef005629fe2d198160c8f465a1 (diff) | |
download | pleroma-fec1ed802ef44a700df27aa132146f79e9e4cd6d.tar.gz |
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into feature/local-only-scope
Diffstat (limited to 'lib/pleroma/web/common_api.ex')
-rw-r--r-- | lib/pleroma/web/common_api.ex | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/lib/pleroma/web/common_api.ex b/lib/pleroma/web/common_api.ex index 31d9ea677..e59254791 100644 --- a/lib/pleroma/web/common_api.ex +++ b/lib/pleroma/web/common_api.ex @@ -437,20 +437,46 @@ defmodule Pleroma.Web.CommonAPI do end end - def add_mute(user, activity) do + def add_mute(user, activity, params \\ %{}) do + expires_in = Map.get(params, :expires_in, 0) + with {:ok, _} <- ThreadMute.add_mute(user.id, activity.data["context"]), _ <- Pleroma.Notification.mark_context_as_read(user, activity.data["context"]) do + if expires_in > 0 do + Pleroma.Workers.MuteExpireWorker.enqueue( + "unmute_conversation", + %{"user_id" => user.id, "activity_id" => activity.id}, + schedule_in: expires_in + ) + end + {:ok, activity} else {:error, _} -> {:error, dgettext("errors", "conversation is already muted")} end end - def remove_mute(user, activity) do + def remove_mute(%User{} = user, %Activity{} = activity) do ThreadMute.remove_mute(user.id, activity.data["context"]) {:ok, activity} end + def remove_mute(user_id, activity_id) do + with {:user, %User{} = user} <- {:user, User.get_by_id(user_id)}, + {:activity, %Activity{} = activity} <- {:activity, Activity.get_by_id(activity_id)} do + remove_mute(user, activity) + else + {what, result} = error -> + Logger.warn( + "CommonAPI.remove_mute/2 failed. #{what}: #{result}, user_id: #{user_id}, activity_id: #{ + activity_id + }" + ) + + {:error, error} + end + end + def thread_muted?(%User{id: user_id}, %{data: %{"context" => context}}) when is_binary(context) do ThreadMute.exists?(user_id, context) |