mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-06 23:00:11 +09:00
659f95748a
* Preload only uncached messages and reduce rendering overhead * Keep benchmark summaries without raw JSON results * Use Ruby benchmark drivers and keep generated results out of the repo
21 lines
874 B
Ruby
21 lines
874 B
Ruby
class Users::SidebarsController < ApplicationController
|
|
DIRECT_PLACEHOLDERS = 20
|
|
|
|
def show
|
|
@direct_memberships, @other_memberships = Current.user.memberships.visible.with_ordered_room.partition { |membership| membership.room.direct? }
|
|
@direct_memberships = @direct_memberships.sort_by { |membership| membership.room.updated_at }.reverse
|
|
|
|
@direct_placeholder_users = find_direct_placeholder_users
|
|
end
|
|
|
|
private
|
|
def find_direct_placeholder_users
|
|
exclude_user_ids = user_ids_already_in_direct_rooms_with_current_user.including(Current.user.id)
|
|
User.active.where.not(id: exclude_user_ids).order(:created_at).limit([ DIRECT_PLACEHOLDERS - exclude_user_ids.count, 0 ].max)
|
|
end
|
|
|
|
def user_ids_already_in_direct_rooms_with_current_user
|
|
Membership.where(room_id: Current.user.rooms.directs.pluck(:id)).pluck(:user_id).uniq
|
|
end
|
|
end
|