diff --git a/src/controllers/accounts/blocks.js b/src/controllers/accounts/blocks.js index 527923797f..2dec4776fe 100644 --- a/src/controllers/accounts/blocks.js +++ b/src/controllers/accounts/blocks.js @@ -1,55 +1,39 @@ 'use strict'; -var async = require('async'); - -var helpers = require('../helpers'); -var accountHelpers = require('./helpers'); -var pagination = require('../../pagination'); -var user = require('../../user'); -var plugins = require('../../plugins'); - -var blocksController = module.exports; - -blocksController.getBlocks = function (req, res, callback) { - var userData; - - var page = parseInt(req.query.page, 10) || 1; - var resultsPerPage = 50; - var start = Math.max(0, page - 1) * resultsPerPage; - var stop = start + resultsPerPage - 1; - - async.waterfall([ - function (next) { - accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next); - }, - function (_userData, next) { - userData = _userData; - if (!userData) { - return callback(); - } - - user.blocks.list(res.locals.uid, next); - }, - function (uids, next) { - plugins.fireHook('filter:user.getBlocks', { - uids: uids, - uid: res.locals.uid, - start: start, - stop: stop, - }, next); - }, - function (data, next) { - user.getUsers(data.uids, res.locals.uid, next); - }, - function (users) { - userData.users = users; - userData.title = '[[pages:account/blocks, ' + userData.username + ']]'; - var count = userData.blocksCount; - var pageCount = Math.ceil(count / resultsPerPage); - userData.pagination = pagination.create(page, pageCount); - userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[user:blocks]]' }]); - - res.render('account/blocks', userData); - }, - ], callback); +const helpers = require('../helpers'); +const accountHelpers = require('./helpers'); +const pagination = require('../../pagination'); +const user = require('../../user'); +const plugins = require('../../plugins'); + +const blocksController = module.exports; + +blocksController.getBlocks = async function (req, res, next) { + const page = parseInt(req.query.page, 10) || 1; + const resultsPerPage = 50; + const start = Math.max(0, page - 1) * resultsPerPage; + const stop = start + resultsPerPage - 1; + + const userData = await accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid); + if (!userData) { + return next(); + } + const uids = await user.blocks.list(userData.uid); + const data = await plugins.fireHook('filter:user.getBlocks', { + uids: uids, + uid: userData.uid, + start: start, + stop: stop, + }); + + data.uids = data.uids.slice(start, stop + 1); + userData.users = await user.getUsers(data.uids, req.uid); + userData.title = '[[pages:account/blocks, ' + userData.username + ']]'; + + const pageCount = Math.ceil(userData.blocksCount / resultsPerPage); + userData.pagination = pagination.create(page, pageCount); + + userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[user:blocks]]' }]); + + res.render('account/blocks', userData); };