Add types
param to GET /api/v1/notifications
in REST API (#17767)
* Add `types` param to `GET /api/v1/notifications` in REST API * Improve tests
This commit is contained in:
parent
eebafe24a8
commit
e6ffbfb5e7
3 changed files with 51 additions and 75 deletions
|
@ -63,13 +63,6 @@ class Notification < ApplicationRecord
|
|||
|
||||
scope :without_suspended, -> { joins(:from_account).merge(Account.without_suspended) }
|
||||
|
||||
scope :browserable, ->(exclude_types = [], account_id = nil) {
|
||||
scope = all
|
||||
scope = where(from_account_id: account_id) if account_id.present?
|
||||
scope = scope.where(type: TYPES - exclude_types.map(&:to_sym)) unless exclude_types.empty?
|
||||
scope
|
||||
}
|
||||
|
||||
def type
|
||||
@type ||= (super || LEGACY_TYPE_CLASS_MAP[activity_type]).to_sym
|
||||
end
|
||||
|
@ -90,6 +83,23 @@ class Notification < ApplicationRecord
|
|||
end
|
||||
|
||||
class << self
|
||||
def browserable(types: [], exclude_types: [], from_account_id: nil)
|
||||
requested_types = begin
|
||||
if types.empty?
|
||||
TYPES
|
||||
else
|
||||
types.map(&:to_sym) & TYPES
|
||||
end
|
||||
end
|
||||
|
||||
requested_types -= exclude_types.map(&:to_sym)
|
||||
|
||||
all.tap do |scope|
|
||||
scope.merge!(where(from_account_id: from_account_id)) if from_account_id.present?
|
||||
scope.merge!(where(type: requested_types)) unless requested_types.size == TYPES.size
|
||||
end
|
||||
end
|
||||
|
||||
def preload_cache_collection_target_statuses(notifications, &_block)
|
||||
notifications.group_by(&:type).each do |type, grouped_notifications|
|
||||
associations = TARGET_STATUS_INCLUDES_BY_TYPE[type]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue