diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-06-17 16:40:18 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-06-17 16:40:18 +0900 |
| commit | d692bb3c523ce237d240177efc471170bbe1b3a4 (patch) | |
| tree | 8242f51ef37fa36c9bb55651e8b03b3292b7b842 /src/server/api | |
| parent | Merge pull request #1728 from rinsuki/fix/1726 (diff) | |
| download | sharkey-d692bb3c523ce237d240177efc471170bbe1b3a4.tar.gz sharkey-d692bb3c523ce237d240177efc471170bbe1b3a4.tar.bz2 sharkey-d692bb3c523ce237d240177efc471170bbe1b3a4.zip | |
Improve user search
Diffstat (limited to 'src/server/api')
| -rw-r--r-- | src/server/api/endpoints/users/search.ts | 1 | ||||
| -rw-r--r-- | src/server/api/endpoints/users/search_by_username.ts | 18 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/server/api/endpoints/users/search.ts b/src/server/api/endpoints/users/search.ts index cfbdc337bf..95b9e4f4bb 100644 --- a/src/server/api/endpoints/users/search.ts +++ b/src/server/api/endpoints/users/search.ts @@ -40,6 +40,7 @@ async function byNative(res, rej, me, query, offset, max) { // Search users const users = await User .find({ + host: null, $or: [{ usernameLower: new RegExp(escapedQuery.replace('@', '').toLowerCase()) }, { diff --git a/src/server/api/endpoints/users/search_by_username.ts b/src/server/api/endpoints/users/search_by_username.ts index 5927d00faf..7c9fbba0fa 100644 --- a/src/server/api/endpoints/users/search_by_username.ts +++ b/src/server/api/endpoints/users/search_by_username.ts @@ -20,15 +20,27 @@ module.exports = (params, me) => new Promise(async (res, rej) => { const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit); if (limitErr) return rej('invalid limit param'); - const users = await User + let users = await User .find({ + host: null, usernameLower: new RegExp(query.toLowerCase()) }, { limit: limit, skip: offset }); + if (users.length < limit) { + const remoteUsers = await User + .find({ + host: { $ne: null }, + usernameLower: new RegExp(query.toLowerCase()) + }, { + limit: limit - users.length + }); + + users = users.concat(remoteUsers); + } + // Serialize - res(await Promise.all(users.map(async user => - await pack(user, me, { detail: true })))); + res(await Promise.all(users.map(user => pack(user, me, { detail: true })))); }); |