function render()

in apps-rendering/src/server/editionsPage.tsx [162:223]


function render(
	imageSalt: string,
	request: RenderingRequest,
	res: Response,
	getAssetLocation: (assetName: string) => string,
	themeOverride: Option<ArticleTheme>,
): Page {
	const path = res.req.path;
	const isPreview = res.req.query.isPreview === 'true';
	const environment = getEditionsEnv(isPreview, path);
	const item = fromCapi({ docParser, salt: imageSalt, app: 'Editions' })(
		request,
		none,
	);

	const newItem = {
		...item,
		theme: withDefault(item.theme)(themeOverride),
	};

	const body = renderBody(newItem);
	const thirdPartyEmbeds = getThirdPartyEmbeds(request.content);

	const head = renderHead(
		item,
		request,
		thirdPartyEmbeds,
		body.css,
		body.ids,
		false,
		environment,
	);

	const devScript = map(getAssetLocation)(some('editions.js'));
	const prodScript = some('assets/js/editions.js');
	const previewScript = some(`${s3Path}/assets/js/editions.js`);

	const getClientScript = (env: EditionsEnv): Option<string> => {
		switch (env) {
			case EditionsEnv.Prod:
				return prodScript;
			case EditionsEnv.Preview:
				return previewScript;
			default:
				return devScript;
		}
	};

	const clientScript = getClientScript(environment);

	const scripts = (
		<Scripts
			clientScript={clientScript}
			twitter={thirdPartyEmbeds.twitter}
		/>
	);

	return {
		html: buildHtml(head, body.html, scripts),
		clientScript: none,
	};
}