mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-28 09:36:16 +01:00
lots of err first fixeS
This commit is contained in:
@@ -102,7 +102,10 @@ define(function() {
|
|||||||
socket.emit('topics.loadMoreRecentTopics', {
|
socket.emit('topics.loadMoreRecentTopics', {
|
||||||
after: $('#topics-container').children('li').length,
|
after: $('#topics-container').children('li').length,
|
||||||
term: active
|
term: active
|
||||||
}, function(data) {
|
}, function(err, data) {
|
||||||
|
if(err) {
|
||||||
|
return app.alertError(err.message);
|
||||||
|
}
|
||||||
if (data.topics && data.topics.length) {
|
if (data.topics && data.topics.length) {
|
||||||
Recent.onTopicsLoaded(data.topics);
|
Recent.onTopicsLoaded(data.topics);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,18 +138,10 @@ define(['composer'], function(composer) {
|
|||||||
socket.emit('topics.move', {
|
socket.emit('topics.move', {
|
||||||
tid: tid,
|
tid: tid,
|
||||||
cid: targetCid
|
cid: targetCid
|
||||||
}, function(data) {
|
}, function(err) {
|
||||||
moveThreadModal.modal('hide');
|
moveThreadModal.modal('hide');
|
||||||
if (data.status === 'ok') {
|
if(err) {
|
||||||
app.alert({
|
return app.alert({
|
||||||
'alert_id': 'thread_move',
|
|
||||||
type: 'success',
|
|
||||||
title: 'Topic Successfully Moved',
|
|
||||||
message: 'This topic has been successfully moved to ' + targetCatLabel,
|
|
||||||
timeout: 5000
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
app.alert({
|
|
||||||
'alert_id': 'thread_move',
|
'alert_id': 'thread_move',
|
||||||
type: 'danger',
|
type: 'danger',
|
||||||
title: 'Unable to Move Topic',
|
title: 'Unable to Move Topic',
|
||||||
@@ -157,6 +149,14 @@ define(['composer'], function(composer) {
|
|||||||
timeout: 5000
|
timeout: 5000
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
app.alert({
|
||||||
|
'alert_id': 'thread_move',
|
||||||
|
type: 'success',
|
||||||
|
title: 'Topic Successfully Moved',
|
||||||
|
message: 'This topic has been successfully moved to ' + targetCatLabel,
|
||||||
|
timeout: 5000
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -288,15 +288,15 @@ define(['composer'], function(composer) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
socket.emit('topics.followCheck', tid, function(state) {
|
socket.emit('topics.followCheck', tid, function(err, state) {
|
||||||
set_follow_state(state, true);
|
set_follow_state(state, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (followEl[0]) {
|
if (followEl[0]) {
|
||||||
followEl[0].addEventListener('click', function() {
|
followEl[0].addEventListener('click', function() {
|
||||||
socket.emit('topics.follow', tid, function(data) {
|
socket.emit('topics.follow', tid, function(err, state) {
|
||||||
if (data.status && data.status === 'ok') set_follow_state(data.follow);
|
if(err) {
|
||||||
else {
|
return app.alert({
|
||||||
app.alert({
|
|
||||||
type: 'danger',
|
type: 'danger',
|
||||||
alert_id: 'topic_follow',
|
alert_id: 'topic_follow',
|
||||||
title: 'Please Log In',
|
title: 'Please Log In',
|
||||||
@@ -304,6 +304,8 @@ define(['composer'], function(composer) {
|
|||||||
timeout: 5000
|
timeout: 5000
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_follow_state(state);
|
||||||
});
|
});
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
@@ -1104,9 +1106,13 @@ define(['composer'], function(composer) {
|
|||||||
socket.emit('topics.loadMore', {
|
socket.emit('topics.loadMore', {
|
||||||
tid: tid,
|
tid: tid,
|
||||||
after: parseInt($('#post-container .post-row.infiniteloaded').last().attr('data-index'), 10) + 1
|
after: parseInt($('#post-container .post-row.infiniteloaded').last().attr('data-index'), 10) + 1
|
||||||
}, function (data) {
|
}, function (err, data) {
|
||||||
|
if(err) {
|
||||||
|
return app.alertError(err.message);
|
||||||
|
}
|
||||||
|
|
||||||
infiniteLoaderActive = false;
|
infiniteLoaderActive = false;
|
||||||
if (data.posts.length) {
|
if (data && data.posts && data.posts.length) {
|
||||||
indicatorEl.attr('done', '0');
|
indicatorEl.attr('done', '0');
|
||||||
createNewPosts(data, true);
|
createNewPosts(data, true);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -93,7 +93,11 @@ define(function() {
|
|||||||
loadingMoreTopics = true;
|
loadingMoreTopics = true;
|
||||||
socket.emit('topics.loadMoreUnreadTopics', {
|
socket.emit('topics.loadMoreUnreadTopics', {
|
||||||
after: parseInt($('#topics-container').attr('data-next-start'), 10)
|
after: parseInt($('#topics-container').attr('data-next-start'), 10)
|
||||||
}, function(data) {
|
}, function(err, data) {
|
||||||
|
if(err) {
|
||||||
|
return app.alertError(err.message);
|
||||||
|
}
|
||||||
|
|
||||||
if (data.topics && data.topics.length) {
|
if (data.topics && data.topics.length) {
|
||||||
onTopicsLoaded(data.topics);
|
onTopicsLoaded(data.topics);
|
||||||
$('#topics-container').attr('data-next-start', data.nextStart);
|
$('#topics-container').attr('data-next-start', data.nextStart);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="category row">
|
<div class="category row">
|
||||||
<div class="{topic_row_size}">
|
<div class="col-md-12">
|
||||||
<ul id="topics-container" data-next-start="{nextStart}">
|
<ul id="topics-container" data-next-start="{nextStart}">
|
||||||
<!-- BEGIN topics -->
|
<!-- BEGIN topics -->
|
||||||
<li class="category-item {topics.deleted-class}">
|
<li class="category-item {topics.deleted-class}">
|
||||||
|
|||||||
@@ -86,9 +86,7 @@ var db = require('./database.js'),
|
|||||||
};
|
};
|
||||||
|
|
||||||
function getTopics(next) {
|
function getTopics(next) {
|
||||||
topics.getTopicsByTids(tids, current_user, function(topicsData) {
|
topics.getTopicsByTids(tids, category_id, current_user, next);
|
||||||
next(null, topicsData);
|
|
||||||
}, category_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getModerators(next) {
|
function getModerators(next) {
|
||||||
@@ -126,9 +124,9 @@ var db = require('./database.js'),
|
|||||||
|
|
||||||
Categories.getCategoryTopics = function(cid, start, stop, uid, callback) {
|
Categories.getCategoryTopics = function(cid, start, stop, uid, callback) {
|
||||||
Categories.getTopicIds(cid, start, stop, function(err, tids) {
|
Categories.getTopicIds(cid, start, stop, function(err, tids) {
|
||||||
topics.getTopicsByTids(tids, uid, function(topicsData) {
|
topics.getTopicsByTids(tids, cid, uid, function(err, topicsData) {
|
||||||
callback(topicsData);
|
callback(err, topicsData);
|
||||||
}, cid);
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -137,7 +135,6 @@ var db = require('./database.js'),
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Categories.getAllCategories = function(current_user, callback) {
|
Categories.getAllCategories = function(current_user, callback) {
|
||||||
db.getListRange('categories:cid', 0, -1, function(err, cids) {
|
db.getListRange('categories:cid', 0, -1, function(err, cids) {
|
||||||
if(err) {
|
if(err) {
|
||||||
|
|||||||
@@ -176,16 +176,24 @@ var path = require('path'),
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/unread', function (req, res) {
|
app.get('/unread', function (req, res, next) {
|
||||||
var uid = (req.user) ? req.user.uid : 0;
|
var uid = (req.user) ? req.user.uid : 0;
|
||||||
topics.getUnreadTopics(uid, 0, 19, function (data) {
|
topics.getUnreadTopics(uid, 0, 19, function (err, data) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
res.json(data);
|
res.json(data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/unread/total', function (req, res) {
|
app.get('/unread/total', function (req, res, next) {
|
||||||
var uid = (req.user) ? req.user.uid : 0;
|
var uid = (req.user) ? req.user.uid : 0;
|
||||||
topics.getTotalUnread(uid, function (data) {
|
topics.getTotalUnread(uid, function (err, data) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
res.json(data);
|
res.json(data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -273,9 +281,9 @@ var path = require('path'),
|
|||||||
return callback(err, null);
|
return callback(err, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
topics.getTopicsByTids(tids, 0, function (topics) {
|
topics.getTopicsByTids(tids, 0, 0, function (topics) {
|
||||||
callback(null, topics);
|
callback(null, topics);
|
||||||
}, 0);
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -138,9 +138,11 @@ SocketTopics.createTopicFromPosts = function(socket, data, callback) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
topics.createTopicFromPosts(socket.uid, data.title, data.pids, function(err, data) {
|
if(!data || !data.title || !data.pids || !Array.isArray(data.pids)) {
|
||||||
callback(err, data);
|
return callback(new Error('invalid data'));
|
||||||
});
|
}
|
||||||
|
|
||||||
|
topics.createTopicFromPosts(socket.uid, data.title, data.pids, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.movePost = function(socket, data, callback) {
|
SocketTopics.movePost = function(socket, data, callback) {
|
||||||
@@ -154,79 +156,74 @@ SocketTopics.movePost = function(socket, data, callback) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
topics.movePostToTopic(data.pid, data.tid, function(err, data) {
|
if(!data || !data.pid || !data.tid) {
|
||||||
callback(err, data);
|
return callback(new Error('invalid data'));
|
||||||
});
|
}
|
||||||
|
|
||||||
|
topics.movePostToTopic(data.pid, data.tid, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.move = function(socket, data, callback) {
|
SocketTopics.move = function(socket, data, callback) {
|
||||||
|
|
||||||
|
if(!data || !data.tid || !data.cid) {
|
||||||
|
return callback(new Error('invalid data'));
|
||||||
|
}
|
||||||
|
|
||||||
threadTools.move(data.tid, data.cid, function(err) {
|
threadTools.move(data.tid, data.cid, function(err) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
index.server.sockets.in('topic_' + data.tid).emit('event:topic_moved', {
|
index.server.sockets.in('topic_' + data.tid).emit('event:topic_moved', {
|
||||||
tid: tid
|
tid: data.tid
|
||||||
});
|
});
|
||||||
|
|
||||||
|
callback(null);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.followCheck = function(socket, tid, callback) {
|
SocketTopics.followCheck = function(socket, tid, callback) {
|
||||||
threadTools.isFollowing(tid, socket.uid, function(following) {
|
threadTools.isFollowing(tid, socket.uid, callback);
|
||||||
callback(following);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.follow = function(socket, tid, callback) {
|
SocketTopics.follow = function(socket, tid, callback) {
|
||||||
if (socket.uid) {
|
if(!socket.uid) {
|
||||||
threadTools.toggleFollow(tid, socket.uid, function(follow) {
|
return callback(new Error('not-logged-in'));
|
||||||
if (follow.status === 'ok') {
|
|
||||||
callback(follow);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
callback({
|
|
||||||
status: 'error',
|
|
||||||
error: 'not-logged-in'
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
threadTools.toggleFollow(tid, socket.uid, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.loadMore = function(socket, data, callback) {
|
SocketTopics.loadMore = function(socket, data, callback) {
|
||||||
|
if(!data || !data.tid) {
|
||||||
|
return callback(new Error('invalid data'));
|
||||||
|
}
|
||||||
|
|
||||||
var start = data.after,
|
var start = data.after,
|
||||||
end = start + 9;
|
end = start + 9;
|
||||||
|
|
||||||
topics.getTopicPosts(data.tid, start, end, socket.uid, function(err, posts) {
|
topics.getTopicPosts(data.tid, start, end, socket.uid, function(err, posts) {
|
||||||
if(err) {
|
callback(err, {posts: posts});
|
||||||
return callback(err);
|
|
||||||
|
|
||||||
}
|
|
||||||
callback(null, {
|
|
||||||
posts: posts
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.loadMoreRecentTopics = function(socket, data, callback) {
|
SocketTopics.loadMoreRecentTopics = function(socket, data, callback) {
|
||||||
|
if(!data || !data.term) {
|
||||||
|
return callback(new Error('invalid data'));
|
||||||
|
}
|
||||||
|
|
||||||
var start = data.after,
|
var start = data.after,
|
||||||
end = start + 9;
|
end = start + 9;
|
||||||
|
|
||||||
topics.getLatestTopics(socket.uid, start, end, data.term, function(err, latestTopics) {
|
topics.getLatestTopics(socket.uid, start, end, data.term, callback);
|
||||||
if(err) {
|
|
||||||
return callback(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
callback(null, latestTopics);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.loadMoreUnreadTopics = function(socket, data, callback) {
|
SocketTopics.loadMoreUnreadTopics = function(socket, data, callback) {
|
||||||
var start = data.after,
|
var start = data.after,
|
||||||
end = start + 9;
|
end = start + 9;
|
||||||
|
|
||||||
topics.getUnreadTopics(socket.uid, start, end, function(unreadTopics) {
|
topics.getUnreadTopics(socket.uid, start, end, callback);
|
||||||
callback(null, unreadTopics);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = SocketTopics;
|
module.exports = SocketTopics;
|
||||||
@@ -195,49 +195,40 @@ var winston = require('winston'),
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadTools.isFollowing = function(tid, current_user, callback) {
|
ThreadTools.isFollowing = function(tid, uid, callback) {
|
||||||
db.isSetMember('tid:' + tid + ':followers', current_user, function(err, following) {
|
db.isSetMember('tid:' + tid + ':followers', uid, callback);
|
||||||
callback(following);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadTools.toggleFollow = function(tid, current_user, callback) {
|
ThreadTools.toggleFollow = function(tid, uid, callback) {
|
||||||
ThreadTools.isFollowing(tid, current_user, function(following) {
|
ThreadTools.isFollowing(tid, uid, function(err, following) {
|
||||||
if (!following) {
|
if(err) {
|
||||||
db.setAdd('tid:' + tid + ':followers', current_user, function(err, success) {
|
return callback(err);
|
||||||
if (callback) {
|
|
||||||
if (!err) {
|
|
||||||
callback({
|
|
||||||
status: 'ok',
|
|
||||||
follow: true
|
|
||||||
});
|
|
||||||
} else callback({
|
|
||||||
status: 'error'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
db.setRemove('tid:' + tid + ':followers', current_user, function(err, success) {
|
|
||||||
if (callback) {
|
|
||||||
if (!err) {
|
|
||||||
callback({
|
|
||||||
status: 'ok',
|
|
||||||
follow: false
|
|
||||||
});
|
|
||||||
} else callback({
|
|
||||||
status: 'error'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
db[following?'setRemove':'setAdd']('tid:' + tid + ':followers', uid, function(err, success) {
|
||||||
|
if (callback) {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(null, !following);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadTools.getFollowers = function(tid, callback) {
|
ThreadTools.getFollowers = function(tid, callback) {
|
||||||
db.getSetMembers('tid:' + tid + ':followers', function(err, followers) {
|
db.getSetMembers('tid:' + tid + ':followers', function(err, followers) {
|
||||||
callback(err, followers.map(function(follower) {
|
if(err) {
|
||||||
return parseInt(follower, 10);
|
return callback(err);
|
||||||
}));
|
}
|
||||||
|
|
||||||
|
if(followers) {
|
||||||
|
followers = followers.map(function(follower) {
|
||||||
|
return parseInt(follower, 10);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
callback(null, followers);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -454,7 +454,7 @@ var async = require('async'),
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, function(tids) {
|
}, function(tids) {
|
||||||
Topics.getTopicsByTids(tids, current_user, function(topicData) {
|
Topics.getTopicsByTids(tids, 0, current_user, function(err, topicData) {
|
||||||
latestTopics.topics = topicData;
|
latestTopics.topics = topicData;
|
||||||
callback(err, latestTopics);
|
callback(err, latestTopics);
|
||||||
});
|
});
|
||||||
@@ -476,8 +476,9 @@ var async = require('async'),
|
|||||||
function(callback) {
|
function(callback) {
|
||||||
db.getSortedSetRevRange('topics:recent', start, stop, function(err, tids) {
|
db.getSortedSetRevRange('topics:recent', start, stop, function(err, tids) {
|
||||||
|
|
||||||
if (err)
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
if (tids && !tids.length) {
|
if (tids && !tids.length) {
|
||||||
done = true;
|
done = true;
|
||||||
@@ -499,7 +500,7 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
function(err) {
|
function(err) {
|
||||||
callback({
|
callback(null, {
|
||||||
count: unreadTids.length
|
count: unreadTids.length
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -569,19 +570,22 @@ var async = require('async'),
|
|||||||
'show_topic_button': 'hidden',
|
'show_topic_button': 'hidden',
|
||||||
'show_markallread_button': 'show',
|
'show_markallread_button': 'show',
|
||||||
'no_topics_message': 'hidden',
|
'no_topics_message': 'hidden',
|
||||||
'topic_row_size': 'col-md-12',
|
|
||||||
'topics': []
|
'topics': []
|
||||||
};
|
};
|
||||||
|
|
||||||
function noUnreadTopics() {
|
function noUnreadTopics() {
|
||||||
unreadTopics.no_topics_message = 'show';
|
unreadTopics.no_topics_message = 'show';
|
||||||
unreadTopics.show_markallread_button = 'hidden';
|
unreadTopics.show_markallread_button = 'hidden';
|
||||||
callback(unreadTopics);
|
callback(null, unreadTopics);
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendUnreadTopics(topicIds) {
|
function sendUnreadTopics(topicIds) {
|
||||||
|
|
||||||
Topics.getTopicsByTids(topicIds, uid, function(topicData) {
|
Topics.getTopicsByTids(topicIds, 0, uid, function(err, topicData) {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
unreadTopics.topics = topicData;
|
unreadTopics.topics = topicData;
|
||||||
unreadTopics.nextStart = stop + 1;
|
unreadTopics.nextStart = stop + 1;
|
||||||
if (!topicData || topicData.length === 0) {
|
if (!topicData || topicData.length === 0) {
|
||||||
@@ -591,13 +595,13 @@ var async = require('async'),
|
|||||||
unreadTopics.show_markallread_button = 'hidden';
|
unreadTopics.show_markallread_button = 'hidden';
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(unreadTopics);
|
callback(null, unreadTopics);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Topics.getUnreadTids(uid, start, stop, function(err, unreadTids) {
|
Topics.getUnreadTids(uid, start, stop, function(err, unreadTids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback([]);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unreadTids.length) {
|
if (unreadTids.length) {
|
||||||
@@ -634,13 +638,12 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTopicsByTids = function(tids, current_user, callback, category_id) {
|
Topics.getTopicsByTids = function(tids, cid, current_user, callback) {
|
||||||
|
|
||||||
var retrieved_topics = [];
|
var retrieved_topics = [];
|
||||||
|
|
||||||
if (!Array.isArray(tids) || tids.length === 0) {
|
if (!Array.isArray(tids) || tids.length === 0) {
|
||||||
callback(retrieved_topics);
|
return callback(null, retrieved_topics);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTopicInfo(topicData, callback) {
|
function getTopicInfo(topicData, callback) {
|
||||||
@@ -664,19 +667,19 @@ var async = require('async'),
|
|||||||
// temporary. I don't think this call should belong here
|
// temporary. I don't think this call should belong here
|
||||||
|
|
||||||
function getPrivileges(next) {
|
function getPrivileges(next) {
|
||||||
categoryTools.privileges(category_id, current_user, function(err, user_privs) {
|
categoryTools.privileges(cid, current_user, next);
|
||||||
next(err, user_privs);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCategoryInfo(next) {
|
function getCategoryInfo(next) {
|
||||||
categories.getCategoryFields(topicData.cid, ['name', 'slug', 'icon'], function(err, categoryData) {
|
categories.getCategoryFields(topicData.cid, ['name', 'slug', 'icon'], next);
|
||||||
next(err, categoryData);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async.parallel([getUserInfo, hasReadTopic, getTeaserInfo, getPrivileges, getCategoryInfo], function(err, results) {
|
async.parallel([getUserInfo, hasReadTopic, getTeaserInfo, getPrivileges, getCategoryInfo], function(err, results) {
|
||||||
callback({
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(null, {
|
||||||
username: results[0].username,
|
username: results[0].username,
|
||||||
userslug: results[0].userslug,
|
userslug: results[0].userslug,
|
||||||
picture: results[0].picture,
|
picture: results[0].picture,
|
||||||
@@ -694,13 +697,20 @@ var async = require('async'),
|
|||||||
return !deleted || (deleted && topicInfo.privileges.view_deleted) || topicData.uid === current_user;
|
return !deleted || (deleted && topicInfo.privileges.view_deleted) || topicData.uid === current_user;
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadTopic(tid, callback) {
|
function loadTopic(tid, next) {
|
||||||
Topics.getTopicData(tid, function(err, topicData) {
|
Topics.getTopicData(tid, function(err, topicData) {
|
||||||
if (!topicData) {
|
if(err) {
|
||||||
return callback(null);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTopicInfo(topicData, function(topicInfo) {
|
if (!topicData) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
|
getTopicInfo(topicData, function(err, topicInfo) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
topicData['pin-icon'] = parseInt(topicData.pinned, 10) === 1 ? 'fa-thumb-tack' : 'none';
|
topicData['pin-icon'] = parseInt(topicData.pinned, 10) === 1 ? 'fa-thumb-tack' : 'none';
|
||||||
topicData['lock-icon'] = parseInt(topicData.locked, 10) === 1 ? 'fa-lock' : 'none';
|
topicData['lock-icon'] = parseInt(topicData.locked, 10) === 1 ? 'fa-lock' : 'none';
|
||||||
@@ -720,18 +730,17 @@ var async = require('async'),
|
|||||||
topicData.teaser_pid = topicInfo.teaserInfo.pid;
|
topicData.teaser_pid = topicInfo.teaserInfo.pid;
|
||||||
topicData.teaser_timestamp = topicInfo.teaserInfo.timestamp ? (new Date(parseInt(topicInfo.teaserInfo.timestamp, 10)).toISOString()) : '';
|
topicData.teaser_timestamp = topicInfo.teaserInfo.timestamp ? (new Date(parseInt(topicInfo.teaserInfo.timestamp, 10)).toISOString()) : '';
|
||||||
|
|
||||||
if (isTopicVisible(topicData, topicInfo))
|
if (isTopicVisible(topicData, topicInfo)) {
|
||||||
retrieved_topics.push(topicData);
|
retrieved_topics.push(topicData);
|
||||||
|
}
|
||||||
|
|
||||||
callback(null);
|
next(null);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async.eachSeries(tids, loadTopic, function(err) {
|
async.eachSeries(tids, loadTopic, function(err) {
|
||||||
if (!err) {
|
callback(err, retrieved_topics);
|
||||||
callback(retrieved_topics);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user