This commit is contained in:
hippoz 2021-01-03 17:04:23 +02:00
parent 7d1882895b
commit 6c5470e6b1
Signed by untrusted user who does not match committer: hippoz
GPG key ID: 7C52899193467641

View file

@ -226,21 +226,25 @@ GatewayServer.prototype.eventSetup = function() {
socket.on('subscribe', async (categories) => { socket.on('subscribe', async (categories) => {
if ( !socket.isConnected || !socket.user || !categories || !Array.isArray(categories) || categories === []) return; if ( !socket.isConnected || !socket.user || !categories || !Array.isArray(categories) || categories === []) return;
for (const v of categories) { try {
if (!v && !(typeof v === 'string')) continue; for (const v of categories) {
// TODO: When/if category permissions are added, check if the user has permissions for that category if (!v && !(typeof v === 'string')) continue;
const category = await Category.findById(v); // TODO: When/if category permissions are added, check if the user has permissions for that category
if (category && category.title && category._id) { const category = await Category.findById(v);
if (!socket.joinedCategories) socket.joinedCategories = {}; if (category && category.title && category._id) {
if (socket.joinedCategories[v]) continue; if (!socket.joinedCategories) socket.joinedCategories = {};
socket.joinedCategories[v] = category.title; if (socket.joinedCategories[v]) continue;
await socket.join(v); socket.joinedCategories[v] = category.title;
await socket.join(v);
console.log(`[*] [gateway] User ${socket.user.username} subscribed to room ${v} (${category.title}), sending updated user list to all members of that room...`); console.log(`[*] [gateway] User ${socket.user.username} subscribed to room ${v} (${category.title}), sending updated user list to all members of that room...`);
const upd = await this._generateClientListUpdateObject(v, category.title); const upd = await this._generateClientListUpdateObject(v, category.title);
this._gateway.in(v).emit('clientListUpdate', upd); this._gateway.in(v).emit('clientListUpdate', upd);
}
} }
} catch (e) {
return;
} }
}); });