mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 11:05:54 +01:00 
			
		
		
		
	remove more parseInts
This commit is contained in:
		| @@ -59,7 +59,7 @@ Messaging.getMessages = function (params, callback) { | |||||||
|  |  | ||||||
| 			// Filter out deleted messages unless you're the sender of said message | 			// Filter out deleted messages unless you're the sender of said message | ||||||
| 			messageData = messageData.filter(function (messageData) { | 			messageData = messageData.filter(function (messageData) { | ||||||
| 				return (!messageData.deleted || parseInt(messageData.fromuid, 10) === parseInt(params.uid, 10)); | 				return (!messageData.deleted || messageData.fromuid === parseInt(params.uid, 10)); | ||||||
| 			}); | 			}); | ||||||
|  |  | ||||||
| 			next(null, messageData); | 			next(null, messageData); | ||||||
|   | |||||||
| @@ -7,9 +7,32 @@ var user = require('../user'); | |||||||
| var utils = require('../utils'); | var utils = require('../utils'); | ||||||
| var plugins = require('../plugins'); | var plugins = require('../plugins'); | ||||||
|  |  | ||||||
|  | const intFields = ['timestamp', 'edited', 'fromuid', 'roomId', 'deleted']; | ||||||
|  |  | ||||||
| module.exports = function (Messaging) { | module.exports = function (Messaging) { | ||||||
| 	Messaging.newMessageCutoff = 1000 * 60 * 3; | 	Messaging.newMessageCutoff = 1000 * 60 * 3; | ||||||
|  |  | ||||||
|  | 	Messaging.getMessagesFields = function (mids, fields, callback) { | ||||||
|  | 		if (!Array.isArray(mids) || !mids.length) { | ||||||
|  | 			return callback(null, []); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		async.waterfall([ | ||||||
|  | 			function (next) { | ||||||
|  | 				const keys = mids.map(mid => 'message:' + mid); | ||||||
|  | 				if (fields.length) { | ||||||
|  | 					db.getObjectsFields(keys, fields, next); | ||||||
|  | 				} else { | ||||||
|  | 					db.getObjects(keys, next); | ||||||
|  | 				} | ||||||
|  | 			}, | ||||||
|  | 			function (messages, next) { | ||||||
|  | 				messages.forEach(modifyMessage); | ||||||
|  | 				next(null, messages); | ||||||
|  | 			}, | ||||||
|  | 		], callback); | ||||||
|  | 	}; | ||||||
|  |  | ||||||
| 	Messaging.getMessageField = function (mid, field, callback) { | 	Messaging.getMessageField = function (mid, field, callback) { | ||||||
| 		Messaging.getMessageFields(mid, [field], function (err, fields) { | 		Messaging.getMessageFields(mid, [field], function (err, fields) { | ||||||
| 			callback(err, fields ? fields[field] : null); | 			callback(err, fields ? fields[field] : null); | ||||||
| @@ -17,7 +40,9 @@ module.exports = function (Messaging) { | |||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	Messaging.getMessageFields = function (mid, fields, callback) { | 	Messaging.getMessageFields = function (mid, fields, callback) { | ||||||
| 		db.getObjectFields('message:' + mid, fields, callback); | 		Messaging.getMessagesFields([mid], fields, function (err, messages) { | ||||||
|  | 			callback(err, messages ? messages[0] : null); | ||||||
|  | 		}); | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	Messaging.setMessageField = function (mid, field, content, callback) { | 	Messaging.setMessageField = function (mid, field, content, callback) { | ||||||
| @@ -33,11 +58,7 @@ module.exports = function (Messaging) { | |||||||
|  |  | ||||||
| 		async.waterfall([ | 		async.waterfall([ | ||||||
| 			function (next) { | 			function (next) { | ||||||
| 				var keys = mids.map(function (mid) { | 				Messaging.getMessagesFields(mids, [], next); | ||||||
| 					return 'message:' + mid; |  | ||||||
| 				}); |  | ||||||
|  |  | ||||||
| 				db.getObjects(keys, next); |  | ||||||
| 			}, | 			}, | ||||||
| 			async.apply(user.blocks.filter, uid, 'fromuid'), | 			async.apply(user.blocks.filter, uid, 'fromuid'), | ||||||
| 			function (_messages, next) { | 			function (_messages, next) { | ||||||
| @@ -49,28 +70,22 @@ module.exports = function (Messaging) { | |||||||
| 					return msg; | 					return msg; | ||||||
| 				}).filter(Boolean); | 				}).filter(Boolean); | ||||||
|  |  | ||||||
| 				var uids = messages.map(function (msg) { | 				const uids = messages.map(msg => msg && msg.fromuid); | ||||||
| 					return msg && msg.fromuid; |  | ||||||
| 				}); |  | ||||||
|  |  | ||||||
| 				user.getUsersFields(uids, ['uid', 'username', 'userslug', 'picture', 'status', 'banned'], next); | 				user.getUsersFields(uids, ['uid', 'username', 'userslug', 'picture', 'status', 'banned'], next); | ||||||
| 			}, | 			}, | ||||||
| 			function (users, next) { | 			function (users, next) { | ||||||
| 				messages.forEach(function (message, index) { | 				messages.forEach(function (message, index) { | ||||||
| 					message.fromUser = users[index]; | 					message.fromUser = users[index]; | ||||||
| 					message.fromUser.banned = !!parseInt(message.fromUser.banned, 10); | 					message.fromUser.banned = !!message.fromUser.banned; | ||||||
| 					message.fromUser.deleted = parseInt(message.fromuid, 10) !== message.fromUser.uid && message.fromUser.uid === 0; | 					message.fromUser.deleted = message.fromuid !== message.fromUser.uid && message.fromUser.uid === 0; | ||||||
|  |  | ||||||
| 					var self = parseInt(message.fromuid, 10) === parseInt(uid, 10); | 					var self = message.fromuid === parseInt(uid, 10); | ||||||
| 					message.self = self ? 1 : 0; | 					message.self = self ? 1 : 0; | ||||||
| 					message.timestampISO = utils.toISOString(message.timestamp); |  | ||||||
| 					message.newSet = false; | 					message.newSet = false; | ||||||
| 					message.roomId = String(message.roomId || roomId); | 					message.roomId = String(message.roomId || roomId); | ||||||
| 					if (message.hasOwnProperty('edited')) { | 					message.deleted = !!message.deleted; | ||||||
| 						message.editedISO = new Date(parseInt(message.edited, 10)).toISOString(); |  | ||||||
| 					} |  | ||||||
|  |  | ||||||
| 					message.deleted = !!parseInt(message.deleted, 10); |  | ||||||
| 				}); | 				}); | ||||||
|  |  | ||||||
| 				async.map(messages, function (message, next) { | 				async.map(messages, function (message, next) { | ||||||
| @@ -89,7 +104,7 @@ module.exports = function (Messaging) { | |||||||
| 					// Add a spacer in between messages with time gaps between them | 					// Add a spacer in between messages with time gaps between them | ||||||
| 					messages = messages.map(function (message, index) { | 					messages = messages.map(function (message, index) { | ||||||
| 						// Compare timestamps with the previous message, and check if a spacer needs to be added | 						// Compare timestamps with the previous message, and check if a spacer needs to be added | ||||||
| 						if (index > 0 && parseInt(message.timestamp, 10) > parseInt(messages[index - 1].timestamp, 10) + Messaging.newMessageCutoff) { | 						if (index > 0 && message.timestamp > messages[index - 1] + Messaging.newMessageCutoff) { | ||||||
| 							// If it's been 5 minutes, this is a new set of messages | 							// If it's been 5 minutes, this is a new set of messages | ||||||
| 							message.newSet = true; | 							message.newSet = true; | ||||||
| 						} else if (index > 0 && message.fromuid !== messages[index - 1].fromuid) { | 						} else if (index > 0 && message.fromuid !== messages[index - 1].fromuid) { | ||||||
| @@ -118,21 +133,15 @@ module.exports = function (Messaging) { | |||||||
| 						function (mid, next) { | 						function (mid, next) { | ||||||
| 							Messaging.getMessageFields(mid, ['fromuid', 'timestamp'], next); | 							Messaging.getMessageFields(mid, ['fromuid', 'timestamp'], next); | ||||||
| 						}, | 						}, | ||||||
| 					], function (err, fields) { | 						function (fields, next) { | ||||||
| 						if (err) { | 							if ((messages[0].timestamp > fields.timestamp + Messaging.newMessageCutoff) || | ||||||
| 							return next(err); | 								(messages[0].fromuid !== fields.fromuid)) { | ||||||
| 						} |  | ||||||
|  |  | ||||||
| 						if ( |  | ||||||
| 							(parseInt(messages[0].timestamp, 10) > parseInt(fields.timestamp, 10) + Messaging.newMessageCutoff) || |  | ||||||
| 							(parseInt(messages[0].fromuid, 10) !== parseInt(fields.fromuid, 10)) |  | ||||||
| 						) { |  | ||||||
| 								// If it's been 5 minutes, this is a new set of messages | 								// If it's been 5 minutes, this is a new set of messages | ||||||
| 								messages[0].newSet = true; | 								messages[0].newSet = true; | ||||||
| 							} | 							} | ||||||
|  | 							next(null, messages); | ||||||
| 						next(undefined, messages); | 						}, | ||||||
| 					}); | 					], next); | ||||||
| 				} else { | 				} else { | ||||||
| 					next(null, []); | 					next(null, []); | ||||||
| 				} | 				} | ||||||
| @@ -151,3 +160,15 @@ module.exports = function (Messaging) { | |||||||
| 		], callback); | 		], callback); | ||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | function modifyMessage(message) { | ||||||
|  | 	if (message) { | ||||||
|  | 		intFields.forEach(field => db.parseIntField(message, field)); | ||||||
|  | 		if (message.hasOwnProperty('timestamp')) { | ||||||
|  | 			message.timestampISO = utils.toISOString(message.timestamp); | ||||||
|  | 		} | ||||||
|  | 		if (message.hasOwnProperty('edited')) { | ||||||
|  | 			message.editedISO = utils.toISOString(message.timestamp); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -70,11 +70,11 @@ module.exports = function (Messaging) { | |||||||
| 				user.getUserFields(uid, ['banned', 'email:confirmed'], next); | 				user.getUserFields(uid, ['banned', 'email:confirmed'], next); | ||||||
| 			}, | 			}, | ||||||
| 			function (userData, next) { | 			function (userData, next) { | ||||||
| 				if (parseInt(userData.banned, 10) === 1) { | 				if (userData.banned) { | ||||||
| 					return callback(new Error('[[error:user-banned]]')); | 					return callback(new Error('[[error:user-banned]]')); | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| 				if (meta.config.requireEmailConfirmation && parseInt(userData['email:confirmed'], 10) !== 1) { | 				if (meta.config.requireEmailConfirmation && !userData['email:confirmed']) { | ||||||
| 					return callback(new Error('[[error:email-not-confirmed]]')); | 					return callback(new Error('[[error:email-not-confirmed]]')); | ||||||
| 				} | 				} | ||||||
| 				async.parallel({ | 				async.parallel({ | ||||||
| @@ -91,11 +91,11 @@ module.exports = function (Messaging) { | |||||||
| 					return callback(); | 					return callback(); | ||||||
| 				} | 				} | ||||||
| 				var chatConfigDuration = meta.config[durationConfig]; | 				var chatConfigDuration = meta.config[durationConfig]; | ||||||
| 				if (chatConfigDuration && Date.now() - parseInt(results.messageData.timestamp, 10) > chatConfigDuration * 1000) { | 				if (chatConfigDuration && Date.now() - results.messageData.timestamp > chatConfigDuration * 1000) { | ||||||
| 					return callback(new Error('[[error:chat-' + type + '-duration-expired, ' + meta.config[durationConfig] + ']]')); | 					return callback(new Error('[[error:chat-' + type + '-duration-expired, ' + meta.config[durationConfig] + ']]')); | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| 				if (parseInt(results.messageData.fromuid, 10) === parseInt(uid, 10)) { | 				if (results.messageData.fromuid === parseInt(uid, 10)) { | ||||||
| 					return callback(); | 					return callback(); | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -96,7 +96,7 @@ SocketHelpers.sendNotificationToPostOwner = function (pid, fromuid, command, not | |||||||
| 			}, next); | 			}, next); | ||||||
| 		}, | 		}, | ||||||
| 		function (results, next) { | 		function (results, next) { | ||||||
| 			if (!results.canRead || results.isIgnoring[0] || !postData.uid || fromuid === parseInt(postData.uid, 10)) { | 			if (!results.canRead || results.isIgnoring[0] || !postData.uid || fromuid === postData.uid) { | ||||||
| 				return; | 				return; | ||||||
| 			} | 			} | ||||||
| 			async.parallel({ | 			async.parallel({ | ||||||
| @@ -149,7 +149,7 @@ SocketHelpers.sendNotificationToTopicOwner = function (tid, fromuid, command, no | |||||||
| 			}, next); | 			}, next); | ||||||
| 		}, | 		}, | ||||||
| 		function (results, next) { | 		function (results, next) { | ||||||
| 			if (fromuid === parseInt(results.topicData.uid, 10)) { | 			if (fromuid === results.topicData.uid) { | ||||||
| 				return; | 				return; | ||||||
| 			} | 			} | ||||||
| 			ownerUid = results.topicData.uid; | 			ownerUid = results.topicData.uid; | ||||||
| @@ -167,7 +167,7 @@ SocketHelpers.sendNotificationToTopicOwner = function (tid, fromuid, command, no | |||||||
| 		if (err) { | 		if (err) { | ||||||
| 			return winston.error(err); | 			return winston.error(err); | ||||||
| 		} | 		} | ||||||
| 		if (notification && parseInt(ownerUid, 10)) { | 		if (notification && ownerUid) { | ||||||
| 			notifications.push(notification, [ownerUid]); | 			notifications.push(notification, [ownerUid]); | ||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
|   | |||||||
| @@ -18,9 +18,10 @@ module.exports = function (Topics) { | |||||||
| 		if (!Array.isArray(tids) || !tids.length) { | 		if (!Array.isArray(tids) || !tids.length) { | ||||||
| 			return callback(null, []); | 			return callback(null, []); | ||||||
| 		} | 		} | ||||||
| 		var keys = tids.map(tid => 'topic:' + tid); |  | ||||||
| 		async.waterfall([ | 		async.waterfall([ | ||||||
| 			function (next) { | 			function (next) { | ||||||
|  | 				const keys = tids.map(tid => 'topic:' + tid); | ||||||
| 				if (fields.length) { | 				if (fields.length) { | ||||||
| 					db.getObjectsFields(keys, fields, next); | 					db.getObjectsFields(keys, fields, next); | ||||||
| 				} else { | 				} else { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user