From f3a679e268cb1e34b0db0d8649520a1d01a70019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 25 Oct 2018 17:02:59 -0400 Subject: [PATCH] remove parseInts --- src/categories/recentreplies.js | 2 +- src/controllers/accounts/helpers.js | 4 +--- src/controllers/topics.js | 4 ++-- src/flags.js | 2 +- src/groups/join.js | 4 +--- src/groups/leave.js | 6 ++---- src/groups/update.js | 6 ++---- src/messaging/delete.js | 4 ++-- src/messaging/index.js | 8 ++++---- src/middleware/admin.js | 2 +- src/middleware/header.js | 3 +-- src/posts/delete.js | 2 +- src/posts/tools.js | 4 ++-- src/posts/user.js | 2 +- src/posts/votes.js | 4 ++-- src/routes/feeds.js | 4 ++-- src/socket.io/admin/user.js | 2 +- src/socket.io/posts.js | 2 +- src/socket.io/posts/diffs.js | 1 - src/socket.io/posts/edit.js | 2 +- src/socket.io/posts/helpers.js | 2 +- src/socket.io/posts/tools.js | 9 ++++----- src/socket.io/topics/infinitescroll.js | 2 +- src/topics/create.js | 6 +++--- src/topics/data.js | 3 ++- src/topics/delete.js | 6 +----- src/topics/index.js | 23 +++++------------------ src/topics/posts.js | 11 ++++------- src/topics/recent.js | 4 ++-- src/topics/sorted.js | 12 +++++------- src/topics/teaser.js | 2 +- src/topics/tools.js | 6 +++--- src/topics/unread.js | 2 +- src/user/bans.js | 4 ++-- src/user/data.js | 8 ++++---- src/user/index.js | 12 ++---------- src/user/posts.js | 4 ++-- src/user/search.js | 21 ++++++--------------- test/database/sets.js | 8 ++++++++ test/posts.js | 6 +++--- test/topics.js | 8 ++++---- test/user.js | 13 ++++++++++--- 42 files changed, 103 insertions(+), 137 deletions(-) diff --git a/src/categories/recentreplies.js b/src/categories/recentreplies.js index a4149a0b80..ab0d7b475a 100644 --- a/src/categories/recentreplies.js +++ b/src/categories/recentreplies.js @@ -227,7 +227,7 @@ module.exports = function (Categories) { topics.getTopicField(tid, 'postcount', next); }, function (postCount, next) { - if (!parseInt(postCount, 10)) { + if (!postCount) { return callback(); } async.parallel([ diff --git a/src/controllers/accounts/helpers.js b/src/controllers/accounts/helpers.js index c25fe5e925..b42f21c2b6 100644 --- a/src/controllers/accounts/helpers.js +++ b/src/controllers/accounts/helpers.js @@ -178,12 +178,10 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) { userData.sso = results.sso.associations; userData.status = user.getStatus(userData); - userData.banned = parseInt(userData.banned, 10) === 1; + userData.banned = userData.banned === 1; userData.website = validator.escape(String(userData.website || '')); userData.websiteLink = !userData.website.startsWith('http') ? 'http://' + userData.website : userData.website; userData.websiteName = userData.website.replace(validator.escape('http://'), '').replace(validator.escape('https://'), ''); - userData.followingCount = parseInt(userData.followingCount, 10) || 0; - userData.followerCount = parseInt(userData.followerCount, 10) || 0; userData.email = validator.escape(String(userData.email || '')); userData.fullname = validator.escape(String(userData.fullname || '')); diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 31fe422509..aca8445872 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -70,7 +70,7 @@ topicsController.get = function (req, res, callback) { } settings = results.settings; - var postCount = parseInt(results.topic.postcount, 10); + var postCount = results.topic.postcount; pageCount = Math.max(1, Math.ceil(postCount / settings.postsPerPage)); results.topic.postcount = postCount; @@ -390,7 +390,7 @@ topicsController.pagination = function (req, res, callback) { return helpers.notAllowed(req, res); } - var postCount = parseInt(results.topic.postcount, 10); + var postCount = results.topic.postcount; var pageCount = Math.max(1, Math.ceil(postCount / results.settings.postsPerPage)); var paginationData = pagination.create(currentPage, pageCount); diff --git a/src/flags.js b/src/flags.js index 120674655f..fa44cc8598 100644 --- a/src/flags.js +++ b/src/flags.js @@ -246,7 +246,7 @@ Flags.validate = function (payload, callback) { if (data.target.deleted) { return callback(new Error('[[error:post-deleted]]')); - } else if (parseInt(data.reporter.banned, 10)) { + } else if (data.reporter.banned) { return callback(new Error('[[error:user-banned]]')); } diff --git a/src/groups/join.js b/src/groups/join.js index 5e341548e9..20f49e62e6 100644 --- a/src/groups/join.js +++ b/src/groups/join.js @@ -64,9 +64,7 @@ module.exports = function (Groups) { Groups.getGroupsFields(groupNames, ['name', 'hidden', 'memberCount'], next); }, function (groupData, next) { - var visibleGroups = groupData.filter(function (groupData) { - return groupData && parseInt(groupData.hidden, 10) !== 1; - }); + var visibleGroups = groupData.filter(groupData => groupData && !groupData.hidden); if (visibleGroups.length) { db.sortedSetAdd('groups:visible:memberCount', visibleGroups.map(groupData => groupData.memberCount), visibleGroups.map(groupData => groupData.name), next); diff --git a/src/groups/leave.js b/src/groups/leave.js index ad5c4e30ca..39f69001fb 100644 --- a/src/groups/leave.js +++ b/src/groups/leave.js @@ -47,15 +47,13 @@ module.exports = function (Groups) { var tasks = []; var emptyPrivilegeGroups = groupData.filter(function (groupData) { - return groupData && Groups.isPrivilegeGroup(groupData.name) && parseInt(groupData.memberCount, 10) === 0; + return groupData && Groups.isPrivilegeGroup(groupData.name) && groupData.memberCount === 0; }); if (emptyPrivilegeGroups.length) { tasks.push(async.apply(Groups.destroy, emptyPrivilegeGroups)); } - var visibleGroups = groupData.filter(function (groupData) { - return groupData && parseInt(groupData.hidden, 10) !== 1; - }); + var visibleGroups = groupData.filter(groupData => groupData && !groupData.hidden); if (visibleGroups.length) { tasks.push(async.apply(db.sortedSetAdd, 'groups:visible:memberCount', visibleGroups.map(groupData => groupData.memberCount), visibleGroups.map(groupData => groupData.name))); } diff --git a/src/groups/update.js b/src/groups/update.js index b9319736ca..6020f93b44 100644 --- a/src/groups/update.js +++ b/src/groups/update.js @@ -131,7 +131,7 @@ module.exports = function (Groups) { Groups.getGroupFields(groupName, ['private'], next); }, function (currentValue, next) { - var currentlyPrivate = parseInt(currentValue.private, 10) === 1; + var currentlyPrivate = currentValue.private === 1; if (!currentlyPrivate || currentlyPrivate === isPrivate) { return callback(); } @@ -142,11 +142,9 @@ module.exports = function (Groups) { return callback(); } var now = Date.now(); - var scores = uids.map(function () { return now; }); - winston.verbose('[groups.update] Group is now public, automatically adding ' + uids.length + ' new members, who were pending prior.'); async.series([ - async.apply(db.sortedSetAdd, 'group:' + groupName + ':members', scores, uids), + async.apply(db.sortedSetAdd, 'group:' + groupName + ':members', uids.map(() => now), uids), async.apply(db.delete, 'group:' + groupName + ':pending'), ], next); }, diff --git a/src/messaging/delete.js b/src/messaging/delete.js index 55907491f2..a31c6288cc 100644 --- a/src/messaging/delete.js +++ b/src/messaging/delete.js @@ -7,7 +7,7 @@ module.exports = function (Messaging) { async.waterfall([ async.apply(Messaging.getMessageField, mid, 'deleted'), function (deleted, next) { - if (parseInt(deleted, 10)) { + if (deleted) { return next(new Error('[[error:chat-deleted-already]]')); } @@ -20,7 +20,7 @@ module.exports = function (Messaging) { async.waterfall([ async.apply(Messaging.getMessageField, mid, 'deleted'), function (deleted, next) { - if (!parseInt(deleted, 10)) { + if (!deleted) { return next(new Error('[[error:chat-restored-already]]')); } diff --git a/src/messaging/index.js b/src/messaging/index.js index 4a68a16079..7f9d633f28 100644 --- a/src/messaging/index.js +++ b/src/messaging/index.js @@ -268,11 +268,11 @@ Messaging.canMessageUser = function (uid, toUid, callback) { user.getUserFields(uid, ['banned', 'email:confirmed'], next); }, function (userData, next) { - if (parseInt(userData.banned, 10) === 1) { + if (userData.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-chat]]')); } @@ -322,11 +322,11 @@ Messaging.canMessageRoom = function (uid, roomId, callback) { user.getUserFields(uid, ['banned', 'email:confirmed'], next); }, function (userData, next) { - if (parseInt(userData.banned, 10) === 1) { + if (userData.banned) { return next(new Error('[[error:user-banned]]')); } - if (meta.config.requireEmailConfirmation && parseInt(userData['email:confirmed'], 10) !== 1) { + if (meta.config.requireEmailConfirmation && !userData['email:confirmed']) { return next(new Error('[[error:email-not-confirmed-chat]]')); } diff --git a/src/middleware/admin.js b/src/middleware/admin.js index d3d73b30ad..0439727fdb 100644 --- a/src/middleware/admin.js +++ b/src/middleware/admin.js @@ -72,7 +72,7 @@ module.exports = function (middleware) { function (results, next) { var userData = results.userData; userData.uid = req.uid; - userData['email:confirmed'] = parseInt(userData['email:confirmed'], 10) === 1; + userData['email:confirmed'] = userData['email:confirmed'] === 1; var acpPath = req.path.slice(1).split('/'); acpPath.forEach(function (path, i) { diff --git a/src/middleware/header.js b/src/middleware/header.js index 881b4b6432..fb617b1fae 100644 --- a/src/middleware/header.js +++ b/src/middleware/header.js @@ -137,9 +137,8 @@ module.exports = function (middleware) { results.user.privileges = results.privileges; results.user[results.user.status] = true; - results.user.uid = parseInt(results.user.uid, 10); results.user.email = String(results.user.email); - results.user['email:confirmed'] = parseInt(results.user['email:confirmed'], 10) === 1; + results.user['email:confirmed'] = results.user['email:confirmed'] === 1; results.user.isEmailConfirmSent = !!results.isEmailConfirmSent; setBootswatchCSS(templateValues, res.locals.config); diff --git a/src/posts/delete.js b/src/posts/delete.js index 14cd9dd3b1..d6ba21d771 100644 --- a/src/posts/delete.js +++ b/src/posts/delete.js @@ -168,7 +168,7 @@ module.exports = function (Posts) { topics.updateLastPostTimeFromLastPid(postData.tid, next); }, function (next) { - if (parseInt(topicData.pinned, 10) !== 1) { + if (!topicData.pinned) { db.sortedSetIncrBy('cid:' + topicData.cid + ':tids:posts', -1, postData.tid, next); } else { next(); diff --git a/src/posts/tools.js b/src/posts/tools.js index cf7c8923c4..6d8164aec9 100644 --- a/src/posts/tools.js +++ b/src/posts/tools.js @@ -27,9 +27,9 @@ module.exports = function (Posts) { Posts.getPostField(pid, 'deleted', next); }, function (deleted, next) { - if (parseInt(deleted, 10) === 1 && isDelete) { + if (deleted && isDelete) { return next(new Error('[[error:post-already-deleted]]')); - } else if (parseInt(deleted, 10) !== 1 && !isDelete) { + } else if (!deleted && !isDelete) { return next(new Error('[[error:post-already-restored]]')); } diff --git a/src/posts/user.js b/src/posts/user.js index ad82e7e684..f22ea0559f 100644 --- a/src/posts/user.js +++ b/src/posts/user.js @@ -65,7 +65,7 @@ module.exports = function (Posts) { userData.userslug = userData.userslug || ''; userData.reputation = userData.reputation || 0; userData.postcount = userData.postcount || 0; - userData.banned = parseInt(userData.banned, 10) === 1; + userData.banned = userData.banned === 1; userData.picture = userData.picture || ''; userData.status = user.getStatus(userData); userData.signature = validator.escape(String(userData.signature || '')); diff --git a/src/posts/votes.js b/src/posts/votes.js index 75a2b5b3ca..14481f400c 100644 --- a/src/posts/votes.js +++ b/src/posts/votes.js @@ -294,8 +294,8 @@ module.exports = function (Posts) { }, next); }, function (results, next) { - postData.upvotes = parseInt(results.upvotes, 10); - postData.downvotes = parseInt(results.downvotes, 10); + postData.upvotes = results.upvotes; + postData.downvotes = results.downvotes; postData.votes = postData.upvotes - postData.downvotes; Posts.updatePostVoteCount(postData, next); }, diff --git a/src/routes/feeds.js b/src/routes/feeds.js index ce1598b2f7..b20b308242 100644 --- a/src/routes/feeds.js +++ b/src/routes/feeds.js @@ -351,14 +351,14 @@ function generateTopicsFeed(feedOptions, feedTopics, callback) { var feed = new rss(feedOptions); if (feedTopics.length > 0) { - feed.pubDate = new Date(parseInt(feedTopics[0].lastposttime, 10)).toUTCString(); + feed.pubDate = new Date(feedTopics[0].lastposttime).toUTCString(); } async.eachSeries(feedTopics, function (topicData, next) { var feedItem = { title: utils.stripHTMLTags(topicData.title, utils.tags), url: nconf.get('url') + '/topic/' + topicData.slug, - date: new Date(parseInt(topicData.lastposttime, 10)).toUTCString(), + date: new Date(topicData.lastposttime).toUTCString(), }; if (topicData.teaser && topicData.teaser.user && !feedOptions.useMainPost) { diff --git a/src/socket.io/admin/user.js b/src/socket.io/admin/user.js index 4c7c6caf44..3e96545c15 100644 --- a/src/socket.io/admin/user.js +++ b/src/socket.io/admin/user.js @@ -24,7 +24,7 @@ User.makeAdmins = function (socket, uids, callback) { }, function (userData, next) { for (var i = 0; i < userData.length; i += 1) { - if (userData[i] && parseInt(userData[i].banned, 10) === 1) { + if (userData[i] && userData[i].banned) { return callback(new Error('[[error:cant-make-banned-users-admin]]')); } } diff --git a/src/socket.io/posts.js b/src/socket.io/posts.js index 0b14cc2407..663534ba03 100644 --- a/src/socket.io/posts.js +++ b/src/socket.io/posts.js @@ -84,7 +84,7 @@ SocketPosts.getRawPost = function (socket, pid, callback) { posts.getPostFields(pid, ['content', 'deleted'], next); }, function (postData, next) { - if (parseInt(postData.deleted, 10) === 1) { + if (postData.deleted) { return next(new Error('[[error:no-post]]')); } next(null, postData.content); diff --git a/src/socket.io/posts/diffs.js b/src/socket.io/posts/diffs.js index ef5c887dd7..eddd9e3f1b 100644 --- a/src/socket.io/posts/diffs.js +++ b/src/socket.io/posts/diffs.js @@ -37,7 +37,6 @@ module.exports = function (SocketPosts) { return callback(err); } - payload.deleted = parseInt(payload.deleted, 10); payload.privileges = payload.privileges[0]; const allowed = payload.privileges['posts:history'] && (payload.deleted ? payload.privileges['posts:view_deleted'] : true); diff --git a/src/socket.io/posts/edit.js b/src/socket.io/posts/edit.js index 2e418fc041..8d1bc773a5 100644 --- a/src/socket.io/posts/edit.js +++ b/src/socket.io/posts/edit.js @@ -57,7 +57,7 @@ module.exports = function (SocketPosts) { }); } - if (parseInt(result.post.deleted, 10) !== 1) { + if (!result.post.deleted) { websockets.in('topic_' + result.topic.tid).emit('event:post_edited', result); return callback(null, result.post); } diff --git a/src/socket.io/posts/helpers.js b/src/socket.io/posts/helpers.js index a4438ba981..c5c41746ec 100644 --- a/src/socket.io/posts/helpers.js +++ b/src/socket.io/posts/helpers.js @@ -38,7 +38,7 @@ helpers.postCommand = function (socket, command, eventName, notification, data, return next(new Error('[[error:invalid-pid]]')); } - if (parseInt(results.deleted, 10) === 1) { + if (results.deleted) { return next(new Error('[[error:post-deleted]]')); } diff --git a/src/socket.io/posts/tools.js b/src/socket.io/posts/tools.js index c50bed33ca..fccfc9388e 100644 --- a/src/socket.io/posts/tools.js +++ b/src/socket.io/posts/tools.js @@ -60,9 +60,8 @@ module.exports = function (SocketPosts) { function (results, next) { var posts = results.posts; posts.tools = results.tools.tools; - posts.deleted = parseInt(posts.deleted, 10) === 1; posts.bookmarked = results.bookmarked; - posts.selfPost = socket.uid && socket.uid === parseInt(posts.uid, 10); + posts.selfPost = socket.uid && socket.uid === posts.uid; posts.display_edit_tools = results.canEdit.flag; posts.display_delete_tools = results.canDelete.flag; posts.display_purge_tools = results.canPurge; @@ -226,9 +225,9 @@ module.exports = function (SocketPosts) { posts.getTopicFields(pid, ['tid', 'cid', 'deleted'], next); }, function (topic, next) { - if (parseInt(topic.deleted, 10) !== 1 && command === 'delete') { + if (command === 'delete' && !topic.deleted) { socketTopics.doTopicAction('delete', 'event:topic_deleted', socket, { tids: [topic.tid], cid: topic.cid }, next); - } else if (parseInt(topic.deleted, 10) === 1 && command === 'restore') { + } else if (command === 'restore' && topic.deleted) { socketTopics.doTopicAction('restore', 'event:topic_restored', socket, { tids: [topic.tid], cid: topic.cid }, next); } else { setImmediate(next); @@ -244,7 +243,7 @@ module.exports = function (SocketPosts) { }, isLast: function (next) { posts.getTopicFields(pid, ['postcount'], function (err, topic) { - next(err, topic ? parseInt(topic.postcount, 10) === 1 : false); + next(err, topic ? topic.postcount === 1 : false); }); }, }, callback); diff --git a/src/socket.io/topics/infinitescroll.js b/src/socket.io/topics/infinitescroll.js index e2c87f3319..c35f188576 100644 --- a/src/socket.io/topics/infinitescroll.js +++ b/src/socket.io/topics/infinitescroll.js @@ -27,7 +27,7 @@ module.exports = function (SocketTopics) { }, next); }, function (results, next) { - if (!results.privileges['topics:read'] || (parseInt(results.topic.deleted, 10) && !results.privileges.view_deleted)) { + if (!results.privileges['topics:read'] || (results.topic.deleted && !results.privileges.view_deleted)) { return callback(new Error('[[error:no-privileges]]')); } diff --git a/src/topics/create.js b/src/topics/create.js index 95cb490ad2..ffb2077cb8 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -226,11 +226,11 @@ module.exports = function (Topics) { return next(new Error('[[error:no-topic]]')); } - if (parseInt(results.topicData.locked, 10) === 1 && !results.isAdminOrMod) { + if (results.topicData.locked && !results.isAdminOrMod) { return next(new Error('[[error:topic-locked]]')); } - if (parseInt(results.topicData.deleted, 10) === 1 && !results.isAdminOrMod) { + if (results.topicData.deleted && !results.isAdminOrMod) { return next(new Error('[[error:topic-deleted]]')); } @@ -311,7 +311,7 @@ module.exports = function (Topics) { function (results, next) { postData.user = results.userInfo[0]; postData.topic = results.topicInfo; - postData.index = parseInt(results.topicInfo.postcount, 10) - 1; + postData.index = results.topicInfo.postcount - 1; // Username override for guests, if enabled if (meta.config.allowGuestHandles && postData.uid === 0 && data.handle) { diff --git a/src/topics/data.js b/src/topics/data.js index 2d63e73f9f..02d8fac323 100644 --- a/src/topics/data.js +++ b/src/topics/data.js @@ -10,7 +10,7 @@ var translator = require('../translator'); const intFields = [ 'tid', 'cid', 'uid', 'mainPid', 'deleted', 'locked', 'pinned', - 'timestamp', 'upvotes', 'downvotes', + 'timestamp', 'upvotes', 'downvotes', 'lastposttime', ]; module.exports = function (Topics) { @@ -114,6 +114,7 @@ function modifyTopic(topic) { if (topic.hasOwnProperty('timestamp')) { topic.timestampISO = utils.toISOString(topic.timestamp); } + if (topic.hasOwnProperty('lastposttime')) { topic.lastposttimeISO = utils.toISOString(topic.lastposttime); } diff --git a/src/topics/delete.js b/src/topics/delete.js index 86b310bd5b..b8b6236b4a 100644 --- a/src/topics/delete.js +++ b/src/topics/delete.js @@ -85,9 +85,7 @@ module.exports = function (Topics) { posts.getPostsFields(pids, ['pid', 'timestamp', 'deleted'], next); }, function (postData, next) { - postData = postData.filter(function (post) { - return post && parseInt(post.deleted, 10) !== 1; - }); + postData = postData.filter(post => post && !post.deleted); var pidsToAdd = []; var scores = []; postData.forEach(function (post) { @@ -247,8 +245,6 @@ module.exports = function (Topics) { Topics.getTopicFields(tid, ['cid', 'postcount'], next); }, function (topicData, next) { - topicData.postcount = parseInt(topicData.postcount, 10); - topicData.postcount = topicData.postcount || 0; var postCountChange = incr * topicData.postcount; async.parallel([ diff --git a/src/topics/index.js b/src/topics/index.js index a8e642c99c..799cf165d5 100644 --- a/src/topics/index.js +++ b/src/topics/index.js @@ -79,9 +79,7 @@ Topics.getTopicsByTids = function (tids, uid, callback) { function mapFilter(array, field) { return array.map(function (topic) { return topic && topic[field] && topic[field].toString(); - }).filter(function (value) { - return utils.isNumber(value); - }); + }).filter(value => utils.isNumber(value)); } topics = _topics; @@ -132,25 +130,17 @@ Topics.getTopicsByTids = function (tids, uid, callback) { topics[i].teaser = results.teasers[i]; topics[i].tags = results.tags[i]; - topics[i].isOwner = parseInt(topics[i].uid, 10) === parseInt(uid, 10); - topics[i].pinned = parseInt(topics[i].pinned, 10) === 1; - topics[i].locked = parseInt(topics[i].locked, 10) === 1; - topics[i].deleted = parseInt(topics[i].deleted, 10) === 1; + topics[i].isOwner = topics[i].uid === parseInt(uid, 10); topics[i].ignored = results.isIgnored[i]; topics[i].unread = !results.hasRead[i] && !results.isIgnored[i]; topics[i].bookmark = results.bookmarks[i]; topics[i].unreplied = !topics[i].teaser; - topics[i].upvotes = parseInt(topics[i].upvotes, 10) || 0; - topics[i].downvotes = parseInt(topics[i].downvotes, 10) || 0; - topics[i].votes = topics[i].upvotes - topics[i].downvotes; topics[i].icons = []; } } - topics = topics.filter(function (topic) { - return topic && topic.category && !topic.category.disabled; - }); + topics = topics.filter(topic => topic && topic.category && !topic.category.disabled); plugins.fireHook('filter:topics.get', { topics: topics, uid: uid }, next); }, @@ -203,10 +193,7 @@ Topics.getTopicWithPosts = function (topicData, set, uid, start, stop, reverse, topicData.mergedTimestampISO = utils.toISOString(topicData.mergedTimestamp); topicData.related = results.related || []; - topicData.unreplied = parseInt(topicData.postcount, 10) === 1; - topicData.deleted = parseInt(topicData.deleted, 10) === 1; - topicData.locked = parseInt(topicData.locked, 10) === 1; - topicData.pinned = parseInt(topicData.pinned, 10) === 1; + topicData.unreplied = topicData.postcount === 1; topicData.icons = []; @@ -338,7 +325,7 @@ function getMainPosts(mainPids, uid, callback) { Topics.isLocked = function (tid, callback) { Topics.getTopicField(tid, 'locked', function (err, locked) { - callback(err, parseInt(locked, 10) === 1); + callback(err, locked === 1); }); }; diff --git a/src/topics/posts.js b/src/topics/posts.js index aca0cc3516..f9c0786064 100644 --- a/src/topics/posts.js +++ b/src/topics/posts.js @@ -48,9 +48,7 @@ module.exports = function (Topics) { if (!Array.isArray(postData) || !postData.length) { return callback(null, []); } - var pids = postData.map(function (post) { - return post && post.pid; - }); + var pids = postData.map(post => post && post.pid); if (!Array.isArray(pids) || !pids.length) { return callback(null, []); @@ -105,15 +103,14 @@ module.exports = function (Topics) { function (results, next) { postData.forEach(function (postObj, i) { if (postObj) { - postObj.deleted = parseInt(postObj.deleted, 10) === 1; - postObj.user = parseInt(postObj.uid, 10) ? results.userData[postObj.uid] : _.clone(results.userData[postObj.uid]); + postObj.user = postObj.uid ? results.userData[postObj.uid] : _.clone(results.userData[postObj.uid]); postObj.editor = postObj.editor ? results.editors[postObj.editor] : null; postObj.bookmarked = results.bookmarks[i]; postObj.upvoted = results.voteData.upvotes[i]; postObj.downvoted = results.voteData.downvotes[i]; postObj.votes = postObj.votes || 0; postObj.replies = results.replies[i]; - postObj.selfPost = !!parseInt(uid, 10) && parseInt(uid, 10) === parseInt(postObj.uid, 10); + postObj.selfPost = !!parseInt(uid, 10) && parseInt(uid, 10) === postObj.uid; // Username override for guests, if enabled if (meta.config.allowGuestHandles && postObj.uid === 0 && postObj.handle) { @@ -238,7 +235,7 @@ module.exports = function (Topics) { posts.getPostField(pids[0], 'deleted', _next); }, function (deleted, _next) { - isDeleted = parseInt(deleted, 10) === 1; + isDeleted = deleted; if (!isDeleted) { latestPid = pids[0]; } diff --git a/src/topics/recent.js b/src/topics/recent.js index 8b62e788a7..dd5f7a148d 100644 --- a/src/topics/recent.js +++ b/src/topics/recent.js @@ -86,11 +86,11 @@ module.exports = function (Topics) { async.apply(db.sortedSetAdd, 'cid:' + topicData.cid + ':tids:lastposttime', lastposttime, tid), ]; - if (parseInt(topicData.deleted, 10) !== 1) { + if (!topicData.deleted) { tasks.push(async.apply(Topics.updateRecent, tid, lastposttime)); } - if (parseInt(topicData.pinned, 10) !== 1) { + if (!topicData.pinned) { tasks.push(async.apply(db.sortedSetAdd, 'cid:' + topicData.cid + ':tids', lastposttime, tid)); } async.series(tasks, next); diff --git a/src/topics/sorted.js b/src/topics/sorted.js index 1545608f8f..2a94bfcbb8 100644 --- a/src/topics/sorted.js +++ b/src/topics/sorted.js @@ -89,9 +89,7 @@ module.exports = function (Topics) { } else if (params.sort === 'votes') { sortFn = sortVotes; } - tids = topicData.sort(sortFn).map(function (topic) { - return topic && topic.tid; - }); + tids = topicData.sort(sortFn).map(topic => topic && topic.tid); next(null, tids); }, ], callback); @@ -102,17 +100,17 @@ module.exports = function (Topics) { } function sortVotes(a, b) { - if (parseInt(a.votes, 10) !== parseInt(b.votes, 10)) { + if (a.votes !== b.votes) { return b.votes - a.votes; } - return parseInt(b.postcount, 10) - parseInt(a.postcount, 10); + return b.postcount - a.postcount; } function sortPopular(a, b) { - if (parseInt(a.postcount, 10) !== parseInt(b.postcount, 10)) { + if (a.postcount !== b.postcount) { return b.postcount - a.postcount; } - return parseInt(b.viewcount, 10) - parseInt(a.viewcount, 10); + return b.viewcount - a.viewcount; } function filterTids(tids, params, callback) { diff --git a/src/topics/teaser.js b/src/topics/teaser.js index 4b71ac6d65..1445faf935 100644 --- a/src/topics/teaser.js +++ b/src/topics/teaser.js @@ -25,7 +25,7 @@ module.exports = function (Topics) { var tidToPost = {}; topics.forEach(function (topic) { - counts.push(topic && (parseInt(topic.postcount, 10) || 0)); + counts.push(topic && topic.postcount); if (topic) { if (topic.teaserPid === 'null') { delete topic.teaserPid; diff --git a/src/topics/tools.js b/src/topics/tools.js index a34eead8e6..6cf4bbefcc 100644 --- a/src/topics/tools.js +++ b/src/topics/tools.js @@ -42,9 +42,9 @@ module.exports = function (Topics) { function (_topicData, next) { topicData = _topicData; - if (parseInt(topicData.deleted, 10) === 1 && isDelete) { + if (topicData.deleted && isDelete) { return callback(new Error('[[error:topic-already-deleted]]')); - } else if (parseInt(topicData.deleted, 10) !== 1 && !isDelete) { + } else if (!topicData.deleted && !isDelete) { return callback(new Error('[[error:topic-already-restored]]')); } @@ -289,7 +289,7 @@ module.exports = function (Topics) { db.sortedSetAdd('cid:' + cid + ':tids:posts', topic.postcount, tid, next); }, function (next) { - var votes = (parseInt(topic.upvotes, 10) || 0) - (parseInt(topic.downvotes, 10) || 0); + var votes = topic.upvotes - topic.downvotes; db.sortedSetAdd('cid:' + cid + ':tids:votes', votes, tid, next); }, ], function (err) { diff --git a/src/topics/unread.js b/src/topics/unread.js index 4053795efe..3b7eb0590a 100644 --- a/src/topics/unread.js +++ b/src/topics/unread.js @@ -223,7 +223,7 @@ module.exports = function (Topics) { tidsByFilter.watched.push(topic.tid); } - if (parseInt(topic.postcount, 10) <= 1) { + if (topic.postcount <= 1) { counts.unreplied += 1; tidsByFilter.unreplied.push(topic.tid); } diff --git a/src/user/bans.js b/src/user/bans.js index 9868c10776..e901ecb1c0 100644 --- a/src/user/bans.js +++ b/src/user/bans.js @@ -67,13 +67,13 @@ module.exports = function (User) { async.waterfall([ async.apply(User.getUserFields, uid, ['banned', 'banned:expire']), function (userData, next) { - var banned = userData && parseInt(userData.banned, 10) === 1; + var banned = userData && userData.banned; if (!banned) { return next(null, banned); } // If they are banned, see if the ban has expired - var stillBanned = !parseInt(userData['banned:expire'], 10) || Date.now() < parseInt(userData['banned:expire'], 10); + var stillBanned = !userData['banned:expire'] || Date.now() < userData['banned:expire']; if (stillBanned) { return next(null, true); diff --git a/src/user/data.js b/src/user/data.js index 1f2de654f1..190c1bc511 100644 --- a/src/user/data.js +++ b/src/user/data.js @@ -13,8 +13,8 @@ var utils = require('../utils'); const intFields = [ 'uid', 'postcount', 'topiccount', 'reputation', 'profileviews', - 'banned', 'email:confirmed', 'joindate', 'lastonline', 'lastqueuetime', - 'lastposttime', + 'banned', 'banned:expire', 'email:confirmed', 'joindate', 'lastonline', 'lastqueuetime', + 'lastposttime', 'followingCount', 'followerCount', ]; module.exports = function (User) { @@ -167,7 +167,7 @@ module.exports = function (User) { user.picture = User.getDefaultAvatar(); } - if (user.hasOwnProperty('status') && parseInt(user.lastonline, 10)) { + if (user.hasOwnProperty('status') && user.lastonline) { user.status = User.getStatus(user); } @@ -192,7 +192,7 @@ module.exports = function (User) { } if (user.hasOwnProperty('banned:expire')) { - user.banned_until = parseInt(user['banned:expire'], 10) || 0; + user.banned_until = user['banned:expire']; user.banned_until_readable = user.banned_until ? new Date(user.banned_until).toString() : 'Not Banned'; } }); diff --git a/src/user/index.js b/src/user/index.js index f4e504a5cb..c17597ff38 100644 --- a/src/user/index.js +++ b/src/user/index.js @@ -85,14 +85,6 @@ User.getUsersWithFields = function (uids, fields, uid, callback) { if (user.hasOwnProperty('status')) { user.status = User.getStatus(user); } - - if (user.hasOwnProperty('banned')) { - user.banned = parseInt(user.banned, 10) === 1; - } - - if (user.hasOwnProperty(['email:confirmed'])) { - user['email:confirmed'] = parseInt(user['email:confirmed'], 10) === 1; - } } }); plugins.fireHook('filter:userlist.get', { users: results.userData, uid: uid }, next); @@ -112,10 +104,10 @@ User.getUsers = function (uids, uid, callback) { }; User.getStatus = function (userData) { - if (parseInt(userData.uid, 10) <= 0) { + if (userData.uid <= 0) { return 'offline'; } - var isOnline = (Date.now() - parseInt(userData.lastonline, 10)) < 300000; + var isOnline = (Date.now() - userData.lastonline) < 300000; return isOnline ? (userData.status || 'online') : 'offline'; }; diff --git a/src/user/posts.js b/src/user/posts.js index cda65a5f85..d03a2c9cc9 100644 --- a/src/user/posts.js +++ b/src/user/posts.js @@ -30,7 +30,7 @@ module.exports = function (User) { }, next); }, function (results, next) { - if (!parseInt(results.userData.uid, 10)) { + if (!results.userData.uid) { return next(new Error('[[error:no-user]]')); } @@ -40,7 +40,7 @@ module.exports = function (User) { var userData = results.userData; - if (parseInt(userData.banned, 10) === 1) { + if (userData.banned) { return next(new Error('[[error:user-banned]]')); } diff --git a/src/user/search.js b/src/user/search.js index 891e41de13..0d8c2907a3 100644 --- a/src/user/search.js +++ b/src/user/search.js @@ -81,9 +81,7 @@ module.exports = function (User) { } function filterAndSortUids(uids, data, callback) { - uids = uids.filter(function (uid) { - return parseInt(uid, 10); - }); + uids = uids.filter(uid => parseInt(uid, 10)); var fields = []; @@ -111,31 +109,24 @@ module.exports = function (User) { User.getUsersFields(uids, fields, next); }, function (userData, next) { + userData = userData.filter(Boolean); if (data.onlineOnly) { - userData = userData.filter(function (user) { - return user && user.status !== 'offline' && (Date.now() - parseInt(user.lastonline, 10) < 300000); - }); + userData = userData.filter(user => user.status !== 'offline' && (Date.now() - user.lastonline < 300000)); } if (data.bannedOnly) { - userData = userData.filter(function (user) { - return user && parseInt(user.banned, 10) === 1; - }); + userData = userData.filter(user => user.banned); } if (data.flaggedOnly) { - userData = userData.filter(function (user) { - return user && parseInt(user.flags, 10) > 0; - }); + userData = userData.filter(user => parseInt(user.flags, 10) > 0); } if (data.sortBy) { sortUsers(userData, data.sortBy); } - uids = userData.map(function (user) { - return user && user.uid; - }); + uids = userData.map(user => user.uid); next(null, uids); }, diff --git a/test/database/sets.js b/test/database/sets.js index c667758a66..d7390417ba 100644 --- a/test/database/sets.js +++ b/test/database/sets.js @@ -156,6 +156,14 @@ describe('Set methods', function () { done(); }); }); + + it('should return 0 if set does not exist', function (done) { + db.setCount('doesnotexist', function (err, count) { + assert.ifError(err); + assert.strictEqual(count, 0); + done(); + }); + }); }); describe('setsCount()', function () { diff --git a/test/posts.js b/test/posts.js index b85f45d7db..0f056cb39c 100644 --- a/test/posts.js +++ b/test/posts.js @@ -273,10 +273,10 @@ describe('Post\'s', function () { assert.ifError(err); posts.getPostField(replyPid, 'deleted', function (err, deleted) { assert.ifError(err); - assert.equal(parseInt(deleted, 10), 1); + assert.strictEqual(deleted, 1); posts.getPostField(mainPid, 'deleted', function (err, deleted) { assert.ifError(err); - assert.equal(parseInt(deleted, 10), 1); + assert.strictEqual(deleted, 1); done(); }); }); @@ -290,7 +290,7 @@ describe('Post\'s', function () { assert.ifError(err); topics.getTopicField(data.topicData.tid, 'deleted', function (err, deleted) { assert.ifError(err); - assert.equal(parseInt(deleted, 10), 1); + assert.strictEqual(deleted, 1); done(); }); }); diff --git a/test/topics.js b/test/topics.js index a108415c40..213f906a3e 100644 --- a/test/topics.js +++ b/test/topics.js @@ -373,9 +373,9 @@ describe('Topic\'s', function () { it('should pin topic', function (done) { socketTopics.pin({ uid: 1 }, { tids: [newTopic.tid], cid: categoryObj.cid }, function (err) { assert.ifError(err); - db.getObjectField('topic:' + newTopic.tid, 'pinned', function (err, pinned) { + topics.getTopicField(newTopic.tid, 'pinned', function (err, pinned) { assert.ifError(err); - assert.strictEqual(parseInt(pinned, 10), 1); + assert.strictEqual(pinned, 1); done(); }); }); @@ -384,9 +384,9 @@ describe('Topic\'s', function () { it('should unpin topic', function (done) { socketTopics.unpin({ uid: 1 }, { tids: [newTopic.tid], cid: categoryObj.cid }, function (err) { assert.ifError(err); - db.getObjectField('topic:' + newTopic.tid, 'pinned', function (err, pinned) { + topics.getTopicField(newTopic.tid, 'pinned', function (err, pinned) { assert.ifError(err); - assert.strictEqual(parseInt(pinned, 10), 0); + assert.strictEqual(pinned, 0); done(); }); }); diff --git a/test/user.js b/test/user.js index b5ae9c11dc..650c4215a7 100644 --- a/test/user.js +++ b/test/user.js @@ -456,12 +456,19 @@ describe('User', function () { User.reset.commit(code, 'newpassword', function (err) { assert.ifError(err); - db.getObject('user:' + uid, function (err, userData) { + async.parallel({ + userData: function (next) { + User.getUserData(uid, next); + }, + password: function (next) { + db.getObjectField('user:' + uid, 'password', next); + }, + }, function (err, results) { assert.ifError(err); - Password.compare('newpassword', userData.password, function (err, match) { + Password.compare('newpassword', results.password, function (err, match) { assert.ifError(err); assert(match); - assert.equal(parseInt(userData['email:confirmed'], 10), 1); + assert.strictEqual(results.userData['email:confirmed'], 1); done(); }); });