|
|
|
@ -43,22 +43,21 @@ class AccountConversation < ApplicationRecord |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
class << self |
|
|
|
|
def to_a_paginated_by_id(limit, min_id: nil, max_id: nil, since_id: nil, preload_participants: true) |
|
|
|
|
def to_a_paginated_by_id(limit, options = {}) |
|
|
|
|
array = begin |
|
|
|
|
if min_id |
|
|
|
|
paginate_by_min_id(limit, min_id, max_id).reverse |
|
|
|
|
if options[:min_id] |
|
|
|
|
paginate_by_min_id(limit, options[:min_id], options[:max_id]).reverse |
|
|
|
|
else |
|
|
|
|
paginate_by_max_id(limit, max_id, since_id).to_a |
|
|
|
|
paginate_by_max_id(limit, options[:max_id], options[:since_id]).to_a |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
if preload_participants |
|
|
|
|
participant_ids = array.flat_map(&:participant_account_ids) |
|
|
|
|
accounts_by_id = Account.where(id: participant_ids).index_by(&:id) |
|
|
|
|
# Preload participants |
|
|
|
|
participant_ids = array.flat_map(&:participant_account_ids) |
|
|
|
|
accounts_by_id = Account.where(id: participant_ids).index_by(&:id) |
|
|
|
|
|
|
|
|
|
array.each do |conversation| |
|
|
|
|
conversation.participant_accounts = conversation.participant_account_ids.filter_map { |id| accounts_by_id[id] } |
|
|
|
|
end |
|
|
|
|
array.each do |conversation| |
|
|
|
|
conversation.participant_accounts = conversation.participant_account_ids.filter_map { |id| accounts_by_id[id] } |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
array |
|
|
|
|