From 8dc7a0dbbf24bf7c3e4bc2ce9170777379192b6a Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Tue, 13 Aug 2013 15:05:35 -0400 Subject: [PATCH] changed favouriting to wait for socket call to end before changing star class --- public/src/forum/topic.js | 11 ++++++++--- src/favourites.js | 13 +++++++------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index b99a10862d..fe3dd042fa 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -254,11 +254,9 @@ var element = $(this).find('i'); if(element.attr('class') == 'icon-star-empty') { - element.attr('class', 'icon-star'); socket.emit('api:posts.favourite', {pid: pid, room_id: app.current_room}); } else { - element.attr('class', 'icon-star-empty'); socket.emit('api:posts.unfavourite', {pid: pid, room_id: app.current_room}); } }); @@ -387,7 +385,14 @@ }); socket.on('api:posts.favourite', function(data) { - if (data.status !== 'ok' && data.pid) { + if (data.status === 'ok' && data.pid) { + var favEl = document.querySelector('.post_rep_' + data.pid).nextSibling; + if (favEl) favEl.className = 'icon-star'; + } + }); + + socket.on('api:posts.unfavourite', function(data) { + if (data.status === 'ok' && data.pid) { var favEl = document.querySelector('.post_rep_' + data.pid).nextSibling; if (favEl) favEl.className = 'icon-star-empty'; } diff --git a/src/favourites.js b/src/favourites.js index 289e7b8fd6..894a301311 100644 --- a/src/favourites.js +++ b/src/favourites.js @@ -13,11 +13,6 @@ var RDB = require('./redis.js'), type: 'error', timeout: 5000 }); - - socket.emit('api:posts.favourite', { - status: 'error', - pid: pid - }); return; } @@ -39,7 +34,8 @@ var RDB = require('./redis.js'), } socket.emit('api:posts.favourite', { - status: 'ok' + status: 'ok', + pid: pid }); } }); @@ -75,6 +71,11 @@ var RDB = require('./redis.js'), if (room_id) { io.sockets.in(room_id).emit('event:rep_down', {uid: uid !== uid_of_poster ? uid_of_poster : 0, pid: pid}); } + + socket.emit('api:posts.unfavourite', { + status: 'ok', + pid: pid + }); } }); });