Reorganize things and do some fixes

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
pull/21833/head
Šimon Brandner 2021-06-01 10:55:03 +02:00
parent 8c67b96a0f
commit 67a052e46a
No known key found for this signature in database
GPG Key ID: 9760693FDD98A790
1 changed files with 14 additions and 10 deletions

View File

@ -73,26 +73,30 @@ export default class CallEventGrouper extends EventEmitter {
} }
private setCallListeners() { private setCallListeners() {
if (!this.call) return;
this.call.addListener(CallEvent.State, this.setCallState); this.call.addListener(CallEvent.State, this.setCallState);
} }
private setCallState = () => { private setCallState = () => {
if (SUPPORTED_STATES.includes(this.call.state)) { if (SUPPORTED_STATES.includes(this.call?.state)) {
this.state = this.call.state; this.state = this.call.state;
this.emit(CallEventGrouperEvent.StateChanged, this.state); } else {
const lastEvent = this.events[this.events.length - 1];
const lastEventType = lastEvent.getType();
if (lastEventType === EventType.CallHangup) this.state = CallState.Ended;
else if (lastEventType === EventType.CallReject) this.state = CallState.Ended;
} }
this.emit(CallEventGrouperEvent.StateChanged, this.state);
} }
public add(event: MatrixEvent) { public add(event: MatrixEvent) {
this.events.push(event);
const type = event.getType();
if (type === EventType.CallHangup) this.state = CallState.Ended;
else if (type === EventType.CallReject) this.state = CallState.Ended;
const callId = event.getContent().call_id; const callId = event.getContent().call_id;
this.call = CallHandler.sharedInstance().getCallById(callId); this.events.push(event);
if (!this.call) return; if (!this.call) {
this.setCallListeners(); this.call = CallHandler.sharedInstance().getCallById(callId);
this.setCallListeners();
}
this.setCallState(); this.setCallState();
} }
} }