diff --git a/src/topics/tools.js b/src/topics/tools.js index a46d468209..10e2b50400 100644 --- a/src/topics/tools.js +++ b/src/topics/tools.js @@ -1,17 +1,16 @@ 'use strict'; -var async = require('async'); -var _ = require('lodash'); +const _ = require('lodash'); -var db = require('../database'); -var categories = require('../categories'); -var user = require('../user'); -var plugins = require('../plugins'); -var privileges = require('../privileges'); +const db = require('../database'); +const categories = require('../categories'); +const user = require('../user'); +const plugins = require('../plugins'); +const privileges = require('../privileges'); module.exports = function (Topics) { - var topicTools = {}; + const topicTools = {}; Topics.tools = topicTools; topicTools.delete = async function (tid, uid) { @@ -161,12 +160,10 @@ module.exports = function (Topics) { throw new Error('[[error:no-privileges]]'); } - await async.eachSeries(data, async function (topicData) { - const isPinned = await db.isSortedSetMember('cid:' + cid + ':tids:pinned', topicData.tid); - if (isPinned) { - await db.sortedSetAdd('cid:' + cid + ':tids:pinned', topicData.order, topicData.tid); - } - }); + const isPinned = await db.isSortedSetMembers('cid:' + cid + ':tids:pinned', tids); + data = data.filter((topicData, index) => isPinned[index]); + const bulk = data.map(topicData => ['cid:' + cid + ':tids:pinned', topicData.order, topicData.tid]); + await db.sortedSetAddBulk(bulk); }; topicTools.move = async function (tid, data) {