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-06-03 16:31:42 -07:00
|
|
|
|
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
|
|
|
}
|
2015-05-21 11:07:40 -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 ?
|
2018-05-21 16:21:15 +01:00
|
|
|
`Welcome, ${user.name ? user.name : 'Camper'}!` :
|
2018-05-15 06:12:05 +01:00
|
|
|
'Learn to Code and Help Nonprofits';
|
|
|
|
const completedChallengeCount = user && user.completedChallengeCount || 0;
|
|
|
|
const completedProjectCount = user && user.completedProjectCount || 0;
|
|
|
|
const completedCertCount = user && user.completedCertCount || 0;
|
2018-05-21 16:21:15 +01:00
|
|
|
const completedLegacyCertCount = user && user.completedLegacyCertCount || 0;
|
2018-05-15 06:12:05 +01:00
|
|
|
Promise.all([
|
|
|
|
// news.getFeed(),
|
|
|
|
About.getActiveUsersForRendering()
|
|
|
|
])
|
|
|
|
.then(([
|
|
|
|
// feed,
|
|
|
|
activeUsers
|
|
|
|
]) => {
|
|
|
|
return res.render(
|
|
|
|
homePage, {
|
|
|
|
activeUsers,
|
|
|
|
author,
|
|
|
|
challengeCount,
|
|
|
|
completedChallengeCount,
|
|
|
|
completedProjectCount,
|
|
|
|
completedCertCount,
|
2018-05-21 16:21:15 +01:00
|
|
|
completedLegacyCertCount,
|
2018-05-15 06:12:05 +01:00
|
|
|
// feed,
|
|
|
|
quote,
|
|
|
|
title
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
2015-06-03 16:19:23 -07:00
|
|
|
};
|