From 6b0c63fccc106a77227f9f709c818f7114d76e05 Mon Sep 17 00:00:00 2001 From: automated-signal <37887102+automated-signal@users.noreply.github.com> Date: Fri, 1 Mar 2024 12:24:53 -0600 Subject: [PATCH] Fix group call outgoing ring Co-authored-by: ayumi-signal <143036029+ayumi-signal@users.noreply.github.com> --- ts/state/ducks/calling.ts | 25 +++++++++++++------- ts/test-electron/state/ducks/calling_test.ts | 14 +++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/ts/state/ducks/calling.ts b/ts/state/ducks/calling.ts index ee3031f292..043040c2bc 100644 --- a/ts/state/ducks/calling.ts +++ b/ts/state/ducks/calling.ts @@ -2137,14 +2137,23 @@ export function reducer( remoteParticipants, ...ringState, }; - newAdhocCalls = - callMode === CallMode.Adhoc - ? { - ...adhocCalls, - [conversationId]: call, - } - : adhocCalls; - outgoingRing = false; + + if (callMode === CallMode.Group) { + outgoingRing = + !ringState.ringId && + !call.peekInfo?.acis.length && + !call.remoteParticipants.length && + !action.payload.isConversationTooBigToRing; + newAdhocCalls = adhocCalls; + } else if (callMode === CallMode.Adhoc) { + outgoingRing = false; + newAdhocCalls = { + ...adhocCalls, + [conversationId]: call, + }; + } else { + throw missingCaseError(action.payload); + } break; } default: diff --git a/ts/test-electron/state/ducks/calling_test.ts b/ts/test-electron/state/ducks/calling_test.ts index 86cabc4153..bf5d5fc5ae 100644 --- a/ts/test-electron/state/ducks/calling_test.ts +++ b/ts/test-electron/state/ducks/calling_test.ts @@ -2102,6 +2102,20 @@ describe('calling duck', () => { assert.strictEqual(call.ringId, BigInt(987)); assert.strictEqual(call.ringerAci, ringerAci); }); + + it('enables outgoingRing for a group call when there is no existing call', async () => { + const result = await getState(getEmptyState(), { + callMode: CallMode.Group, + hasLocalAudio: true, + hasLocalVideo: true, + connectionState: GroupCallConnectionState.Connected, + joinState: GroupCallJoinState.NotJoined, + peekInfo: undefined, + remoteParticipants: [], + }); + + assert.isTrue(result.activeCallState?.outgoingRing); + }); }); });