Я создаю небольшое приложение 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();
}