Crowdin / Upload translations / upload-translations (push) Skipped
Historical data migration test / test (14-alpine) (push) Canceled after 0s
Historical data migration test / test (15-alpine) (push) Canceled after 0s
Historical data migration test / test (16-alpine) (push) Canceled after 0s
Historical data migration test / test (17-alpine) (push) Canceled after 0s
Bundler Audit / security (push) Canceled after 0s
Haml Linting / lint (push) Canceled after 0s
JavaScript Linting / lint (push) Canceled after 0s
Ruby Linting / lint (push) Canceled after 0s
JavaScript Testing / test (push) Canceled after 0s
Ruby Testing / build (production) (push) Canceled after 0s
Ruby Testing / test (.ruby-version) (push) Canceled after 0s
Ruby Testing / test (3.3) (push) Canceled after 0s
Ruby Testing / test (3.4) (push) Canceled after 0s
Ruby Testing / End to End testing (.ruby-version) (push) Canceled after 0s
Ruby Testing / End to End testing (3.3) (push) Canceled after 0s
Ruby Testing / End to End testing (3.4) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:7.17.29) (push) Canceled after 0s
Check i18n / check-i18n (push) Canceled after 0s
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (javascript) (push) Canceled after 0s
CodeQL / Analyze (ruby) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (.ruby-version, opensearchproject/opensearch:2) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (3.3, docker.elastic.co/elasticsearch/elasticsearch:7.17.29) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (3.4, docker.elastic.co/elasticsearch/elasticsearch:7.17.29) (push) Canceled after 0s
Check formatting / lint (push) Canceled after 0s
CSS Linting / lint (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:8.19.2) (push) Canceled after 0s
Chromatic / Check for relevant changes (push) Canceled after 0s
Chromatic / Run Chromatic (push) Canceled after 0s
Snapshot of upstream tag v4.7.3 (commit 8ff11c2bb7b9f0714e947b10fa3629c6542c7121) from https://github.com/mastodon/mastodon, unmodified.
50 lines
1.4 KiB
Ruby
50 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Status::SearchConcern
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
scope :indexable, -> { without_reblogs.public_visibility.joins(:account).where(account: { indexable: true }) }
|
|
end
|
|
|
|
def searchable_by
|
|
@searchable_by ||= begin
|
|
ids = []
|
|
|
|
ids << account_id if local?
|
|
|
|
ids += local_mentioned.pluck(:id)
|
|
ids += local_favorited.pluck(:id)
|
|
ids += local_reblogged.pluck(:id)
|
|
ids += local_bookmarked.pluck(:id)
|
|
ids += preloadable_poll.local_voters.pluck(:id) if preloadable_poll.present?
|
|
|
|
ids.uniq
|
|
end
|
|
end
|
|
|
|
def searchable_text
|
|
[
|
|
spoiler_text,
|
|
FormattingHelper.extract_status_plain_text(self),
|
|
preloadable_poll&.options&.join("\n\n"),
|
|
ordered_media_attachments.map(&:description).join("\n\n"),
|
|
].compact.join("\n\n")
|
|
end
|
|
|
|
def searchable_properties
|
|
[].tap do |properties|
|
|
properties << 'image' if ordered_media_attachments.any?(&:image?)
|
|
properties << 'video' if ordered_media_attachments.any?(&:video?)
|
|
properties << 'audio' if ordered_media_attachments.any?(&:audio?)
|
|
properties << 'media' if with_media?
|
|
properties << 'poll' if with_poll?
|
|
properties << 'link' if with_preview_card?
|
|
properties << 'embed' if preview_card&.video?
|
|
properties << 'sensitive' if sensitive?
|
|
properties << 'reply' if reply?
|
|
properties << 'quote' if with_quote?
|
|
end
|
|
end
|
|
end
|