Files
freeCodeCamp/server/boot/home.js

70 lines
1.8 KiB
JavaScript
Raw Normal View History

2015-08-11 13:22:16 -07:00
import { defaultProfileImage } from '../../common/utils/constantStrings.json';
2018-05-15 06:12:05 +01:00
import { getRandomQuote } from '../../common/app/utils/quotes';
import { cachedMap } from '../utils/map';
// import NewsFeed from '../rss';
2015-08-11 13:22:16 -07:00
2018-05-15 06:12:05 +01:00
// const news = new NewsFeed();
2014-01-13 04:34:54 -05:00
2018-05-15 06:12:05 +01:00
module.exports = function(app, done) {
const { About } = app.models;
const router = app.loopback.Router();
let challengeCount = 0;
cachedMap(app.models)
.do(({ entities: { challenge } }) => {
challengeCount = Object.keys(challenge).length;
})
.subscribe(
() => {},
err => {throw new Error(err);},
() => {
router.get('/', addDefaultImage, index);
app.use(router);
done();
}
);
2015-08-11 13:22:16 -07:00
function addDefaultImage(req, res, next) {
if (!req.user || req.user.picture) {
return next();
}
2016-06-17 12:35:10 -07:00
return req.user.update$({ picture: defaultProfileImage })
2018-05-15 06:12:05 +01:00
.subscribe(
() => next(),
next
);
2015-08-11 13:22:16 -07:00
}
2018-05-15 06:12:05 +01:00
function index(req, res) {
const { user } = req;
const homePage = user ? 'userHome' : 'noUserHome';
const { quote, author} = getRandomQuote();
const title = user ?
`Welcome back ${user.name ? user.name : 'Camper'}` :
'Learn to Code and Help Nonprofits';
const completedChallengeCount = user && user.completedChallengeCount || 0;
const completedProjectCount = user && user.completedProjectCount || 0;
const completedCertCount = user && user.completedCertCount || 0;
Promise.all([
// news.getFeed(),
About.getActiveUsersForRendering()
])
.then(([
// feed,
activeUsers
]) => {
return res.render(
homePage, {
activeUsers,
author,
challengeCount,
completedChallengeCount,
completedProjectCount,
completedCertCount,
// feed,
quote,
title
});
});
}
};