feat: #7842, make isInvited, isPending work with uids

v1.18.x
Barış Soner Uşaklı 6 years ago
parent 4eaa630b1c
commit fa26855671

@ -1,5 +1,7 @@
'use strict'; 'use strict';
const _ = require('lodash');
const db = require('../database'); const db = require('../database');
const user = require('../user'); const user = require('../user');
const utils = require('../utils'); const utils = require('../utils');
@ -90,20 +92,23 @@ module.exports = function (Groups) {
}); });
} }
Groups.isInvited = async function (uid, groupName) { Groups.isInvited = async function (uids, groupName) {
if (!(parseInt(uid, 10) > 0)) { return await checkInvitePending(uids, 'group:' + groupName + ':invited');
return false;
}
return await db.isSetMember('group:' + groupName + ':invited', uid);
}; };
Groups.isPending = async function (uid, groupName) { Groups.isPending = async function (uids, groupName) {
if (!(parseInt(uid, 10) > 0)) { return await checkInvitePending(uids, 'group:' + groupName + ':pending');
return false;
}
return await db.isSetMember('group:' + groupName + ':pending', uid);
}; };
async function checkInvitePending(uids, set) {
const isArray = Array.isArray(uids);
uids = isArray ? uids : [uids];
const checkUids = uids.filter(uid => parseInt(uid, 10) > 0);
const isMembers = await db.isSetMembers(set, checkUids);
const map = _.zipObject(checkUids, isMembers);
return isArray ? uids.map(uid => !!map[uid]) : !!map[uids[0]];
}
Groups.getPending = async function (groupName) { Groups.getPending = async function (groupName) {
if (!groupName) { if (!groupName) {
return []; return [];

@ -870,9 +870,9 @@ describe('Groups', function () {
assert.ifError(err); assert.ifError(err);
socketGroups.issueMassInvite({ uid: adminUid }, { groupName: 'PrivateCanJoin', usernames: 'invite1, invite2' }, function (err) { socketGroups.issueMassInvite({ uid: adminUid }, { groupName: 'PrivateCanJoin', usernames: 'invite1, invite2' }, function (err) {
assert.ifError(err); assert.ifError(err);
Groups.isInvited(uid, 'PrivateCanJoin', function (err, isInvited) { Groups.isInvited([adminUid, uid], 'PrivateCanJoin', function (err, isInvited) {
assert.ifError(err); assert.ifError(err);
assert(isInvited); assert.deepStrictEqual(isInvited, [false, true]);
done(); done();
}); });
}); });

Loading…
Cancel
Save