diff --git a/server/handlers/generate-service-worker.js b/server/handlers/generate-service-worker.js index 1cc31ec7..415872d4 100644 --- a/server/handlers/generate-service-worker.js +++ b/server/handlers/generate-service-worker.js @@ -13,6 +13,7 @@ async function generateServiceWorker( } ) { const configVersion = await maxConfigVersion(config, domainSlug); + const customAssetHelper = typeof assetHelper === 'function' && Object.keys(config).length > 0 ? assetHelper(config) : assetHelper; return new Promise((resolve) => { renderServiceWorker( @@ -20,12 +21,12 @@ async function generateServiceWorker( "js/service-worker", { config, - serviceWorkerHelper: assetHelper.serviceWorkerContents(), - assetPath: assetHelper.assetPath, + serviceWorkerHelper: customAssetHelper.serviceWorkerContents(), + assetPath: customAssetHelper.assetPath, hostname: req.hostname, - assetHash: assetHelper.assetHash, + assetHash: customAssetHelper.assetHash, configVersion, - getFilesForChunks: assetHelper.getFilesForChunks, + getFilesForChunks: customAssetHelper.getFilesForChunks, routes: generateRoutes(config, domainSlug).filter( (route) => !route.skipPWA ), diff --git a/server/handlers/isomorphic-handler.js b/server/handlers/isomorphic-handler.js index 30dd3217..88e597a2 100644 --- a/server/handlers/isomorphic-handler.js +++ b/server/handlers/isomorphic-handler.js @@ -126,7 +126,8 @@ exports.handleIsomorphicShell = async function handleIsomorphicShell( } ) { const url = urlLib.parse(req.url, true); - const freshRevision = `${assetHelper.assetHash("app.js")}-${await maxConfigVersion(config, domainSlug)}`; + const customAssetHelper = typeof assetHelper === 'function' && Object.keys(config).length > 0 ? assetHelper(config) : assetHelper; + const freshRevision = `${customAssetHelper.assetHash("app.js")}-${await maxConfigVersion(config, domainSlug)}`; if (req.query.revision && req.query.revision !== freshRevision) return res.status(503).send("Requested Shell Is Not Current"); @@ -144,7 +145,7 @@ exports.handleIsomorphicShell = async function handleIsomorphicShell( res.setHeader("Vary", "Accept-Encoding"); if (preloadJs) { - res.append("Link", `<${assetHelper.assetPath("app.js")}>; rel=preload; as=script;`); + res.append("Link", `<${customAssetHelper.assetPath("app.js")}>; rel=preload; as=script;`); } const seoInstance = getSeoInstance(seo, config, "shell"); const seoTags = seoInstance && seoInstance.getMetaTags(config, "shell", result, { url }); @@ -430,6 +431,7 @@ exports.handleIsomorphicRoute = function handleIsomorphicRoute( } ) { const url = urlLib.parse(req.url, true); + const customAssetHelper = typeof assetHelper === 'function' && Object.keys(config).length > 0 ? assetHelper(config) : assetHelper; function writeResponse(result) { const statusCode = result.httpStatusCode || 200; @@ -473,7 +475,7 @@ exports.handleIsomorphicRoute = function handleIsomorphicRoute( }); if (preloadJs) { - res.append("Link", `<${assetHelper.assetPath("app.js")}>; rel=preload; as=script;`); + res.append("Link", `<${customAssetHelper.assetPath("app.js")}>; rel=preload; as=script;`); } const oneSignalScript = oneSignalServiceWorkers ? getOneSignalScript({ config, publisherConfig }) : null; return pickComponent.preloadComponent(store.getState().qt.pageType, store.getState().qt.subPageType).then(() =>