From 93653e88dfb4a8afbbc2b374485a02e33d2eea0b Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Wed, 10 Jul 2013 11:20:31 -0400 Subject: [PATCH] changed most of the ajax calls to use sockets --- public/src/forum/account.js | 10 ++---- public/src/forum/accountedit.js | 11 ++---- public/src/forum/following.js | 11 +++--- public/src/forum/footer.js | 10 +++--- src/routes/user.js | 46 ------------------------- src/user.js | 8 ++++- src/websockets.js | 59 +++++++++++++++++++++++++++++++++ 7 files changed, 81 insertions(+), 74 deletions(-) diff --git a/public/src/forum/account.js b/public/src/forum/account.js index 8619c91594..aee6dae9ef 100644 --- a/public/src/forum/account.js +++ b/public/src/forum/account.js @@ -26,13 +26,9 @@ } followBtn.on('click', function() { - - $.post('/users/follow', {uid: theirid, _csrf:$('#csrf_token').val()}, - function(data) { - followBtn.remove(); - $('#user-action-alert').html('You are now following'+ $('.account-username').text() +'!').show(); - } - ); + + followBtn.remove(); + socket.emit('api:user.follow', {uid: theirid}); return false; }); diff --git a/public/src/forum/accountedit.js b/public/src/forum/accountedit.js index 53918a36cd..b84d08abd7 100644 --- a/public/src/forum/accountedit.js +++ b/public/src/forum/accountedit.js @@ -82,17 +82,10 @@ $(document).ready(function() { function changeUserPicture(type) { var userData = { - uid: $('#inputUID').val(), - type: type, - _csrf:$('#csrf_token').val() + type: type }; - $.post('/users/changepicture', - userData, - function(data) { - socket.emit('api:updateHeader', { fields: ['username', 'picture', 'userslug'] }); - } - ); + socket.emit('api:user.changePicture', userData); } var selectedImageType = ''; diff --git a/public/src/forum/following.js b/public/src/forum/following.js index d4b30fada6..53e368d202 100644 --- a/public/src/forum/following.js +++ b/public/src/forum/following.js @@ -16,16 +16,13 @@ $('.unfollow-btn').hide(); } else { - $('.unfollow-btn').on('click',function(){ + $('.unfollow-btn').on('click',function() { var removeBtn = $(this); var followingUid = $(this).attr('followingUid'); - - $.post('/users/unfollow', {uid: followingUid, _csrf:$('#csrf_token').val()}, - function(data) { - removeBtn.parent().remove(); - } - ); + + removeBtn.parent().remove(); + socket.emit('api:user.unfollow', {uid: followingUid}); return false; }); } diff --git a/public/src/forum/footer.js b/public/src/forum/footer.js index 57360e12cb..2c3e265da0 100644 --- a/public/src/forum/footer.js +++ b/public/src/forum/footer.js @@ -47,10 +47,12 @@ var userLabel = rightMenu.find('#user_label'); if(userLabel.length) { - userLabel.attr('href','/users/'+data['userslug']); - - userLabel.find('img').attr('src',data['picture']+"?s=24&default=identicon"); - userLabel.find('span').html(data['username']); + if(data['userslug']) + userLabel.attr('href','/users/' + data['userslug']); + if(data['picture']) + userLabel.find('img').attr('src',data['picture']+"?s=24&default=identicon"); + if(data['username']) + userLabel.find('span').html(data['username']); } else { var userli = $('
  • \ diff --git a/src/routes/user.js b/src/routes/user.js index 273ab0e74f..91f7176384 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -166,52 +166,6 @@ var user = require('./../user.js'), is.pipe(os); } - - - app.post('/users/changepicture', function(req, res){ - if(!req.user) - return res.redirect('/403'); - - if(req.user.uid != req.body.uid) - return res.redirect('/'); - - var type = req.body.type; - if(type == 'gravatar') { - user.getUserField(req.user.uid, 'gravatarpicture', function(gravatar) { - user.setUserField(req.user.uid, 'picture', gravatar); - }); - } - else if(type == 'uploaded') { - user.getUserField(req.user.uid, 'uploadedpicture', function(uploadedpicture) { - user.setUserField(req.user.uid, 'picture', uploadedpicture); - }); - } - res.send({}); - }); - - app.post('/users/follow', function(req, res){ - if(!req.user) - return res.redirect('/403'); - - if(req.user.uid == req.body.uid) - return res.redirect('/'); - - user.follow(req.user.uid, req.body.uid, function(data) { - res.json({ data:data }); - }); - }); - - app.post('/users/unfollow', function(req, res){ - if(!req.user) - return res.redirect('/403'); - - if(req.user.uid == req.body.uid) - return res.redirect('/'); - - user.unfollow(req.user.uid, req.body.uid, function(data) { - res.json({ data:data }); - }); - }); app.get('/users/:userslug/following', function(req, res) { diff --git a/src/user.js b/src/user.js index 28e29280d9..51ae5ccdca 100644 --- a/src/user.js +++ b/src/user.js @@ -464,10 +464,16 @@ var utils = require('./../public/src/utils.js'), RDB.sadd('following:' + uid, followid, function(err, data) { if(!err) { RDB.sadd('followers:' + followid, uid, function(err, data) { - callback(data); + if(!err) { + callback(true); + } else { + console.log(err); + callback(false); + } }); } else { console.log(err); + callback(false); } }); } diff --git a/src/websockets.js b/src/websockets.js index 8fc114f38c..e663d7cca6 100644 --- a/src/websockets.js +++ b/src/websockets.js @@ -202,6 +202,65 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }), user.updateProfile(socket, uid, data); }); + socket.on('api:user.changePicture', function(data) { + + var type = data.type; + + function updateHeader() { + user.getUserFields(uid, ['picture'], function(fields) { + fields.uid = uid; + socket.emit('api:updateHeader', fields); + }); + } + + if(type === 'gravatar') { + user.getUserField(uid, 'gravatarpicture', function(gravatar) { + user.setUserField(uid, 'picture', gravatar); + updateHeader(); + }); + } + else if(type === 'uploaded') { + user.getUserField(uid, 'uploadedpicture', function(uploadedpicture) { + user.setUserField(uid, 'picture', uploadedpicture); + updateHeader(); + }); + } + + }); + + + socket.on('api:user.follow', function(data) { + + user.follow(uid, data.uid, function(success) { + if(success) { + user.getUserField(data.uid, 'username', function(username) { + socket.emit('event:alert', { + title: 'Following', + message: 'You are now following ' + username + '!', + type: 'success', + timeout: 2000 + }); + }); + } + }); + }); + + socket.on('api:user.unfollow', function(data) { + + user.unfollow(uid, data.uid, function(success) { + if(success) { + user.getUserField(data.uid, 'username', function(username) { + socket.emit('event:alert', { + title: 'Unfollowed', + message: 'You are no longer following ' + username + '!', + type: 'success', + timeout: 2000 + }); + }); + } + }); + }); + socket.on('api:topics.post', function(data) { topics.post(socket, uid, data.title, data.content, data.category_id); });