Sha256: 233a3785ce24822d13f77feb8ff1e6e0f090dc3e0072d65b773f8a4f7a8b2c17

Contents?: true

Size: 1.23 KB

Versions: 11

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true
module Thredded
  class AutocompleteUsersController < Thredded::ApplicationController
    MIN_QUERY_LENGTH = 2
    MAX_RESULTS      = 20

    def index
      authorize_creating PrivateTopicForm.new(user: thredded_current_user).private_topic
      users = params.key?(:q) ? users_by_prefix : users_by_ids
      render json: {
        results: users.map do |user|
          { id:         user.id,
            name:       user.send(Thredded.user_name_column),
            avatar_url: Thredded.avatar_url.call(user) }
        end
      }
    end

    private

    def users_by_prefix
      query = params[:q].to_s.strip
      if query.length >= MIN_QUERY_LENGTH
        DbTextSearch::CaseInsensitive.new(users_scope, Thredded.user_name_column).prefix(query)
          .where.not(id: thredded_current_user.id)
          .limit(MAX_RESULTS)
      else
        []
      end
    end

    # This method is used by select2 do fetch users by ids, e.g. in case of a browser-prefilled field.
    def users_by_ids
      ids = params[:ids].to_s.split(',')
      if ids.present?
        users_scope.where(id: ids)
      else
        []
      end
    end

    def users_scope
      thredded_current_user.thredded_can_message_users
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
thredded-0.7.0 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.6.3 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.6.2 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.6.1 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.6.0 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.5.1 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.5.0 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.4.0 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.3.2 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.3.1 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.3.0 app/controllers/thredded/autocomplete_users_controller.rb