From d3a18a197b0fec1ab19430a44193b3e48c385f43 Mon Sep 17 00:00:00 2001 From: Jamie Kyle <113370520+jamiebuilds-signal@users.noreply.github.com> Date: Wed, 23 Aug 2023 10:07:29 -0700 Subject: [PATCH] Fix adding group call history with no ring --- ts/services/calling.ts | 2 +- ts/state/ducks/calling.ts | 15 ++++++++------- ts/util/callDisposition.ts | 8 ++++---- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/ts/services/calling.ts b/ts/services/calling.ts index 418626165..e828f3ef9 100644 --- a/ts/services/calling.ts +++ b/ts/services/calling.ts @@ -2261,7 +2261,7 @@ export class CallingClass { public async updateCallHistoryForGroupCall( conversationId: string, - joinState: GroupCallJoinState, + joinState: GroupCallJoinState | null, peekInfo: PeekInfo | null ): Promise { const groupCallMeta = getGroupCallMeta(peekInfo); diff --git a/ts/state/ducks/calling.ts b/ts/state/ducks/calling.ts index 4af87aa27..edaf6190e 100644 --- a/ts/state/ducks/calling.ts +++ b/ts/state/ducks/calling.ts @@ -372,13 +372,14 @@ const doGroupCallPeek = ( `doGroupCallPeek/groupv2(${conversation.groupId}): Found ${peekInfo.deviceCount} devices` ); - if (existingCall?.callMode === CallMode.Group) { - await calling.updateCallHistoryForGroupCall( - conversationId, - existingCall.joinState, - peekInfo - ); - } + const joinState = + existingCall?.callMode === CallMode.Group ? existingCall.joinState : null; + + await calling.updateCallHistoryForGroupCall( + conversationId, + joinState, + peekInfo + ); const formattedPeekInfo = calling.formatGroupCallPeekInfoForRedux(peekInfo); diff --git a/ts/util/callDisposition.ts b/ts/util/callDisposition.ts index 97816afde..4e217d689 100644 --- a/ts/util/callDisposition.ts +++ b/ts/util/callDisposition.ts @@ -352,20 +352,20 @@ export function getLocalCallEventFromRingUpdate( } export function getLocalCallEventFromJoinState( - joinState: GroupCallJoinState, + joinState: GroupCallJoinState | null, groupCallMeta: GroupCallMeta ): LocalCallEvent | null { const direction = getCallDirectionFromRingerId(groupCallMeta.ringerId); log.info( 'getLocalCallEventFromGroupCall', direction, - GroupCallJoinState[joinState] + joinState != null ? GroupCallJoinState[joinState] : null ); if (direction === CallDirection.Incoming) { if (joinState === GroupCallJoinState.Joined) { return LocalCallEvent.Accepted; } - if (joinState === GroupCallJoinState.NotJoined) { + if (joinState === GroupCallJoinState.NotJoined || joinState == null) { return LocalCallEvent.Started; } if ( @@ -376,7 +376,7 @@ export function getLocalCallEventFromJoinState( } throw missingCaseError(joinState); } else { - if (joinState === GroupCallJoinState.NotJoined) { + if (joinState === GroupCallJoinState.NotJoined || joinState == null) { return LocalCallEvent.Started; } return LocalCallEvent.Ringing;