Skip to content

Commit 86a0a02

Browse files
committed
feat: catch errors and listen for reauth
1 parent cea203d commit 86a0a02

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/app/shared/data-access/message.service.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
33
import { EMPTY, Observable, Subject, defer, exhaustMap, from } from 'rxjs';
44
import { collection, query, orderBy, limit, addDoc } from 'firebase/firestore';
55
import { collectionData } from 'rxfire/firestore';
6-
import { catchError, filter, map } from 'rxjs/operators';
6+
import { catchError, filter, map, retry } from 'rxjs/operators';
77

88
import { FIRESTORE } from 'src/app/app.config';
99
import { Message } from '../interfaces/message';
@@ -19,11 +19,16 @@ interface MessageState {
1919
export class MessageService {
2020
private firestore = inject(FIRESTORE);
2121
private authService = inject(AuthService);
22+
private authUser$ = toObservable(this.authService.user);
2223

2324
// sources
24-
messages$ = this.getMessages();
25+
messages$ = this.getMessages().pipe(
26+
retry({
27+
delay: () => this.authUser$.pipe(filter((user) => !!user)),
28+
})
29+
);
2530
add$ = new Subject<Message['content']>();
26-
logout$ = toObservable(this.authService.user).pipe(filter((user) => !user));
31+
logout$ = this.authUser$.pipe(filter((user) => !user));
2732

2833
// state
2934
private state = signal<MessageState>({

0 commit comments

Comments
 (0)