fix: chatroom stops listening, when destroyed
authorKai Moritz <kai@juplo.de>
Sat, 7 Jan 2023 18:45:48 +0000 (19:45 +0100)
committerKai Moritz <kai@juplo.de>
Sat, 7 Jan 2023 18:51:50 +0000 (19:51 +0100)
src/app/chatroom.service.ts
src/app/chatroom/chatroom.component.ts

index 11ad225..74bda94 100644 (file)
@@ -40,6 +40,12 @@ export class ChatroomService {
     return observable;
   }
 
+  unlisten(): void {
+    this.closeChannel();
+    this.channelUri = 'UNKNOWN';
+    this.channel = new Subscriber<Message>();
+  }
+
   // Creates SSE event source, handles SSE events
   private openChannel(): void {
 
index 7178a5a..c94a55b 100644 (file)
@@ -1,4 +1,4 @@
-import { Component, OnInit, NgZone } from '@angular/core';
+import { Component, OnInit, NgZone, OnDestroy } from '@angular/core';
 import { ActivatedRoute, Router } from '@angular/router';
 import { ChatroomService } from "../chatroom.service";
 import { UserService } from "../user.service";
@@ -10,7 +10,7 @@ import { Message } from "../message";
   templateUrl: './chatroom.component.html',
   styleUrls: ['./chatroom.component.less']
 })
-export class ChatroomComponent implements OnInit {
+export class ChatroomComponent implements OnInit, OnDestroy {
 
   chatroom: Chatroom = { id: 'FOO', name: 'BAR'};
   messages: Message[] = [];
@@ -27,6 +27,11 @@ export class ChatroomComponent implements OnInit {
     this.userService.assertUserisKnown(() => this.getChatroom());
   }
 
+  ngOnDestroy() {
+    this.chatroomsService.unlisten();
+    this.chatroom = { id: 'FOO', name: 'BAR' };
+  }
+
   getChatroom(): void {
     const id: string | null = this.route.snapshot.paramMap.get('id');
     if (id === null) {