inertia-sails
Version:
The Sails adapter for Inertia.
36 lines (29 loc) • 948 B
JavaScript
const { encode } = require('querystring')
const inertiaHeaders = require('./helpers/inertia-headers')
const buildPageObject = require('./helpers/build-page-object')
module.exports = async function render(req, res, data) {
const sails = req._sails
const sharedViewData = sails.inertia.sharedViewData
const rootView = sails.config.inertia.rootView
const allViewData = {
...sharedViewData,
...data.viewData
}
let page = await buildPageObject(req, data.page, data.props)
const queryParams = req.query
if (req.method === 'GET' && Object.keys(queryParams).length) {
// Keep original request query params
page.url += `?${encode(queryParams)}`
}
if (req.get(inertiaHeaders.INERTIA)) {
res.set(inertiaHeaders.INERTIA, true)
res.set('Vary', 'Accept')
return res.json(page)
} else {
// Implements full page reload
return res.view(rootView, {
page,
viewData: allViewData
})
}
}