Make notifications about new statuses from muted threads read
authorSergey Suprunenko <suprunenko.s@gmail.com>
Sun, 16 Aug 2020 22:07:23 +0000 (00:07 +0200)
committerSergey Suprunenko <suprunenko.s@gmail.com>
Sun, 16 Aug 2020 22:11:33 +0000 (00:11 +0200)
CHANGELOG.md
lib/pleroma/notification.ex
lib/pleroma/web/common_api/common_api.ex
test/notification_test.exs

index a8e80eb3c189be2403f9326a2d467e807d55815a..c462833d7b1a00f4cde629da34697bdc7eb1b560 100644 (file)
@@ -35,6 +35,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
   contents has been renamed to `hide_notification_contents`
 - Mastodon API: Added `pleroma.metadata.post_formats` to /api/v1/instance
 - Mastodon API (legacy): Allow query parameters for `/api/v1/domain_blocks`, e.g. `/api/v1/domain_blocks?domain=badposters.zone`
+- Mastodon API: Make notifications about statuses from muted users and threads read automatically
 - Pleroma API: `/api/pleroma/captcha` responses now include `seconds_valid` with an integer value.
 </details>
 
index b4719896e28fac82191b8bb53b0b43ad4b5a57e1..c1825f81044d7a5ca6afb84ccd4d6b49eac50298 100644 (file)
@@ -15,6 +15,7 @@ defmodule Pleroma.Notification do
   alias Pleroma.Repo
   alias Pleroma.ThreadMute
   alias Pleroma.User
+  alias Pleroma.Web.CommonAPI
   alias Pleroma.Web.CommonAPI.Utils
   alias Pleroma.Web.Push
   alias Pleroma.Web.Streamer
@@ -637,7 +638,7 @@ defmodule Pleroma.Notification do
 
   def mark_as_read?(activity, target_user) do
     user = Activity.user_actor(activity)
-    User.mutes_user?(target_user, user)
+    User.mutes_user?(target_user, user) || CommonAPI.thread_muted?(target_user, activity)
   end
 
   def for_user_and_activity(user, activity) do
index a8141b28f45666bedfcdd7ed10b47bf4ee1aa919..5ad2b91c265c836b20e8f4840729db768a38a73b 100644 (file)
@@ -465,7 +465,7 @@ defmodule Pleroma.Web.CommonAPI do
   end
 
   def thread_muted?(%User{id: user_id}, %{data: %{"context" => context}})
-      when is_binary("context") do
+      when is_binary(context) do
     ThreadMute.exists?(user_id, context)
   end
 
index 93f4761da513bc511a9f945b794925574b50552a..a09b08675ebed1dee64e0df028960809cc2218e9 100644 (file)
@@ -246,7 +246,10 @@ defmodule Pleroma.NotificationTest do
           in_reply_to_status_id: activity.id
         })
 
-      assert Notification.create_notification(activity, muter)
+      notification = Notification.create_notification(activity, muter)
+
+      assert notification.id
+      assert notification.seen
     end
 
     test "it disables notifications from strangers" do
@@ -320,6 +323,7 @@ defmodule Pleroma.NotificationTest do
       {:ok, [notification]} = Notification.create_notifications(status)
 
       assert notification
+      refute notification.seen
     end
 
     test "it creates notifications when someone likes user's status with a filtered word" do
@@ -333,6 +337,7 @@ defmodule Pleroma.NotificationTest do
       {:ok, [notification]} = Notification.create_notifications(activity_two)
 
       assert notification
+      refute notification.seen
     end
   end