41 lines
939 B
Ruby
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
|