import { Injectable } from '@angular/core';
import { ApiService } from '../providers/api-service';
import { AngularFireMessaging } from '@angular/fire/messaging';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class MessagingService {
currentMessage = new BehaviorSubject(null);
constructor(
private angularFireMessaging: AngularFireMessaging,
private api: ApiService
) {
this.angularFireMessaging.messages.subscribe((_messaging: AngularFireMessaging) => {
_messaging.onMessage = _messaging.onMessage.bind(_messaging);
_messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging);
})
}
requestPermission() {
this.angularFireMessaging.requestToken.subscribe((token) => {
console.log("Device token: " + token);
this.api.addDeviceToken({'token': token, 'email': localStorage.getItem('email')}).subscribe(
result => {
console.log("Device registered successfully!");
localStorage.setItem('devicetoken', token);
},
error => {
console.error("Device could not be registered!", error._body);
);
}, (err) => {
console.error('Unable to get permission to notify.', err);
});
receiveMessage() {
this.angularFireMessaging.messages.subscribe((payload) => {
console.log("new message received. ", payload);
this.currentMessage.next(payload);