it works!!

This commit is contained in:
Karen Konou 2019-02-09 17:47:57 +01:00
commit a0d732ec55
3 changed files with 40 additions and 15 deletions

View file

@ -6,6 +6,7 @@ defmodule Pleroma.Notification do
use Ecto.Schema
alias Pleroma.{User, Activity, Notification, Repo}
alias Pleroma.Web.CommonAPI.Utils
alias Pleroma.Web.ThreadMute
import Ecto.Query
schema "notifications" do
@ -112,6 +113,7 @@ defmodule Pleroma.Notification do
# TODO move to sql, too.
def create_notification(%Activity{} = activity, %User{} = user) do
unless User.blocks?(user, %{ap_id: activity.data["actor"]}) or
ThreadMute.muted?(user, activity) or
user.ap_id == activity.data["actor"] or
(activity.data["type"] == "Follow" and
Enum.any?(Notification.for_user(user), fn notif ->

View file

@ -4,6 +4,7 @@
defmodule Pleroma.Web.ThreadMute do
use Ecto.Schema
alias Pleroma.Web.ThreadMute
alias Pleroma.{Activity, Repo, User}
require Ecto.Query
@ -13,16 +14,37 @@ defmodule Pleroma.Web.ThreadMute do
end
def add_mute(user, id) do
%{data: %{"context" => context}} = Activity.get_by_id(id)
activity = Activity.get_by_id(id)
context = activity.data["context"]
mute = %Pleroma.Web.ThreadMute{user_id: user.id, context: context}
Repo.insert(mute)
{:ok, activity}
end
def remove_mute(user, id) do
user_id = Pleroma.FlakeId.from_string(user.id)
%{data: %{"context" => context}} = Activity.get_by_id(id)
activity = Activity.get_by_id(id)
context = activity.data["context"]
Ecto.Query.from(m in "thread_mutes", where: m.user_id == ^user_id and m.context == ^context)
Ecto.Query.from(m in ThreadMute, where: m.user_id == ^user_id and m.context == ^context)
|> Repo.delete_all()
{:ok, activity}
end
def muted?(user, activity) do
user_id = Pleroma.FlakeId.from_string(user.id)
context = activity.data["context"]
result =
Ecto.Query.from(m in ThreadMute,
where: m.user_id == ^user_id and m.context == ^context
)
|> Repo.all()
case result do
[] -> false
_ -> true
end
end
end