Sha256: 091559b16e64ebec34761cb275fb1ad772ad5cae3c3a5599d3547d244b8ff54e

Contents?: true

Size: 1.37 KB

Versions: 18

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true

module Thredded
  class AutocompleteUsersController < Thredded::ApplicationController
    MAX_RESULTS = 20

    def index
      authorize_creating Thredded::PrivateTopicForm.new(user: thredded_current_user).private_topic
      users = params.key?(:q) ? users_by_prefix : users_by_ids
      render json: {
        results: users.map { |user| user_to_autocomplete_result(user) }
      }
    end

    protected

    def user_to_autocomplete_result(user)
      {
        id: user.id,
        name: user.send(Thredded.user_name_column),
        display_name: user.send(Thredded.user_display_name_method),
        avatar_url: Thredded.avatar_url.call(user)
      }
    end

    private

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

    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

18 entries across 18 versions & 1 rubygems

Version Path
thredded-1.1.0 app/controllers/thredded/autocomplete_users_controller.rb
thredded-1.0.1 app/controllers/thredded/autocomplete_users_controller.rb
thredded-1.0.0 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.16 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.15 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.14 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.13 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.12 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.11 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.10 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.9 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.8 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.7 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.6 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.5 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.4 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.3 app/controllers/thredded/autocomplete_users_controller.rb
thredded-0.16.1 app/controllers/thredded/autocomplete_users_controller.rb