This question is continuation of this stack overflow question
this.firestoreService.addMessage(message) does not add the message to the database
addMessage() returns before executing tap((user) => console.log(user)),
submit() {
this.subscription = from(this.form.value.users)
.pipe(
finalize(() => {
console.log('finalize'),
this.dismiss()
}),
map(user => this.buildMessage(user)),
switchMap((message) => this.firestoreService.addMessage(message))
).subscribe();
}
addMessage(data:Message):Observable<any> {
console.log('addMessage');
data.timestamp = firebase.firestore.FieldValue.serverTimestamp();
return this.authService.currentUser$.pipe(
tap((user) => console.log(user)),
switchMap(user => {
console.log('addMessage user: ', user);
if (user.company) {
return from(this.firestore
.collection<any>(user.company)
.doc(user.licence)
.collection<any>(message)
.add(data))
} else {
return of([]);
}
}
)
);
}
output: 'addMessage'
no output: tap((user) => console.log(user)),
this.authService.currentUser$
get currentUser$() {
return this.angularFireAuth.user.pipe(
tap((user) => console.log(user)),
filter(user => !!user),
switchMap(user => this.userService.user$(user.uid))
);
}