From 1f99666d9f519125bd11b93fda03ede3d31eefd1 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Thu, 23 May 2013 15:11:55 -0400 Subject: [PATCH 1/6] moved favourites code out of posts --- src/favourites.js | 100 ++++++++++++++++++++++++++++++++++++++++++++++ src/posts.js | 99 ++------------------------------------------- src/websockets.js | 5 ++- 3 files changed, 106 insertions(+), 98 deletions(-) create mode 100644 src/favourites.js diff --git a/src/favourites.js b/src/favourites.js new file mode 100644 index 0000000000..3737e1cc66 --- /dev/null +++ b/src/favourites.js @@ -0,0 +1,100 @@ +var RDB = require('./redis.js'), + user = require('./user.js'); + +(function(Favourites) { + + Favourites.favourite = function(pid, room_id, uid, socket) { + if (uid === 0) { + socket.emit('event:alert', { + alert_id: 'post_favourite', + title: 'Not Logged In', + message: 'Please log in in order to favourite this post', + type: 'error', + timeout: 5000 + }); + + socket.emit('api:posts.favourite', { + status: 'error', + pid: pid + }); + return; + } + + RDB.get('pid:' + pid + ':uid', function(err, uid_of_poster) { + RDB.handle(err); + + Favourites.hasFavourited(pid, uid, function(hasFavourited) { + if (hasFavourited == false) { + RDB.sadd('pid:' + pid + ':users_favourited', uid); + RDB.incr('pid:' + pid + ':rep'); + + if (uid !== uid_of_poster) user.incrementUserFieldBy(uid_of_poster, 'reputation', 1); + + if (room_id) { + io.sockets.in(room_id).emit('event:rep_up', {uid: uid !== uid_of_poster ? uid_of_poster : 0, pid: pid}); + } + + socket.emit('api:posts.favourite', { + status: 'ok' + }); + } + }); + }); + } + + Favourites.unfavourite = function(pid, room_id, uid, socket) { + if (uid === 0) { + socket.emit('event:alert', { + alert_id: 'post_favourite', + title: 'Not Logged In', + message: 'Please log in in order to favourite this post', + type: 'error', + timeout: 5000 + }); + return; + } + + RDB.get('pid:' + pid + ':uid', function(err, uid_of_poster) { + RDB.handle(err); + + Favourites.hasFavourited(pid, uid, function(hasFavourited) { + if (hasFavourited == true) { + + RDB.srem('pid:' + pid + ':users_favourited', uid); + RDB.decr('pid:' + pid + ':rep'); + + if (uid !== uid_of_poster) user.incrementUserFieldBy(uid_of_poster, 'reputation', -1); + + if (room_id) { + io.sockets.in(room_id).emit('event:rep_down', {uid: uid !== uid_of_poster ? uid_of_poster : 0, pid: pid}); + } + } + }); + }); + } + + Favourites.hasFavourited = function(pid, uid, callback) { + RDB.sismember('pid:' + pid + ':users_favourited', uid, function(err, hasFavourited) { + RDB.handle(err); + + callback(hasFavourited); + }); + } + + Favourites.getFavouritesByPostIDs = function(pids, uid, callback) { + var loaded = 0; + var data = {}; + + for (var i=0, ii=pids.length; i Date: Thu, 23 May 2013 15:16:06 -0400 Subject: [PATCH 2/6] if there are no topics in a category and you make the first topic it doesnt show up until you reload the page --- public/templates/category.tpl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/public/templates/category.tpl b/public/templates/category.tpl index 0d45345e9c..40ee2654a9 100644 --- a/public/templates/category.tpl +++ b/public/templates/category.tpl @@ -107,6 +107,9 @@ numTopics = topics.length, x; + jQuery('.category.row').show(); + jQuery('#category-no-topics').hide(); + topic.innerHTML = html; if (numTopics > 0) { for(x=0;x Date: Thu, 23 May 2013 15:17:18 -0400 Subject: [PATCH 3/6] assorted --- src/websockets.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/websockets.js b/src/websockets.js index 4af2a7f28d..fb6480571c 100644 --- a/src/websockets.js +++ b/src/websockets.js @@ -69,6 +69,10 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}), socket.on('disconnect', function() { user.go_offline(uid); delete users[hs.sessionID]; + var index = userSockets[uid].indexOf(socket); + if(index !== -1) { + userSockets[uid].splice(index, 1); + } }); socket.on('api:get_all_rooms', function(data) { @@ -267,13 +271,13 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}), user.getUserField(uid, 'username', function(username) { var finalMessage = username + ' says : ' + msg; - for(var x=0;x>numSockets;x++) { + for(var x=0;x Date: Thu, 23 May 2013 15:23:37 -0400 Subject: [PATCH 4/6] proof that comments can be misleading --- src/topics.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/topics.js b/src/topics.js index b9cc6693d3..2cb0382105 100644 --- a/src/topics.js +++ b/src/topics.js @@ -313,7 +313,7 @@ marked.setOptions({ if (pid > 0) { RDB.lpush('tid:' + tid + ':posts', pid); - // Notify any users looking at the category that a new post has arrived + // Notify any users looking at the category that a new topic has arrived Topics.get_topic(tid, uid, function(topicData) { io.sockets.in('category_' + category_id).emit('event:new_topic', topicData); }); From 16bf813dcda34f51a53a4ece853fed023817cbb2 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Thu, 23 May 2013 15:41:28 -0400 Subject: [PATCH 5/6] home page derp --- public/css/style.less | 2 +- public/templates/home.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/css/style.less b/public/css/style.less index df1cfa44c0..cf6552c0d5 100644 --- a/public/css/style.less +++ b/public/css/style.less @@ -588,7 +588,7 @@ footer.footer { } .category-row h4 { font-weight: 700; - text-align: center; + text-align: left; color: #555; white-space: nowrap; overflow: hidden; diff --git a/public/templates/home.tpl b/public/templates/home.tpl index 880b244505..ef2de6c4e8 100644 --- a/public/templates/home.tpl +++ b/public/templates/home.tpl @@ -6,7 +6,7 @@