🔄 Delete AuthService from the PushService (loop injection). Using CookiesService for token management and add unsubscribe method.
continuous-integration/drone/push Build is passing Details

master
Alix JEUDI--LEMOINE 3 days ago
parent 33cb033320
commit 930add4452

@ -1,8 +1,8 @@
import { HttpClient } from '@angular/common/http'; import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { SwPush } from '@angular/service-worker'; import { SwPush } from '@angular/service-worker';
import { environment } from '../../../environment'; import { environment } from '../../../environment';
import { AuthService } from '../auth/auth.service'; import { CookiesService } from '../cookies/cookies.service';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
@ -12,14 +12,12 @@ export class PushService {
private apiURL = environment.apiURL; private apiURL = environment.apiURL;
constructor(private swPush: SwPush, private http: HttpClient, private authService: AuthService) { } constructor(private swPush: SwPush, private http: HttpClient, private cookiesService: CookiesService) { }
enableNotifications() { enableNotifications() {
Notification.requestPermission().then(permission => { Notification.requestPermission().then(permission => {
if (permission === 'granted') { if (permission === 'granted') {
this.subscribeToNotifications(); this.subscribeToNotifications();
} else {
alert("Notifications refusées ou ignorées.");
} }
}); });
} }
@ -28,20 +26,23 @@ export class PushService {
this.swPush.requestSubscription({ this.swPush.requestSubscription({
serverPublicKey: this.VAPID_PUBLIC_KEY serverPublicKey: this.VAPID_PUBLIC_KEY
}).then(subscription => { }).then(subscription => {
console.log('Subscription successful:', subscription); this.sendSubscriptionToServer(subscription).subscribe();
this.sendSubscriptionToServer(subscription).subscribe(response => {
console.log('Subscription sent to server:', response);
});
}).catch(error => { }).catch(error => {
console.error('Subscription failed:', error); console.error('Subscription to notifications failed:', error);
}); });
} }
sendSubscriptionToServer(subscription: PushSubscription) { sendSubscriptionToServer(subscription: PushSubscription) {
const url = `${this.apiURL}/push/subscribe`; const url = `${this.apiURL}/push/subscribe`;
const headers = this.authService.getAuthHeaders(); // Obligé de récupérer le token ici car injecter le service dans le constructeur de AuthService provoque une boucle infinie
const token = this.cookiesService.getToken();
const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);
headers.set('Content-Type', 'application/json'); headers.set('Content-Type', 'application/json');
return this.http.post<any>(url, subscription, { headers }); return this.http.post<any>(url, subscription, { headers });
} }
unsubscribe(): Promise<void> {
return this.swPush.unsubscribe();
}
} }

Loading…
Cancel
Save