# frozen_string_literal: true

# This is used on a topic page
class TopicParticipantGroupsSummary
  attr_reader :topic, :options

  def initialize(topic, options = {})
    @topic = topic
    @options = options
    @group = options[:group]
  end

  def summary
    group_participants.compact
  end

  def group_participants
    return [] if group_ids.blank?
    group_ids.map { |id| group_lookup[id] }
  end

  def group_ids
    ids = topic.allowed_group_ids
    ids = ids - [@group.id] if @group.present?
    ids
  end

  def group_lookup
    @group_lookup ||= options[:group_lookup] || GroupLookup.new(group_ids)
  end
end