favourite changes

favourites.js no longer makes socket calls, moved that code into
socket.io/posts.js. it also makes a single socket call when you downvote
a post that you previously upvoted.
This commit is contained in:
barisusakli
2014-04-09 20:55:49 -04:00
parent e7f16e2b17
commit 95972209f4
6 changed files with 182 additions and 223 deletions

View File

@@ -11,7 +11,7 @@ var async = require('async'),
notifications = require('../notifications'),
groups = require('../groups'),
user = require('../user'),
index = require('./index'),
websockets = require('./index'),
SocketPosts = {};
@@ -40,38 +40,50 @@ SocketPosts.reply = function(socket, data, callback) {
posts: [postData]
};
index.server.sockets.emit('event:new_post', socketData);
websockets.server.sockets.emit('event:new_post', socketData);
callback();
}
});
};
SocketPosts.upvote = function(socket, data) {
favouriteCommand('upvote', socket, data);
SocketPosts.upvote = function(socket, data, callback) {
favouriteCommand('upvote', 'voted', socket, data, callback);
sendNotificationToPostOwner(data, socket.uid, 'has upvoted your post');
};
SocketPosts.downvote = function(socket, data) {
favouriteCommand('downvote', socket, data);
SocketPosts.downvote = function(socket, data, callback) {
favouriteCommand('downvote', 'voted', socket, data, callback);
};
SocketPosts.unvote = function(socket, data) {
favouriteCommand('unvote', socket, data);
SocketPosts.unvote = function(socket, data, callback) {
favouriteCommand('unvote', 'voted', socket, data, callback);
};
SocketPosts.favourite = function(socket, data) {
favouriteCommand('favourite', socket, data);
SocketPosts.favourite = function(socket, data, callback) {
favouriteCommand('favourite', 'favourited', socket, data, callback);
sendNotificationToPostOwner(data, socket.uid, 'has favourited your post');
};
SocketPosts.unfavourite = function(socket, data) {
favouriteCommand('unfavourite', socket, data);
SocketPosts.unfavourite = function(socket, data, callback) {
favouriteCommand('unfavourite', 'favourited', socket, data, callback);
};
function favouriteCommand(command, socket, data) {
function favouriteCommand(command, eventName, socket, data, callback) {
if(data && data.pid && data.room_id) {
favourites[command](data.pid, data.room_id, socket.uid, socket);
favourites[command](data.pid, socket.uid, function(err, result) {
if (err) {
return callback(err);
}
socket.emit('posts.' + command, data.pid);
if(data.room_id && result && eventName) {
websockets.in(data.room_id).emit('event:' + eventName, result);
}
callback();
});
}
}
@@ -140,7 +152,7 @@ SocketPosts.edit = function(socket, data, callback) {
return callback(err);
}
index.server.sockets.in('topic_' + results.topic.tid).emit('event:post_edited', {
websockets.server.sockets.in('topic_' + results.topic.tid).emit('event:post_edited', {
pid: data.pid,
title: results.topic.title,
isMainPost: results.topic.isMainPost,
@@ -172,7 +184,7 @@ function deleteOrRestore(command, socket, data, callback) {
module.parent.exports.emitTopicPostStats();
var eventName = command === 'restore' ? 'event:post_restored' : 'event:post_deleted';
index.server.sockets.in('topic_' + data.tid).emit(eventName, {
websockets.server.sockets.in('topic_' + data.tid).emit(eventName, {
pid: data.pid
});