summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Suprunenko <suprunenko.s@gmail.com>2020-08-17 00:07:23 +0200
committerSergey Suprunenko <suprunenko.s@gmail.com>2020-08-17 00:11:33 +0200
commit25c69e271a3ea6687805e0bd0d4b902cda06e364 (patch)
tree741282e22dfcb5cdcf1603fd1718db02574d2384
parent0865f36965f1583085af3a424dbbc89de724fd33 (diff)
Make notifications about new statuses from muted threads read
-rw-r--r--CHANGELOG.md1
-rw-r--r--lib/pleroma/notification.ex3
-rw-r--r--lib/pleroma/web/common_api/common_api.ex2
-rw-r--r--test/notification_test.exs7
4 files changed, 10 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a8e80eb3c..c462833d7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -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>
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex
index b4719896e..c1825f810 100644
--- a/lib/pleroma/notification.ex
+++ b/lib/pleroma/notification.ex
@@ -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
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex
index a8141b28f..5ad2b91c2 100644
--- a/lib/pleroma/web/common_api/common_api.ex
+++ b/lib/pleroma/web/common_api/common_api.ex
@@ -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
diff --git a/test/notification_test.exs b/test/notification_test.exs
index 93f4761da..a09b08675 100644
--- a/test/notification_test.exs
+++ b/test/notification_test.exs
@@ -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