import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core'; import { AfterContentInit, OnDestroy, OnChanges, SimpleChanges } from '@angular/core/src/metadata/lifecycle_hooks'; import { Store, select } from '@ngrx/store'; import { Observable } from 'rxjs/Observable'; import { Domain } from '@overflow/commons-typescript/model/domain'; import * as NotificationEntityStore from '../../store/entity/notification'; import { NotificationEntitySelector } from '../../store/'; import { AuthSelector } from '../../../member/store'; import { Member } from '@overflow/commons-typescript/model/member'; import { PageParams } from '@overflow/commons-typescript/model/commons/PageParams'; import { Page } from '@overflow/commons-typescript/model/commons/Page'; import { Notification } from '@overflow/commons-typescript/model/notification'; import { ActivatedRoute } from '@angular/router'; @Component({ selector: 'of-notification-badge-container', templateUrl: './badge-container.component.html', }) export class NotificationBadgeContainerComponent implements OnInit, OnChanges { notificationPage$: Observable>; @Output() viewAll = new EventEmitter(); @Output() select = new EventEmitter(); constructor( private store: Store, private route: ActivatedRoute ) { // this.notificationPage$ = store.pipe(select(NotificationEntitySelector.selectAll)); } ngOnInit() { this.getNotifications(); } ngOnChanges(changes: SimpleChanges): void { this.getNotifications(); } getNotifications() { this.store.select(AuthSelector.select('member')).subscribe( (member: Member) => { const pageParams: PageParams = { pageNo: 0, countPerPage: 10, sortCol: 'id', sortDirection: 'descending', }; this.store.dispatch(new NotificationEntityStore.ReadAllByMember({ member, pageParams })); }, (error) => { console.log(error); } ); } markAllasRead() { this.store.select(AuthSelector.select('member')).subscribe( (member: Member) => { const pageParams: PageParams = { pageNo: 0, countPerPage: 10, sortCol: 'id', sortDirection: 'descending' }; this.store.dispatch(new NotificationEntityStore.MarkAllAsRead({ member, pageParams })); }, (error) => { console.log(error); } ); } onSelect(notification: Notification) { this.select.emit(notification); } onViewAll() { this.viewAll.emit(); } }