11import { registerLocaleData } from '@angular/common' ;
22import { inject , Injector } from '@angular/core' ;
33import { tap , catchError } from 'rxjs/operators' ;
4- import { lastValueFrom , throwError } from 'rxjs' ;
4+ import { firstValueFrom , lastValueFrom , of , throwError , timeout } from 'rxjs' ;
55import { ABP } from '../models/common' ;
66import { Environment } from '../models/environment' ;
77import { CurrentTenantDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models' ;
@@ -10,17 +10,19 @@ import { EnvironmentService } from '../services/environment.service';
1010import { SessionStateService } from '../services/session-state.service' ;
1111import { CORE_OPTIONS } from '../tokens/options.token' ;
1212import { APP_INIT_ERROR_HANDLERS } from '../tokens/app-config.token' ;
13+ import { CHECK_AUTHENTICATION_STATE_FN_KEY } from '../tokens/check-authentication-state' ;
14+ import { APP_STARTED_WITH_SSR } from '../tokens/ssr-state.token' ;
1315import { getRemoteEnv } from './environment-utils' ;
1416import { parseTenantFromUrl } from './multi-tenancy-utils' ;
1517import { AuthService } from '../abstracts' ;
16- import { CHECK_AUTHENTICATION_STATE_FN_KEY } from '../tokens/check-authentication-state' ;
1718import { noop } from './common-utils' ;
1819
1920export async function getInitialData ( ) {
2021 const injector = inject ( Injector ) ;
2122 const environmentService = injector . get ( EnvironmentService ) ;
2223 const configState = injector . get ( ConfigStateService ) ;
2324 const options = injector . get ( CORE_OPTIONS ) as ABP . Root ;
25+ const appStartedWithSSR = injector . get ( APP_STARTED_WITH_SSR ) ;
2426
2527 environmentService . setState ( options . environment as Environment ) ;
2628 await getRemoteEnv ( injector , options . environment ) ;
@@ -49,8 +51,18 @@ export async function getInitialData() {
4951 return throwError ( ( ) => error ) ;
5052 } ) ,
5153 ) ;
52- // TODO: Not working with SSR
53- // await lastValueFrom(result$);
54+
55+ if ( appStartedWithSSR ) {
56+ await firstValueFrom (
57+ result$ . pipe (
58+ timeout ( 0 ) ,
59+ catchError ( ( ) => of ( null ) ) ,
60+ ) ,
61+ ) ;
62+ } else {
63+ await lastValueFrom ( result$ ) ;
64+ }
65+
5466 await localeInitializer ( injector ) ;
5567}
5668
0 commit comments