Skip to content

Commit a78a910

Browse files
ybndatarix83
authored andcommitted
Add configuration to toggle replace/transfer
1 parent 31ed569 commit a78a910

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
@@ -269,6 +269,13 @@ function serverSideRender(req, res, next, sendToUser: boolean = true) {
269269
})
270270
.then((html) => {
271271
if (hasValue(html)) {
272+
// Replace REST URL with UI URL
273+
if (environment.ui.replaceRestUrl && REST_BASE_URL !== environment.rest.baseUrl) {
274+
const t0 = Date.now();
275+
html = html.replace(new RegExp(REST_BASE_URL, 'g'), environment.rest.baseUrl);
276+
console.log(`Replaced all SSR URLs in HTML in ${Date.now() - t0}ms`); // todo: remove this
277+
}
278+
272279
// save server side rendered page to cache (if any are enabled)
273280
saveToCache(req, html);
274281
if (sendToUser) {

src/config/default-app-config.ts

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

5353
// Trust X-FORWARDED-* headers from proxies
5454
useProxies: true,
55+
56+
transferState: true,
57+
replaceRestUrl: false,
5558
};
5659

5760
// 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
@@ -113,7 +113,9 @@ export class BrowserInitService extends InitService {
113113

114114
protected init(): () => Promise<boolean> {
115115
return async () => {
116-
await this.loadAppState();
116+
if (this.appConfig.ui.transferState) {
117+
await this.loadAppState();
118+
}
117119
this.checkAuthenticationToken();
118120
this.externalAuthCheck();
119121
this.initCorrelationId();
@@ -145,7 +147,7 @@ export class BrowserInitService extends InitService {
145147
*/
146148
private async loadAppState(): Promise<boolean> {
147149
// The app state can be transferred only when SSR and CSR are using the same base url for the REST API
148-
if (!this.appConfig.rest.hasSsrBaseUrl) {
150+
if (this.appConfig.ui.transferState && (!this.appConfig.rest.hasSsrBaseUrl || this.appConfig.ui.replaceRestUrl)) {
149151
const state = this.transferState.get<any>(InitService.NGRX_STATE, null);
150152
this.transferState.remove(InitService.NGRX_STATE);
151153
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
@@ -68,7 +68,9 @@ export class ServerInitService extends InitService {
6868
return async () => {
6969
this.checkAuthenticationToken();
7070
this.saveAppConfigForCSR();
71-
this.saveAppState();
71+
if (this.appConfig.ui.transferState) {
72+
this.saveAppState();
73+
}
7274
this.initCorrelationId();
7375

7476
this.checkEnvironment();

0 commit comments

Comments
 (0)