22 lines
948 B
Ruby
22 lines
948 B
Ruby
# frozen_string_literal: true
|
|
|
|
class EmojiReactionAccountsPresenter
|
|
attr_reader :permitted_account_ids
|
|
|
|
def initialize(statuses, current_account_id = nil, **_options)
|
|
@current_account_id = current_account_id
|
|
|
|
statuses = statuses.compact
|
|
status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id] }.uniq.compact
|
|
emoji_reactions = EmojiReaction.where(status_id: status_ids)
|
|
account_ids = emoji_reactions.pluck(:account_id).uniq
|
|
|
|
permitted_accounts = Account.where(id: account_ids, silenced_at: nil, suspended_at: nil)
|
|
if current_account_id.present?
|
|
account = Account.find(current_account_id)
|
|
permitted_accounts = permitted_accounts.where('domain IS NULL OR domain NOT IN (?)', account.excluded_from_timeline_domains) if account.present? && account.excluded_from_timeline_domains.size.positive?
|
|
end
|
|
|
|
@permitted_account_ids = permitted_accounts.pluck(:id)
|
|
end
|
|
end
|