diff --git a/ts/services/calling.ts b/ts/services/calling.ts index 8a69b075c..1ebdc1e08 100644 --- a/ts/services/calling.ts +++ b/ts/services/calling.ts @@ -1783,8 +1783,6 @@ export class CallingClass { await processGroupCallRingCancellation(ringId); } - this.stopCallingLobby(); - if (shouldRing) { log.info('handleGroupCallRingUpdate: ringing'); this.reduxInterface?.receiveIncomingGroupCall({ @@ -1888,8 +1886,6 @@ export class CallingClass { this.attachToCall(conversation, call); - this.stopCallingLobby(); - this.reduxInterface.receiveIncomingDirectCall({ conversationId: conversation.id, isVideoCall: call.isVideoCall, diff --git a/ts/state/ducks/calling.ts b/ts/state/ducks/calling.ts index 97d0e3b9a..e64a3cac1 100644 --- a/ts/state/ducks/calling.ts +++ b/ts/state/ducks/calling.ts @@ -1025,10 +1025,21 @@ function keyChangeOk( function receiveIncomingDirectCall( payload: IncomingDirectCallType -): IncomingDirectCallActionType { - return { - type: INCOMING_DIRECT_CALL, - payload, +): ThunkAction { + return (dispatch, getState) => { + const callState = getState().calling; + + if ( + callState.activeCallState && + callState.activeCallState.conversationId === payload.conversationId + ) { + calling.stopCallingLobby(); + } + + dispatch({ + type: INCOMING_DIRECT_CALL, + payload, + }); }; }