From 7f23f848fe6d2131ddaff1071158a0188d48e36c Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Fri, 24 Jan 2014 12:11:22 -0500 Subject: [PATCH] fix for mismatch between favourite count and number of people in favourited seT --- src/favourites.js | 27 ++++++++++++++++----------- src/socket.io/posts.js | 1 + 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/favourites.js b/src/favourites.js index aa017c982b..935e4542da 100644 --- a/src/favourites.js +++ b/src/favourites.js @@ -27,13 +27,17 @@ var async = require('async'), posts.getPostFields(pid, ['uid', 'timestamp'], function (err, postData) { - Favourites.hasFavourited(pid, uid, function (hasFavourited) { + Favourites.hasFavourited(pid, uid, function (err, hasFavourited) { if (!hasFavourited) { - db.setAdd('pid:' + pid + ':users_favourited', uid); + db.sortedSetAdd('uid:' + uid + ':favourites', postData.timestamp, pid); + db.setAdd('pid:' + pid + ':users_favourited', uid, function(err) { + db.setCount('pid:' + pid + ':users_favourited', function(err, count) { + posts.setPostField(pid, 'reputation', count); + }); + }); - db.incrObjectFieldBy('post:' + pid, 'reputation', 1); if (uid !== postData.uid) { user.incrementUserFieldBy(postData.uid, 'reputation', 1, function (err, newreputation) { @@ -64,12 +68,16 @@ var async = require('async'), } posts.getPostField(pid, 'uid', function (err, uid_of_poster) { - Favourites.hasFavourited(pid, uid, function (hasFavourited) { + Favourites.hasFavourited(pid, uid, function (err, hasFavourited) { if (hasFavourited) { - db.setRemove('pid:' + pid + ':users_favourited', uid); + db.sortedSetRemove('uid:' + uid + ':favourites', pid); - db.incrObjectFieldBy('post:' + pid, 'reputation', -1); + db.setRemove('pid:' + pid + ':users_favourited', uid, function(err) { + db.setCount('pid:' + pid + ':users_favourited', function(err, count) { + posts.setPostField(pid, 'reputation', count); + }); + }); if (uid !== uid_of_poster) { user.incrementUserFieldBy(uid_of_poster, 'reputation', -1, function (err, newreputation) { @@ -93,17 +101,14 @@ var async = require('async'), }; Favourites.hasFavourited = function (pid, uid, callback) { - db.isSetMember('pid:' + pid + ':users_favourited', uid, function (err, hasFavourited) { - - callback(hasFavourited); - }); + db.isSetMember('pid:' + pid + ':users_favourited', uid, callback); }; Favourites.getFavouritesByPostIDs = function (pids, uid, callback) { var data = {}; function iterator(pid, next) { - Favourites.hasFavourited(pid, uid, function (hasFavourited) { + Favourites.hasFavourited(pid, uid, function (err, hasFavourited) { data[pid] = hasFavourited; next() }); diff --git a/src/socket.io/posts.js b/src/socket.io/posts.js index c721b90f86..652f09cada 100644 --- a/src/socket.io/posts.js +++ b/src/socket.io/posts.js @@ -170,6 +170,7 @@ SocketPosts.getPrivileges = function(socket, pid, callback) { }; SocketPosts.getFavouritedUsers = function(socket, pid, callback) { + favourites.getFavouritedUidsByPids([pid], function(data) { var max = 5; //hardcoded var usernames = "";