mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +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); | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			db[following?'setRemove':'setAdd']('tid:' + tid + ':followers', uid, function(err, success) { | ||||||
| 				if (callback) { | 				if (callback) { | ||||||
| 						if (!err) { | 					if(err) { | ||||||
| 							callback({ | 						return callback(err); | ||||||
| 								status: 'ok', | 					} | ||||||
| 								follow: true |  | ||||||
| 							}); | 					callback(null, !following); | ||||||
| 						} 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' |  | ||||||
| 						}); |  | ||||||
| 					} |  | ||||||
| 				}); |  | ||||||
| 			} |  | ||||||
| 		}); | 		}); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	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 callback(err); | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			if(followers) { | ||||||
|  | 				followers = followers.map(function(follower) { | ||||||
| 					return parseInt(follower, 10); | 					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