Я пытаюсь написать оператор if / else в чистом rxjs со входом статуса пользователя. В случае, если пользователь не вошел в систему, я сохраняю только URL для перенаправления после входа.
Проблема, с которой я сталкиваюсь, заключается в том, что URL-адрес не сохраняется, когда пользователь не подключен.
ngOnInit() {
this.initContactUsForm();
const signedIn$ = this.authQuery.select(state => state.signedIn).pipe(share());
const isSignedIn$ = signedIn$.pipe(
filter((signedIn: boolean) => signedIn),
switchMap((signedIn: boolean) => {
this.isSignedIn = signedIn;
this.userId = this.authQuery.getSnapshot().sub;
return this.authService.currentAuthenticatedUser());
})
);
const isNotSignedIn$ = signedIn$.pipe(
filter((signedIn: boolean) => !signedIn),
switchMap((signedIn: boolean) => {
this.isSignedIn = signedIn;
this.authService.storeAttemptedUrl(this.router.url);
return empty();
})
)
merge(isSignedIn$, isNotSignedIn$).subscribe(
(user: any) => this.setContactUsFormSenderUserValues(user),
(error: any) => console.log(error)
)
}
Я что-то упустил, чтобы получить мой URL-адрес?Что я делаю не так?
Редактировать: Сначала у меня было это, которое работает.Но я хочу это в чистом наблюдаемом стиле.
signedIn$.pipe(
switchMap((signedIn: boolean) => {
if (signedIn) {
this.isSignedIn = signedIn;
this.userId = this.authQuery.getSnapshot().sub;
return this.authService.currentAuthenticatedUser();
} else {
this.isSignedIn = signedIn;
const url = this.router.url;
this.authService.storeAttemptedUrl(url);
return empty();
}
}),
).subscribe(
(user: any) => this.setContactUsFormSenderUserValues(user),
(error: any) => console.log(error)
)
Спасибо за вашу помощь.