import { PushService } from '@angular-challenges/ngrx-notification/backend'; import { isSchool, isStudent, isTeacher, Push, } from '@angular-challenges/ngrx-notification/model'; import { inject, Injectable } from '@angular/core'; import { Store } from '@ngrx/store'; import { filter } from 'rxjs'; import { studentActions } from '../student/store/student.actions'; import { teacherActions } from '../teacher/store/teacher.actions'; @Injectable({ providedIn: 'root' }) export class NotificationService { private pushService = inject(PushService); private store = inject(Store); init() { this.pushService.notification$ .pipe(filter(Boolean)) .subscribe((notification: Push) => { if (isTeacher(notification)) { this.store.dispatch( teacherActions.addOneTeacher({ teacher: notification }), ); } if (isStudent(notification)) { this.store.dispatch( studentActions.addOneStudent({ student: notification }), ); } if (isSchool(notification)) { // SchoolStore is a ComponentStore. We can't dispatch a school action here. // We are stuck. We must have done something wrong and need to refactor... } }); } }