Эффект NGRX с использованием метода firestore stateChanges завершается из-за ошибки аутентификации после выхода из системы - PullRequest
0 голосов
/ 28 января 2019

Я создаю небольшое приложение Angular Chat с AngularFire2.Как только пользователь выходит из системы, все мои эффекты NGRX, использующие методы .stateChanges() & .valueChanges() AngularFire, завершаются из-за ошибки аутентификации.Как сохранить эффект «живым» после выхода из системы?

Я уже пробовал что-то вроде использования оператора RXJS takeUntil с какой-то аутентификацией Auth, наблюдаемой, если пользователь вошел в систему. То же самое для takeWhile.Я уже пытался catchError как последний оператор и внутри дополнительного pipe() после firestoreService.getUserFriends метода.

Эффект NGRX:

@Effect()
query$ = this.actions$.pipe(
    ofType<Query>(SocialActionTypes.Query),
    withLatestFrom(this.store$),
    map(([action, storeState]) => {
      return storeState.auth.user.uid;
    }),
    exhaustMap(uid => this.firestoreService.getUserFriends(uid)),
    mergeMap(actions => actions),
    map(action => {
      return {
        type: `[Social] Friend ${action.type}`,
        payload: {
          ...action.payload.doc.data(),
          id: action.payload.doc.id
        }
      };
    })
);

метод firestoreService.getUserFriends:

getUserFriends(uid: string) {
  return this.afStore
    .collection<Friend>(`social/${uid}/friends`)
    .stateChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...