Refactor notification filtering behavior definition (#29567)

shrike
Claire 2024-03-13 11:35:49 +01:00 committed by GitHub
parent 27fd084cb5
commit b43eaa4517
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 35 additions and 13 deletions

View File

@ -29,18 +29,40 @@ class Notification < ApplicationRecord
'Poll' => :poll, 'Poll' => :poll,
}.freeze }.freeze
TYPES = %i( PROPERTIES = {
mention mention: {
status filterable: true,
reblog }.freeze,
follow status: {
follow_request filterable: false,
favourite }.freeze,
poll reblog: {
update filterable: true,
admin.sign_up }.freeze,
admin.report follow: {
).freeze filterable: true,
}.freeze,
follow_request: {
filterable: true,
}.freeze,
favourite: {
filterable: true,
}.freeze,
poll: {
filterable: false,
}.freeze,
update: {
filterable: false,
}.freeze,
'admin.sign_up': {
filterable: false,
}.freeze,
'admin.report': {
filterable: false,
}.freeze,
}.freeze
TYPES = PROPERTIES.keys.freeze
TARGET_STATUS_INCLUDES_BY_TYPE = { TARGET_STATUS_INCLUDES_BY_TYPE = {
status: :status, status: :status,

View File

@ -83,7 +83,7 @@ class NotifyService < BaseService
end end
def filter? def filter?
return false if NON_FILTERABLE_TYPES.include?(@notification.type) return false unless Notification::PROPERTIES[@notification.type][:filterable]
return false if override_for_sender? return false if override_for_sender?
from_limited? || from_limited? ||