From a798772e802621375149e68a66347284f0df68b9 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 15 Dec 2020 16:53:11 +0000 Subject: [PATCH] Unregister from the dispatcher in CallHandler otherwise you end up getting multiple place_call dispatches if you place a call after logging in --- src/CallHandler.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/CallHandler.tsx b/src/CallHandler.tsx index 41dc031b06..8bfd798f16 100644 --- a/src/CallHandler.tsx +++ b/src/CallHandler.tsx @@ -118,6 +118,7 @@ function getRemoteAudioElement(): HTMLAudioElement { export default class CallHandler { private calls = new Map(); // roomId -> call private audioPromises = new Map>(); + private dispatcherRef: string; static sharedInstance() { if (!window.mxCallHandler) { @@ -128,7 +129,7 @@ export default class CallHandler { } start() { - dis.register(this.onAction); + this.dispatcherRef = dis.register(this.onAction); // add empty handlers for media actions, otherwise the media keys // end up causing the audio elements with our ring/ringback etc // audio clips in to play. @@ -151,6 +152,7 @@ export default class CallHandler { if (cli) { cli.removeListener('Call.incoming', this.onCallIncoming); } + if (this.dispatcherRef) dis.unregister(this.dispatcherRef); } private onCallIncoming = (call) => {