/* eslint-disable */ /* tslint:disable */ import { Injectable, NgZone } from '@angular/core'; import { ActivatedRoute } from '@angular/router' import { HttpClient } from '@angular/common/http'; import { environment } from 'src/environments/environment'; import { StorageService } from 'src/app/services/storage.service'; import { AuthConnstants } from 'src/app/config/auth-constants'; import { Tokenn } from '../models/token.model'; import { ModalController, AlertController, AnimationController, Platform } from '@ionic/angular'; import { NavigationExtras, Router } from '@angular/router'; import { ToastService } from '../services/toast.service'; import { BackgroundService } from './background.service'; import { v4 as uuidv4 } from 'uuid'; import { EventTrigger } from '../services/eventTrigger.service'; import { SessionStore } from '../store/session.service'; import { ActionPerformed, PushNotificationSchema, PushNotifications, Token, } from '@capacitor/push-notifications'; @Injectable({ providedIn: 'root' }) export class NotificationsService { adding: "intervenient" | "CC" = "intervenient"; folderId: string; DataArray = new Array(); callbacks: { type: string, funx: Function id: string }[] = [] constructor( private http: HttpClient, private storageService: StorageService, private modalController: ModalController, public modalCtrl: AlertController, private animationController: AnimationController, private platform: Platform, private router: Router, private toastService: ToastService, private zone: NgZone, private activeroute: ActivatedRoute, private eventtrigger: EventTrigger, private backgroundservice: BackgroundService, /* private fcm: FCM */) { this.storageService.get("Notifications").then((value) => { }).catch(()=>{ }).catch(() => { this.storageService.store("Notifications", []) }) } registerCallback(type: string, funx: Function, object: any = {}) { const id = uuidv4() this.callbacks.push({ type, funx, id }) if (!object.hasOwnProperty('desktop') && object['desktop'] != false) { this.backgroundservice.registerBackService('Notification', funx, type) } return id; } deleteCallback(id) { this.callbacks.forEach((e, index) => { if (e.id == id) { if (index > -1) { this.callbacks.splice(index, 1); } } }) } getTokenByUserIdAndId(user, userID) { // const geturl = environment.apiURL + 'notifications/user/' + userID; // return this.http.get(`${geturl}`); } requestPermissions() { // PushNotifications.requestPermissions().then(result => { // if (result.receive === 'granted') { // // Register with Apple / Google to receive push via APNS/FCM // PushNotifications.register(); // } else { // // Show some error // } // }); } getAndpostToken(username) { // if (this.platform.is('desktop') || this.platform.is('mobileweb')) { // console.log('Notifications not supported') // } else { // const geturl = environment.apiURL + 'notifications/token'; // PushNotifications.addListener('registration', // (token: Token) => { // console.log('token: ', token.value) // this.storageService.store(username, token.value); // this.storageService.get(username).then(value => { // console.log('STORAGE TOKEN', value) // this.storageService.get(AuthConnstants.USER).then(res => { // console.log('USERID', res); // const headers = { 'Authorization': SessionStore.user.BasicAuthKey }; // const body = { // UserId: res.UserId, // TokenId: token.value, // Status: 1, // Service: 1 // }; // this.http.post(`${geturl}`, body, { headers }).subscribe(data => { // console.log('TOKEN USER MIDLE', data); // }, (error) => { // console.log('Post token to backend', error) // }) // }); // }); // } // ); // } } registrationError() { // PushNotifications.addListener('registrationError', // (error: any) => { // console.log('Error on registration: ' + JSON.stringify(error)); // } // ); } onReciveForeground() { // PushNotifications.addListener('pushNotificationReceived', // (notification: PushNotificationSchema) => { // console.log('Push received: ' + JSON.stringify(notification)); // this.DataArray.push(notification) // console.log("On ReceiveNotification", this.DataArray) // this.storageService.store("Notifications", this.DataArray) // this.eventtrigger.publishSomeData({ // notification: "recive" // }) // } // ); } onReciveBackground() { // PushNotifications.addListener('pushNotificationActionPerformed', // (notification: ActionPerformed) => { // console.log('Push action performed: ' + JSON.stringify(notification)); // /* this.DataArray.push(notification.notification) // console.log("On ReceiveNotification", this.DataArray) // this.storageService.store("Notifications", this.DataArray) // this.eventtrigger.publishSomeData({ // notification: "recive" // }) */ // this.notificatinsRoutes(notification) // } // ); } tempClearArray() { this.DataArray = new Array; } notificatinsRoutes = (notification) => { // console.log('Push action performed 2222: ' + JSON.stringify(notification.data)); // if (notification.notification.data.Service === "agenda" && notification.notification.data.IdObject.length > 10) { // console.log("Id Lenght", notification.notification.data.IdObject.length) // this.zone.run(() => this.router.navigate(['/home/agenda', notification.notification.data.IdObject, 'agenda'])); // } // else if (notification.notification.data.Service === "gabinete-digital" && notification.notification.data.Object === "expediente") { // this.zone.run(() => this.router.navigate(['/home/gabinete-digital/expediente', notification.notification.data.IdObject, 'gabinete-digital'])); // } // else if (notification.notification.data.Service === "agenda" && notification.notification.data.Object === "event-list") { // //this.zone.run(() => this.router.navigate(['/home/gabinete-digital/event-list/approve-event',IdObject, 'agenda'])); // this.zone.run(() => this.router.navigate(['/home/agenda/event-list/approve-event', notification.notification.data.IdObject, 'agenda'])); // } else if (notification.notification.data.Service === "gabinete-digital" && notification.notification.data.Object === "despachos") { // this.zone.run(() => this.router.navigate(['/home/gabinete-digital/despachos', notification.notification.data.IdObject, 'gabinete-digital'], { replaceUrl: true })); // } // else if (notification.notification.data.Service === "gabinete-digital" && notification.notification.data.Object === "parecer") { // this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos', notification.notification.data.IdObject, 'gabinete-digital'])); // } // else if (notification.notification.data.Service === "gabinete-digital" && notification.notification.data.Object === "deferimento") { // this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos', notification.notification.data.IdObject, 'gabinete-digital'])); // } // else if (notification.notification.data.Service === "gabinete-digital" && notification.notification.data.Object === "despachos-pr") { // this.zone.run(() => this.router.navigate(['/home/gabinete-digital/despachos-pr', notification.notification.data.IdObject, 'gabinete-digital'])); // } // else if (notification.notification.data.Service === "accoes" && notification.notification.data.Object === "accao") { // this.zone.run(() => this.router.navigate(['/home/publications', notification.notification.data.IdObject])); // } // else if (notification.notification.data.Service === "accoes" && notification.notification.data.Object === "publicacao") { // this.zone.run(() => this.router.navigate(['/home/publications/view-publications', notification.notification.data.FolderId, notification.data.IdObject])); // } // else if (notification.notification.data.Service === "gabinete-digital" && notification.notification.data.Object === "diplomas") { // this.zone.run(() => this.router.navigate(['/home/gabinete-digital/diplomas', notification.notification.data.IdObject, 'gabinete-digital'])); // } // else if (notification.notification.data.Service === "gabinete-digital" && notification.notification.data.Object === "diplomas-assinar") { // this.zone.run(() => this.router.navigate(['/home/gabinete-digital/diplomas-assinar', notification.notification.data.IdObject, 'gabinete-digital'])); // } // else if (notification.notification.data.Service === "gabinete-digital" && notification.notification.data.Object === "expedientes-pr") { // this.zone.run(() => this.router.navigate(['/home/gabinete-digital/expedientes-pr', notification.notification.data.IdObject, 'gabinete-digital'])); // } } }