refactor: channelUsers
This commit is contained in:
parent
3a86b1dd0e
commit
e400ab0113
|
@ -7,6 +7,15 @@ import createRedisClient, {keys} from './redis';
|
||||||
|
|
||||||
const redisClient = createRedisClient();
|
const redisClient = createRedisClient();
|
||||||
const mget = promisify(redisClient.mget.bind(redisClient));
|
const mget = promisify(redisClient.mget.bind(redisClient));
|
||||||
|
|
||||||
|
export const channelUsers = async (channel) => {
|
||||||
|
const socketKeys = await keys(redisClient, `${channel}:users:*`);
|
||||||
|
return 0 === socketKeys.length
|
||||||
|
? []
|
||||||
|
: Object.keys((await mget(socketKeys)).reduce((r, k) => ({[k]: true, ...r}), {}))
|
||||||
|
.map((idStrings) => parseInt(idStrings, 10));
|
||||||
|
};
|
||||||
|
|
||||||
const channelState = async (req, channel) => {
|
const channelState = async (req, channel) => {
|
||||||
const messageKeys = await keys(redisClient, `${channel}:messages:*`);
|
const messageKeys = await keys(redisClient, `${channel}:messages:*`);
|
||||||
const messages = 0 === messageKeys.length
|
const messages = 0 === messageKeys.length
|
||||||
|
@ -17,14 +26,9 @@ const channelState = async (req, channel) => {
|
||||||
uuid: messageKeys[i].split(':')[2],
|
uuid: messageKeys[i].split(':')[2],
|
||||||
}))
|
}))
|
||||||
.sort((l, r) => l.timestamp - r.timestamp);
|
.sort((l, r) => l.timestamp - r.timestamp);
|
||||||
const socketKeys = await keys(redisClient, `${channel}:users:*`);
|
|
||||||
const users = 0 === socketKeys.length
|
|
||||||
? []
|
|
||||||
: Object.keys((await mget(socketKeys)).reduce((r, k) => ({[k]: true, ...r}), {}))
|
|
||||||
.map((idStrings) => parseInt(idStrings, 10));
|
|
||||||
return {
|
return {
|
||||||
messages,
|
messages,
|
||||||
users,
|
users: channelUsers(channel),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user