# frozen_string_literal: true

class GroupLabelsFinder
  attr_reader :current_user, :group, :params

  def initialize(current_user, group, params = {})
    @current_user = current_user
    @group = group
    @params = params
  end

  def execute
    group.labels
      .optionally_subscribed_by(subscriber_id)
      .optionally_search(params[:search])
      .order_by(params[:sort])
      .page(params[:page])
  end

  private

  def subscriber_id
    current_user&.id if subscribed?
  end

  def subscribed?
    params[:subscribed] == 'true'
  end
end