Notification code Refactory

This commit is contained in:
Eudes Inácio
2021-04-12 08:34:17 +01:00
parent 77accfd603
commit a187d3055b
3 changed files with 224 additions and 54 deletions
+15 -23
View File
@@ -3,6 +3,7 @@ import { Component, OnInit, NgZone } from '@angular/core';
import { EventsService } from '../services/events.service';
import { Event } from '../models/event.model';
import { ProcessesService } from '../services/processes.service';
import { NotificationsService } from '../services/notifications.service';
import { ModalController, AlertController, AnimationController } from '@ionic/angular';
//import { AlertController } from 'ionic-angular';
/* import { Plugins, PushNotification, PushNotificationToken, PushNotificationActionPerformed, Modals } from '@capacitor/core'; */
@@ -52,7 +53,15 @@ export class HomePage implements OnInit {
postEvent: any;
folderId: string;
constructor(private zone: NgZone, private eventService: EventsService, private processesbackend: ProcessesService, private router: Router, private modalController: ModalController, public modalCtrl: AlertController, private fcm: FCM, private animationController: AnimationController,) {
constructor(private zone: NgZone,
private eventService: EventsService,
private processesbackend: ProcessesService,
private router: Router,
private modalController: ModalController,
public modalCtrl: AlertController,
private fcm: FCM,
private animationController: AnimationController,
private notificatinsservice: NotificationsService,) {
router.events.subscribe((val) => {
document.querySelectorAll('ion-modal').forEach((e) => e.remove())
@@ -66,7 +75,7 @@ export class HomePage implements OnInit {
ngOnInit() {
this.pushCordova()
this.pushCordova();
/* //Initialize profile as mdgpr
let date = new Date();
@@ -94,7 +103,6 @@ export class HomePage implements OnInit {
*/
}
pushCordova() {
this.fcm.onNotification().subscribe(data => {
@@ -128,29 +136,13 @@ export class HomePage implements OnInit {
console.log(data.Service)
console.log(data.Object)
console.log(data.IdObject)
this.openApproveModal(data.IdObject);
//this.openApproveModal(data.IdObject);
};
});
this.fcm.onTokenRefresh().subscribe(token => {
// Register your new token in your back-end if you want
// backend.registerToken(token);
});
}
/* ubscribeToTopic() {
this.fcm.subscribeToTopic('enappd');
}
getToken() {
this.fcm.getToken().then(token => {
console.log('token: ', token)
// Register your new token in your back-end if you want
// backend.registerToken(token);
});
} */
async viewEventDetail(eventId: any) {
console.log(this.profile);
@@ -200,8 +192,8 @@ export class HomePage implements OnInit {
} else {
classs = 'modal modal-desktop showAsideOptions'
}
/* console.log(this.profile);
console.log(serialNumber); */
console.log(this.profile);
console.log(serialNumber);
console.log('expediante 2')
const modal = await this.modalController.create({
component: ExpedienteDetailPage,
@@ -231,7 +223,7 @@ export class HomePage implements OnInit {
});
await modal.present();
modal.onDidDismiss().then(() => {
//this.getPublications();
});
}
+1 -22
View File
@@ -81,28 +81,7 @@ export class LoginPage implements OnInit {
}
getToken() {
this.fcm.getToken().then(token => {
console.log('token: ', token)
this.storageService.store(this.username, token);
this.storageService.get(this.username).then(value => {
console.log('STORAGE TOKEN', value)
this.storageService.get(AuthConnstants.USER).then(res => {
console.log('USERID', res);
const headers = { 'Authorization': 'Basic cGF1bG8ucGludG9AZ2FiaW5ldGVkaWdpdGFsLmxvY2FsOnRhYnRlc3RlQDAwNg==' };
const body = {
UserId: res.UserId,
TokenId: token,
Status: 1,
Service: 1
};
this.http.post<Token>('https://equilibrium.dyndns.info/GabineteDigital.Services/V4/api/notifications/token', body, { headers }).subscribe(data => {
console.log('TOKEN USER MIDLE', data);
})
});
});
});
this.notificatinsservice.getAndpostToken(this.username)
}
+207 -8
View File
@@ -1,14 +1,42 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } 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 { Token } from '../models/token.model';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
/* import { AgendaPage } from '../pages/agenda/agenda.page'
import { ExpedientePage } from '../pages/gabinete-digital/expediente/expediente.page'
import { EventListPage } from '../pages/gabinete-digital/event-list/event-list.page';
import { PublicationsPage } from '../pages/publications/publications.page'
import { ViewPublicationsPage } from '../pages/publications/view-publications/view-publications.page' */
import { ModalController, AlertController, AnimationController } from '@ionic/angular';
import { ViewEventPage } from '../pages/agenda/view-event/view-event.page';
import { ExpedienteDetailPage } from '../pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
import { PublicationDetailPage } from '../pages/publications/publication-detail/publication-detail.page';
import { ViewPublicationsPage } from '../pages/publications/view-publications/view-publications.page';
import { ApproveEventModalPage } from '../pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page';
@Injectable({
providedIn: 'root'
})
export class NotificationsService {
constructor(private http: HttpClient,) { }
adding: "intervenient" | "CC" = "intervenient";
folderId: string;
constructor(
private http: HttpClient,
private fcm: FCM,
private storageService: StorageService,
private modalController: ModalController,
public modalCtrl: AlertController,
private animationController: AnimationController,/* ,
public agenda: AgendaPage,
public expediante: ExpedientePage,
public eventList: EventListPage,
public publication: PublicationsPage,
public viewPublication: ViewPublicationsPage */) { }
getTokenByUserIdAndId(user, userID) {
const geturl = environment.apiURL + 'notifications/user/' + userID;
@@ -16,15 +44,186 @@ export class NotificationsService {
return this.http.get<Token[]>(`${geturl}`);
}
postToken(userId, token) {
getAndpostToken(username) {
const geturl = environment.apiURL + 'notifications/token';
let data = {
UserId: userId,
TokenId: token,
Status: 1,
Service: 2
return this.fcm.getToken().then(token => {
console.log('token: ', token)
this.storageService.store(username, token);
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': 'Basic cGF1bG8ucGludG9AZ2FiaW5ldGVkaWdpdGFsLmxvY2FsOnRhYnRlc3RlQDAwNg==' };
const body = {
UserId: res.UserId,
TokenId: token,
Status: 1,
Service: 1
};
this.http.post<Token>(`${geturl}`, body, { headers }).subscribe(data => {
console.log('TOKEN USER MIDLE', data);
})
});
});
});
}
async onReceviNotification(viewEventDetail,viewExpedientDetail,openApproveModal,viewPublications,viewPublicationDetail) {
this.fcm.onNotification().subscribe(data => {
if (data.click_action) {
console.log("Received in background: ", data);
if (data.Service === "agenda") {
viewEventDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
console.log('expediante 1')
viewExpedientDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
openApproveModal(data.IdObject);
}
else if (data.Service === "accoes" && data.Object === "accao") {
viewPublications(data.IdObject)
}
else if (data.Service === "accoes" && data.Object === "publicacao") {
viewPublicationDetail(data.IdObject)
}
} /* else {
console.log("Received in foreground: ", data);
console.log(data.Service)
console.log(data.Object)
console.log(data.IdObject)
this.openApproveModal(data.IdObject);
}; */
});
}
async viewEventDetail(eventId: any) {
const modal = await this.modalController.create({
component: ViewEventPage,
componentProps: {
eventId: eventId,
adding: this.adding
},
cssClass: 'modal modal-desktop',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then((res) => {
if (res) {
//this.viewEventDetailDismiss(res);
}
});
}
async openApproveModal(eventSerialNumber){
let classs;
if( window.innerWidth <= 1024){
classs = 'cal-modal modal modal-desktop'
} else {
classs = 'gabinete-digital-mobile-modal-to-Desktop'
}
return this.http.post<Token[]>(`${geturl}`,data);
const modal = await this.modalController.create({
component: ApproveEventModalPage,
componentProps:{
serialNumber: eventSerialNumber,
},
cssClass: 'event-list',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
async viewExpedientDetail(serialNumber: any) {
let classs;
if (window.innerWidth <= 800) {
classs = 'modal'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
console.log(serialNumber);
console.log('expediante 2')
const modal = await this.modalController.create({
component: ExpedienteDetailPage,
componentProps: {
serialNumber: serialNumber,
profile: "MDGPR",
},
cssClass: classs,
});
await modal.present();
modal.onDidDismiss().then((res) => {
if (res) {
console.log(res);
}
});
}
async viewPublicationDetail(publicationId: string) {
const modal = await this.modalController.create({
component: PublicationDetailPage,
componentProps: {
publicationId: publicationId,
folderId: this.folderId,
},
cssClass: 'publication-detail',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(() => {
});
}
async viewPublications(folderId) {
const enterAnimation = (baseEl: any) => {
const backdropAnimation = this.animationController.create()
.addElement(baseEl.querySelector('ion-backdrop')!)
.fromTo('opacity', '0.01', 'var(--backdrop-opacity)');
const wrapperAnimation = this.animationController.create()
.addElement(baseEl.querySelector('.modal-wrapper')!)
.keyframes([
{ offset: 0, opacity: '0', transform: 'scale(0)' },
{ offset: 1, opacity: '0.99', transform: 'scale(1)' }
]);
return this.animationController.create()
.addElement(baseEl)
.easing('ease-out')
.duration(500)
.addAnimation([backdropAnimation, wrapperAnimation]);
}
const leaveAnimation = (baseEl: any) => {
return enterAnimation(baseEl).direction('reverse');
}
const modal = await this.modalController.create({
component: ViewPublicationsPage,
enterAnimation,
leaveAnimation,
componentProps: {
folderId: folderId,
},
cssClass: 'new-action',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
}