Change auto-following admin-selected accounts, show in recommendations (#16078)
This commit is contained in:
parent
863ae47b51
commit
daccc07dc1
16 changed files with 228 additions and 128 deletions
37
app/models/account_suggestions/global_source.rb
Normal file
37
app/models/account_suggestions/global_source.rb
Normal file
|
@ -0,0 +1,37 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AccountSuggestions::GlobalSource < AccountSuggestions::Source
|
||||
def key
|
||||
:global
|
||||
end
|
||||
|
||||
def get(account, skip_account_ids: [], limit: 40)
|
||||
account_ids = account_ids_for_locale(account.user_locale) - [account.id] - skip_account_ids
|
||||
|
||||
as_ordered_suggestions(
|
||||
scope(account).where(id: account_ids),
|
||||
account_ids
|
||||
).take(limit)
|
||||
end
|
||||
|
||||
def remove(_account, _target_account_id)
|
||||
nil
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def scope(account)
|
||||
Account.searchable
|
||||
.followable_by(account)
|
||||
.not_excluded_by_account(account)
|
||||
.not_domain_blocked_by_account(account)
|
||||
end
|
||||
|
||||
def account_ids_for_locale(locale)
|
||||
Redis.current.zrevrange("follow_recommendations:#{locale}", 0, -1).map(&:to_i)
|
||||
end
|
||||
|
||||
def to_ordered_list_key(account)
|
||||
account.id
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue