mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-05 05:25:49 +01:00
first part of messaging refactor
This commit is contained in:
46
src/messaging/rooms.js
Normal file
46
src/messaging/rooms.js
Normal file
@@ -0,0 +1,46 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
|
||||
var db = require('../database');
|
||||
|
||||
module.exports = function(Messaging) {
|
||||
|
||||
Messaging.roomExists = function(roomId, callback) {
|
||||
db.exists('chat:room:' + roomId + ':uids', callback);
|
||||
};
|
||||
|
||||
Messaging.isRoomOwner = function(uid, roomId, callback) {
|
||||
db.getSortedSetRange('chat:room:' + roomId + ':uids', 0, 0, function(err, uids) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
if (!Array.isArray(uids) || !uids.length) {
|
||||
return callback(null, false);
|
||||
}
|
||||
callback(null, parseInt(uids[0], 10) === parseInt(uid, 10));
|
||||
});
|
||||
};
|
||||
|
||||
Messaging.addUsersToRoom = function(fromuid, toUids, roomId, callback) {
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
Messaging.isRoomOwner(fromuid, roomId, next);
|
||||
},
|
||||
function (isOwner, next) {
|
||||
if (!isOwner) {
|
||||
return next(new Error('[[error:cant-add-users-to-chat-room]]'));
|
||||
}
|
||||
var now = Date.now();
|
||||
var timestamps = toUids.map(function() {
|
||||
return now;
|
||||
});
|
||||
db.sortedSetAdd('chat:room:' + roomId + ':uids', timestamps, toUids, next);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
Messaging.getUidsInRoom = function(roomId, start, stop, callback) {
|
||||
db.getSortedSetRange('chat:room:' + roomId + ':uids', start, stop, callback);
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user