2015-03-20 14:21:44 -07:00

90 lines
2.4 KiB
JavaScript

var UserStore = require('../../../persistence/users');
var dispatcher = require('../../../util/dispatcher');
module.exports = function(app){
return new Handler(app, app.get('chatService'));
};
var Handler = function(app, chatService){
this.app = app;
this.chatService = chatService;
};
var handler = Handler.prototype;
/**
* Send messages to users in the channel
*
* @param {Object} msg message from client
* @param {Object} session
* @param {Function} next next stemp callback
*
*/
handler.sendMessage = function(msg, session, next){
var me = this;
var tid = session.get('tid');
var channelService = this.app.get('channelService');
UserStore.getByAttr('id', session.uid, false, function(e, user){
if(!user){
next(null, {
code : 500,
error : 'user-not-exist'
});
return;
}
// target is all users
if(msg.target == 'table'){
var channel = channelService.getChannel(tid, true);
msg.target = '*';
channel.pushMessage({
route : 'onChat',
msg : msg.content,
username : user.username,
target : msg.target
});
next(null, {
code : 200,
route : msg.route
});
}else{
// target is specific user
me.chatService.pushByPlayerName(msg.target, {
username : user.username,
msg : msg.content
}, function(e){
if(e){
return next(null, {
code : 500,
error : e
});
}
next(null, {
code : 200,
route : msg.route
});
});
}
});
};
/**
* Get friend list
*
* @param {Object} msg game parameters from client
* @param {Object} session
* @param {Function} next next step callback
*
*/
handler.getFriends = function(msg, session, next){
this.chatService.getFriendList(session.uid, function(e, friends){
if(e){
return next(null, {
code : 500,
error : e
});
}
next(null, {
code : 200,
route : msg.route,
friends : friends
});
});
};