aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Suprunenko <suprunenko.s@gmail.com>2020-08-15 15:27:41 +0200
committerSergey Suprunenko <suprunenko.s@gmail.com>2020-08-15 15:27:41 +0200
commit0865f36965f1583085af3a424dbbc89de724fd33 (patch)
treef009becfbcd1e4a698d07c5d66e71084220f6295
parentec242b470654e5e66e3d3a36e8d7563e15b08016 (diff)
downloadpleroma-0865f36965f1583085af3a424dbbc89de724fd33.tar.gz
Mark notifications about statuses from muted users as read automatically
-rw-r--r--lib/pleroma/notification.ex6
-rw-r--r--test/notification_test.exs6
-rw-r--r--test/web/mastodon_api/views/notification_view_test.exs2
3 files changed, 12 insertions, 2 deletions
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex
index 0b171563b..b4719896e 100644
--- a/lib/pleroma/notification.ex
+++ b/lib/pleroma/notification.ex
@@ -441,6 +441,7 @@ defmodule Pleroma.Notification do
|> Multi.insert(:notification, %Notification{
user_id: user.id,
activity: activity,
+ seen: mark_as_read?(activity, user),
type: type_from_activity(activity)
})
|> Marker.multi_set_last_read_id(user, "notifications")
@@ -634,6 +635,11 @@ defmodule Pleroma.Notification do
def skip?(_, _, _), do: false
+ def mark_as_read?(activity, target_user) do
+ user = Activity.user_actor(activity)
+ User.mutes_user?(target_user, user)
+ end
+
def for_user_and_activity(user, activity) do
from(n in __MODULE__,
where: n.user_id == ^user.id,
diff --git a/test/notification_test.exs b/test/notification_test.exs
index 8243cfd34..93f4761da 100644
--- a/test/notification_test.exs
+++ b/test/notification_test.exs
@@ -217,7 +217,10 @@ defmodule Pleroma.NotificationTest do
muter = Repo.get(User, muter.id)
{:ok, activity} = CommonAPI.post(muted, %{status: "Hi @#{muter.nickname}"})
- assert Notification.create_notification(activity, muter)
+ notification = Notification.create_notification(activity, muter)
+
+ assert notification.id
+ assert notification.seen
end
test "notification created if user is muted without notifications" do
@@ -1012,6 +1015,7 @@ defmodule Pleroma.NotificationTest do
[notification] = Notification.for_user(user)
assert notification.activity.object
+ assert notification.seen
end
test "it doesn't return notifications for muted user with notifications", %{user: user} do
diff --git a/test/web/mastodon_api/views/notification_view_test.exs b/test/web/mastodon_api/views/notification_view_test.exs
index 8e0e58538..2f6a808f1 100644
--- a/test/web/mastodon_api/views/notification_view_test.exs
+++ b/test/web/mastodon_api/views/notification_view_test.exs
@@ -219,7 +219,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
expected = %{
id: to_string(notification.id),
- pleroma: %{is_seen: false, is_muted: true},
+ pleroma: %{is_seen: true, is_muted: true},
type: "favourite",
account: AccountView.render("show.json", %{user: another_user, for: user}),
status: StatusView.render("show.json", %{activity: create_activity, for: user}),