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,
}.freeze
TYPES = %i(
mention
status
reblog
follow
follow_request
favourite
poll
update
admin.sign_up
admin.report
).freeze
PROPERTIES = {
mention: {
filterable: true,
}.freeze,
status: {
filterable: false,
}.freeze,
reblog: {
filterable: true,
}.freeze,
follow: {
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 = {
status: :status,

View File

@ -83,7 +83,7 @@ class NotifyService < BaseService
end
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?
from_limited? ||