From 40ab6485a10b0f33b024075b99af7d8259dbb232 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=20K=C3=A4sler?= <tom.kaesler@mni.thm.de>
Date: Thu, 14 Nov 2019 15:08:51 +0100
Subject: [PATCH] Unsubscribe from feedback stream

---
 .../feedback-barometer-page.component.ts           | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/app/components/shared/feedback-barometer-page/feedback-barometer-page.component.ts b/src/app/components/shared/feedback-barometer-page/feedback-barometer-page.component.ts
index a6a036247..1d65e8cf1 100644
--- a/src/app/components/shared/feedback-barometer-page/feedback-barometer-page.component.ts
+++ b/src/app/components/shared/feedback-barometer-page/feedback-barometer-page.component.ts
@@ -1,10 +1,11 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, OnInit, OnDestroy } from '@angular/core';
 import { ActivatedRoute } from '@angular/router';
 import { AuthenticationService } from '../../../services/http/authentication.service';
 import { UserRole } from '../../../models/user-roles.enum';
 import { NotificationService } from '../../../services/util/notification.service';
 import { Message } from '@stomp/stompjs';
 import { WsFeedbackService } from '../../../services/websockets/ws-feedback.service';
+import { Subscription } from 'rxjs';
 
 /* ToDo: Use TranslateService */
 
@@ -13,7 +14,7 @@ import { WsFeedbackService } from '../../../services/websockets/ws-feedback.serv
   templateUrl: './feedback-barometer-page.component.html',
   styleUrls: ['./feedback-barometer-page.component.scss']
 })
-export class FeedbackBarometerPageComponent implements OnInit {
+export class FeedbackBarometerPageComponent implements OnInit, OnDestroy {
   feedback: any = [
     { state: 0, name: 'sentiment_very_satisfied', message: 'Ich kann folgen.', count: 0, },
     { state: 1, name: 'sentiment_satisfied', message: 'Schneller, bitte!', count: 0, },
@@ -22,6 +23,7 @@ export class FeedbackBarometerPageComponent implements OnInit {
   ];
   userRole: UserRole;
   roomId: string;
+  protected sub: Subscription;
 
   constructor(
     private authenticationService: AuthenticationService,
@@ -34,13 +36,19 @@ export class FeedbackBarometerPageComponent implements OnInit {
   ngOnInit() {
     this.userRole = this.authenticationService.getRole();
 
-    this.wsFeedbackService.getFeedbackStream(this.roomId).subscribe((message: Message) => {
+    this.sub = this.wsFeedbackService.getFeedbackStream(this.roomId).subscribe((message: Message) => {
       this.parseIncomingMessage(message);
     });
 
     this.wsFeedbackService.get(this.roomId);
   }
 
+  ngOnDestroy() {
+    if (this.sub) {
+      this.sub.unsubscribe();
+    }
+  }
+
   private updateFeedback(data) {
     const reducer = (accumulator, currentValue) => accumulator + currentValue;
     const sum = data.reduce(reducer);
-- 
GitLab