summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-06-17 16:40:18 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-06-17 16:40:18 +0900
commitd692bb3c523ce237d240177efc471170bbe1b3a4 (patch)
tree8242f51ef37fa36c9bb55651e8b03b3292b7b842 /src/server/api
parentMerge pull request #1728 from rinsuki/fix/1726 (diff)
downloadsharkey-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.ts1
-rw-r--r--src/server/api/endpoints/users/search_by_username.ts18
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 }))));
});