Skip to content

Commit f9d8e4e

Browse files
ybndatarix83
authored andcommitted
Add configuration to toggle replace/transfer
1 parent a3ffda3 commit f9d8e4e

5 files changed

Lines changed: 20 additions & 3 deletions

File tree

server.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,13 @@ function serverSideRender(req, res, sendToUser: boolean = true) {
272272
requestUrl: req.originalUrl,
273273
}, (err, data) => {
274274
if (hasNoValue(err) && hasValue(data)) {
275+
// Replace REST URL with UI URL
276+
if (environment.ui.replaceRestUrl && REST_BASE_URL !== environment.rest.baseUrl) {
277+
const t0 = Date.now();
278+
data = data.replace(new RegExp(REST_BASE_URL, 'g'), environment.rest.baseUrl);
279+
console.log(`Replaced all SSR URLs in HTML in ${Date.now() - t0}ms`); // todo: remove this
280+
}
281+
275282
// save server side rendered page to cache (if any are enabled)
276283
saveToCache(req, data);
277284
if (sendToUser) {

src/config/default-app-config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ export class DefaultAppConfig implements AppConfig {
4848

4949
// Trust X-FORWARDED-* headers from proxies
5050
useProxies: true,
51+
52+
transferState: true,
53+
replaceRestUrl: false,
5154
};
5255

5356
// The REST API server settings

src/config/ui-server-config.interface.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,7 @@ export class UIServerConfig extends ServerConfig {
1313

1414
// Trust X-FORWARDED-* headers from proxies
1515
useProxies: boolean;
16+
17+
transferState: boolean;
18+
replaceRestUrl: boolean;
1619
}

src/modules/app/browser-init.service.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ export class BrowserInitService extends InitService {
9090

9191
protected init(): () => Promise<boolean> {
9292
return async () => {
93-
await this.loadAppState();
93+
if (this.appConfig.ui.transferState) {
94+
await this.loadAppState();
95+
}
9496
this.checkAuthenticationToken();
9597
this.externalAuthCheck();
9698
this.initCorrelationId();
@@ -122,7 +124,7 @@ export class BrowserInitService extends InitService {
122124
*/
123125
private async loadAppState(): Promise<boolean> {
124126
// The app state can be transferred only when SSR and CSR are using the same base url for the REST API
125-
if (!this.appConfig.rest.hasSsrBaseUrl) {
127+
if (this.appConfig.ui.transferState && (!this.appConfig.rest.hasSsrBaseUrl || this.appConfig.ui.replaceRestUrl)) {
126128
const state = this.transferState.get<any>(InitService.NGRX_STATE, null);
127129
this.transferState.remove(InitService.NGRX_STATE);
128130
this.store.dispatch(new StoreAction(StoreActionTypes.REHYDRATE, state));

src/modules/app/server-init.service.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ export class ServerInitService extends InitService {
5959
return async () => {
6060
this.checkAuthenticationToken();
6161
this.saveAppConfigForCSR();
62-
this.saveAppState();
62+
if (this.appConfig.ui.transferState) {
63+
this.saveAppState();
64+
}
6365
this.initCorrelationId();
6466

6567
this.checkEnvironment();

0 commit comments

Comments
 (0)