Files
the-example-app-nodejs/routes/landingPage.js
Khaled Garbaya fec1fa8a41 refactor: Improvements
* refactor: Update modal

* refactor: Update settings page

* feat: Add reset credentials

* feat: Add .nvmrc and lodash

* chore: Remove console.log

* chore: nmvrc -> .nvmrc

* chore: nmvrc -> .nvmrc
2017-12-13 15:57:01 +01:00

36 lines
1.2 KiB
JavaScript

/**
* This module renders a layout when its route is requested
* It is used for pages like home page
*/
const url = require('url')
const { getLandingPage } = require('../services/contentful')
const attachEntryState = require('../lib/entry-state')
const shouldAttachEntryState = require('../lib/should-attach-entry-state')
/**
* Renders a landing page when `/` route is requested
* based on the pathname an entry is queried from contentful
* and a view is rendered from the pulled data
*
* @param request - Object - Express request
* @param response - Object - Express response
* @param next - Function - Express callback
* @returns {undefined}
*/
module.exports.getLandingPage = async (request, response, next) => {
let pathname = url.parse(request.url).pathname.split('/').filter(Boolean)[0]
pathname = pathname || 'home'
let landingPage = await getLandingPage(
pathname,
response.locals.currentLocale.code,
response.locals.currentApi.id
)
// Attach entry state flags when using preview API
if (shouldAttachEntryState(response)) {
landingPage = await attachEntryState(landingPage)
}
response.render('landingPage', { title: pathname, landingPage })
}