From 030f696cdd797734764d595d0f1dd763add07330 Mon Sep 17 00:00:00 2001
From: Maximilian Weiler <16721506+maweil@users.noreply.github.com>
Date: Fri, 15 Oct 2021 01:48:47 +0200
Subject: [PATCH] Show direct match on top for user search (#17303)

This PR makes sure that direct matches in the user search always show on top of the result list.

The following places were checked to follow the desired behavior now:
- Search when adding a user to a team
- Search when adding a user as a collaborator to a repository

Signed-off-by: Maximilian Weiler <16721506+maweil@users.noreply.github.com>
---
 web_src/js/index.js | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/web_src/js/index.js b/web_src/js/index.js
index 71e5691179a..bc9725da954 100644
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -2233,15 +2233,21 @@ function searchUsers() {
       url: `${AppSubUrl}/api/v1/users/search?q={query}`,
       onResponse(response) {
         const items = [];
+        const searchQueryUppercase = $searchUserBox.find('input').val().toUpperCase();
         $.each(response.data, (_i, item) => {
           let title = item.login;
           if (item.full_name && item.full_name.length > 0) {
             title += ` (${htmlEscape(item.full_name)})`;
           }
-          items.push({
+          const resultItem = {
             title,
             image: item.avatar_url
-          });
+          };
+          if (searchQueryUppercase === item.login.toUpperCase()) {
+            items.unshift(resultItem);
+          } else {
+            items.push(resultItem);
+          }
         });
 
         return {results: items};