From 6552ebbd8befa697aa88c3cb8a1825dc033c1be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 3 Jan 2018 15:06:41 -0500 Subject: [PATCH] fix redis test for custom home page --- src/controllers/home.js | 77 +++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 41 deletions(-) diff --git a/src/controllers/home.js b/src/controllers/home.js index 6c67e7aaa2..35a6cfe6a0 100644 --- a/src/controllers/home.js +++ b/src/controllers/home.js @@ -1,61 +1,56 @@ 'use strict'; +var async = require('async'); var plugins = require('../plugins'); var meta = require('../meta'); var user = require('../user'); -var pubsub = require('../pubsub'); -var adminHomePageRoute; -var getRoute; - -function configUpdated() { - adminHomePageRoute = (meta.config.homePageRoute || meta.config.homePageCustom || '').replace(/^\/+/, '') || 'categories'; - getRoute = parseInt(meta.config.allowUserHomePage, 10) ? getRouteAllowUserHomePage : getRouteDisableUserHomePage; +function adminHomePageRoute() { + return (meta.config.homePageRoute || meta.config.homePageCustom || '').replace(/^\/+/, '') || 'categories'; } -function getRouteDisableUserHomePage(uid, next) { - next(null, adminHomePageRoute); +function getUserHomeRoute(uid, callback) { + async.waterfall([ + function (next) { + user.getSettings(uid, next); + }, + function (settings, next) { + var route = adminHomePageRoute(); + + if (settings.homePageRoute !== 'undefined' && settings.homePageRoute !== 'none') { + route = settings.homePageRoute || route; + } + + next(null, route); + }, + ], callback); } -function getRouteAllowUserHomePage(uid, next) { - user.getSettings(uid, function (err, settings) { - if (err) { - return next(err); - } - - var route = adminHomePageRoute; - - if (settings.homePageRoute !== 'undefined' && settings.homePageRoute !== 'none') { - route = settings.homePageRoute || route; - } - - next(null, route); - }); -} - -pubsub.on('config:update', configUpdated); -configUpdated(); - function rewrite(req, res, next) { if (req.path !== '/' && req.path !== '/api/' && req.path !== '/api') { return next(); } - getRoute(req.uid, function (err, route) { - if (err) { - return next(err); - } + async.waterfall([ + function (next) { + if (parseInt(meta.config.allowUserHomePage, 10)) { + getUserHomeRoute(req.uid, next); + } else { + next(null, adminHomePageRoute()); + } + }, + function (route, next) { + var hook = 'action:homepage.get:' + route; - var hook = 'action:homepage.get:' + route; + if (!plugins.hasListeners(hook)) { + req.url = req.path + (!req.path.endsWith('/') ? '/' : '') + route; + } else { + res.locals.homePageRoute = route; + } - if (!plugins.hasListeners(hook)) { - req.url = req.path + (!req.path.endsWith('/') ? '/' : '') + route; - } else { - res.locals.homePageRoute = route; - } - - next(); - }); + next(); + }, + ], next); } exports.rewrite = rewrite;