1- import { Inject , Injectable , NgZone } from '@angular/core' ;
1+ import { Injectable , NgZone , Inject } from '@angular/core' ;
22import angularCoreVersion from '@angular/core/package.json' ;
3- import { Route , Router } from '@angular/router' ;
3+ import { Route , Router , ActivatedRouteSnapshot , CanActivate , RouterStateSnapshot } from '@angular/router' ;
44import { FronteggApp , initialize } from '@frontegg/js' ;
55import { AuthPageRoutes , FronteggState , isAuthRoute } from '@frontegg/redux-store' ;
66import { ContextHolder , FronteggFrameworks , RedirectOptions } from '@frontegg/rest-api' ;
77import { FronteggAppOptions , FronteggCheckoutDialogOptions } from '@frontegg/types' ;
88import sdkVersion from '../../sdkVersion' ;
99import { FronteggComponent } from '../frontegg.component' ;
10- import { FronteggLoadGuard } from '../guards/frontegg-load.guard' ;
1110import { FronteggAppSignals } from './frontegg-app.signals' ;
11+ import { Observable } from 'rxjs' ;
1212
1313export class FronteggAppOptionsClass implements FronteggAppOptions {
1414 contextOptions : FronteggAppOptions [ 'contextOptions' ] = {
@@ -136,3 +136,19 @@ export class FronteggAppService extends FronteggAppSignals {
136136 this . fronteggApp ?. hideCheckoutDialog ( ) ;
137137 }
138138}
139+
140+ @Injectable ( )
141+ export class FronteggLoadGuard implements CanActivate {
142+ constructor ( protected fronteggAppService : FronteggAppService ) {
143+ }
144+
145+ canActivate ( route : ActivatedRouteSnapshot , state : RouterStateSnapshot ) : Observable < boolean > | Promise < boolean > | boolean {
146+ return new Observable < boolean > ( obs => {
147+ this . fronteggAppService . isLoading$ . subscribe ( loading => {
148+ if ( ! loading ) {
149+ obs . next ( true ) ;
150+ }
151+ } ) ;
152+ } ) ;
153+ }
154+ }
0 commit comments