Compare commits

..

No commits in common. "78e3cf74b93ef7b47e1a3ef7f34d22305752e1ad" and "9697e939157e17bbc9902d32d6ef91de8ef19872" have entirely different histories.

2 changed files with 11 additions and 9 deletions

View File

@ -3,8 +3,8 @@ import { Router } from '@angular/router';
import { OAuthService,UserInfo } from 'angular-oauth2-oidc'; import { OAuthService,UserInfo } from 'angular-oauth2-oidc';
import { Store, Action } from '@ngrx/store'; import { Store, Action } from '@ngrx/store';
import { Effect, Actions,ofType } from '@ngrx/effects'; import { Effect, Actions,ofType } from '@ngrx/effects';
import { Observable , defer , of,from,zip } from 'rxjs'; import { Observable , defer , of,from } from 'rxjs';
import { withLatestFrom,mergeMap,switchMap,map,catchError,first} from 'rxjs/operators'; import { withLatestFrom,mergeMap,switchMap,map,catchError} from 'rxjs/operators';
import * as appCommonActions from '../actions/app-common.actions'; import * as appCommonActions from '../actions/app-common.actions';
import * as appCommonReducers from '../reducers/app-common.reducer'; import * as appCommonReducers from '../reducers/app-common.reducer';
import { ItemService } from '../services/item.service'; import { ItemService } from '../services/item.service';
@ -50,11 +50,16 @@ export class AppCommonEffects {
@Effect() @Effect()
initUser$: Observable<Action> = this.actions$.pipe( initUser$: Observable<Action> = this.actions$.pipe(
ofType(appCommonActions.INITUSER), ofType(appCommonActions.INITUSER),
first(), withLatestFrom(this.store$.select(appCommonReducers.selectGetInitialized)),
switchMap((action) => { switchMap(([action, initialized]) => {
return zip(this.userService$.getCurrentUser(),from(this.oauthService$.loadUserProfile())).pipe( if(!initialized) {
return this.userService$.getCurrentUser().pipe(
withLatestFrom(from(this.oauthService$.loadUserProfile())),
switchMap(([user,userInfo]) => {return of(new appCommonActions.InitUserSuccess(user,userInfo as UserInfo))} ), switchMap(([user,userInfo]) => {return of(new appCommonActions.InitUserSuccess(user,userInfo as UserInfo))} ),
catchError(error => of(new appCommonActions.Fail(error)))) catchError(error => of(new appCommonActions.Fail(error))))
} else {
return [];
}
} }
)); ));

View File

@ -38,9 +38,6 @@ export const initialState: State = {
export function reducer(state = initialState, action: appCommonActions.Actions ): State { export function reducer(state = initialState, action: appCommonActions.Actions ): State {
switch (action.type) { switch (action.type) {
case appCommonActions.INITUSER: {
return tassign(state,{initialized: true});
}
case appCommonActions.INITUSERSUCCESS: { case appCommonActions.INITUSERSUCCESS: {
let a = action as appCommonActions.InitUserSuccess; let a = action as appCommonActions.InitUserSuccess;
let claims = {} let claims = {}
@ -53,7 +50,7 @@ export function reducer(state = initialState, action: appCommonActions.Actions )
name:a.userinfo["name"], name:a.userinfo["name"],
claims:claims claims:claims
}; };
return tassign(state, { user: user }); return tassign(state, { user: user,initialized: true });
} }
case appCommonActions.INITROOTSUCCESS: { case appCommonActions.INITROOTSUCCESS: {
let a = action as appCommonActions.InitRootSuccess; let a = action as appCommonActions.InitRootSuccess;