fedibird-fe/app/workers/concerns/publish_scope.rb

41 lines
939 B
Ruby

# frozen_string_literal: true
module PublishScope
extend ActiveSupport::Concern
included do
def visibility_scope
case @status.visibility
when 'public', 'unlisted'
local_scope
when 'private'
Account.where(id: Account
.union(local_followers_scope)
.union(local_mentions_scope)
.union(local_sender_scope)
)
when 'limited', 'direct'
Account.where(id: Account
.union(local_mentions_scope)
.union(local_sender_scope)
)
end.select(:id)
end
def local_scope
Account.local
end
def local_followers_scope
@status.account.delivery_followers.local.select(:id)
end
def local_mentions_scope
Account.local.where(id: @status.mentions.select(:account_id)).select(:id)
end
def local_sender_scope
Account.local.where(id: @account_id).select(:id)
end
end
end