defer () не запускает эффект при обновлении страницы - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь реализовать простую аутентификацию пользователя, и в настоящее время я работаю над предотвращением выхода пользователя из системы при обновлении страницы.Для этого я использую отсрочку.В первый раз, когда приложение открывается, отложите возврат AuthActions.Logout (), что правильно, поскольку нет аутентификации, проблема в обновлении, потому что, хотя токен установлен в хранилище chrome и все действия отправляются эффект не вызывается снова .

@Effect()
init$ = defer((): Observable<AuthActions.SigninUser | AuthActions.Logout> => {
    const token = this.authService.getToken();
    console.log('in def')
    return (token)
        ? of(new AuthActions.SigninUser())
        : of(new AuthActions.Logout())
});

тогда он идет сюда ->

@Effect()
            login$ = this.actions$
                .pipe(
                    ofType(AuthActions.SIGNIN_USER),
                    switchMap(() => {
                        console.log('signin user')
                        return [new UserDetailsActions.GetUserDetails];
                    }),
                )

, если установлен токен (то есть), он должен быть запущен, но он запускается только один раз, когда пользователь входит ->

 @Effect()
    getUserById = this.actions$
        .pipe(
            ofType(UserDetailsActions.GET_USER_DETAILS),
            mergeMap(() => {
                let token = this.authService.getTokenUsername();
                return this.http.get(`${AppProperties.API_URL}user/${token}`)
            }),
            concatMap((userDetails: UserDetails) => {
                sessionStorage.setItem('currentUserId', userDetails.id.toString());
                return [new UserDetailsActions.SetUserDetails(userDetails)]
            })
        );

Буду признателен за любую помощь

...