mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
refactor: User.getUidsByUserslugs, so it works with multiple slugs
This commit is contained in:
@@ -126,7 +126,36 @@ User.getUidByUserslug = async function (userslug) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
User.getUidsByUserslugs = async function (userslugs) {
|
User.getUidsByUserslugs = async function (userslugs) {
|
||||||
return await db.sortedSetScores('userslug:uid', userslugs);
|
const apSlugs = userslugs.filter(slug => slug.includes('@'));
|
||||||
|
const normalSlugs = userslugs.filter(slug => !slug.includes('@'));
|
||||||
|
const slugToUid = Object.create(null);
|
||||||
|
async function getApSlugs() {
|
||||||
|
await Promise.all(apSlugs.map(slug => activitypub.actors.assert(slug)));
|
||||||
|
const apUids = await db.getObjectFields(
|
||||||
|
'handle:uid',
|
||||||
|
apSlugs.map(slug => String(slug).toLowerCase()),
|
||||||
|
);
|
||||||
|
return apUids;
|
||||||
|
}
|
||||||
|
|
||||||
|
const [apUids, normalUids] = await Promise.all([
|
||||||
|
apSlugs.length ? getApSlugs() : [],
|
||||||
|
normalSlugs.length ? db.sortedSetScores('userslug:uid', normalSlugs) : [],
|
||||||
|
]);
|
||||||
|
|
||||||
|
apSlugs.forEach((slug) => {
|
||||||
|
if (apUids[slug]) {
|
||||||
|
slugToUid[slug] = apUids[slug];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
normalSlugs.forEach((slug, i) => {
|
||||||
|
if (normalUids[i]) {
|
||||||
|
slugToUid[slug] = normalUids[i];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return userslugs.map(slug => slugToUid[slug] || null);
|
||||||
};
|
};
|
||||||
|
|
||||||
User.getUsernamesByUids = async function (uids) {
|
User.getUsernamesByUids = async function (uids) {
|
||||||
|
|||||||
Reference in New Issue
Block a user