You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.3 KiB
49 lines
1.3 KiB
# frozen_string_literal: true |
|
|
|
class LinkFeed < PublicFeed |
|
# @param [PreviewCard] preview_card |
|
# @param [Account] account |
|
# @param [Hash] options |
|
def initialize(preview_card, account, options = {}) |
|
@preview_card = preview_card |
|
super(account, options) |
|
end |
|
|
|
# @param [Integer] limit |
|
# @param [Integer] max_id |
|
# @param [Integer] since_id |
|
# @param [Integer] min_id |
|
# @return [Array<Status>] |
|
def get(limit, max_id = nil, since_id = nil, min_id = nil) |
|
return [] if incompatible_feed_settings? |
|
|
|
scope = public_scope |
|
|
|
scope.merge!(discoverable) |
|
scope.merge!(attached_to_preview_card) |
|
scope.merge!(account_filters_scope) if account? |
|
scope.merge!(language_scope) if account&.chosen_languages.present? |
|
scope.merge!(local_only_scope) if local_only? |
|
scope.merge!(remote_only_scope) if remote_only? |
|
|
|
scope.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id) |
|
end |
|
|
|
private |
|
|
|
def local_feed_setting |
|
Setting.local_topic_feed_access |
|
end |
|
|
|
def remote_feed_setting |
|
Setting.remote_topic_feed_access |
|
end |
|
|
|
def attached_to_preview_card |
|
Status.joins(:preview_cards_status).where(preview_cards_status: { preview_card_id: @preview_card.id }) |
|
end |
|
|
|
def discoverable |
|
Account.discoverable |
|
end |
|
end
|
|
|