Feat: Welcome Page (#17150)

This commit is contained in:
Stuart Taylor
2018-05-15 06:12:05 +01:00
committed by mrugesh mohapatra
parent 47bb4ca5e3
commit 156ea1af76
172 changed files with 693 additions and 9738 deletions

View File

@@ -1,44 +1,69 @@
import { defaultProfileImage } from '../../common/utils/constantStrings.json';
import supportedLanguages from '../../common/utils/supported-languages';
import { getRandomQuote } from '../../common/app/utils/quotes';
import { cachedMap } from '../utils/map';
// import NewsFeed from '../rss';
const message =
'Learn to Code and Help Nonprofits';
// const news = new NewsFeed();
module.exports = function(app) {
var router = app.loopback.Router();
router.get('/', addDefaultImage, index);
app.use(
'/:lang',
(req, res, next) => {
// add url language to request for all routers
req._urlLang = req.params.lang;
next();
},
router
);
app.use(router);
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();
}
);
function addDefaultImage(req, res, next) {
if (!req.user || req.user.picture) {
return next();
}
return req.user.update$({ picture: defaultProfileImage })
.subscribe(
() => next(),
next
);
.subscribe(
() => next(),
next
);
}
function index(req, res, next) {
if (!supportedLanguages[req._urlLang]) {
return next();
}
if (req.user) {
return res.redirect('/challenges/current-challenge');
}
return res.render('home', { title: message });
}
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
});
});
}
};