Skip to content

Commit 5828949

Browse files
committed
Fix for phone calls on iOS
1 parent 408cced commit 5828949

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

app/lib/services/voip/MediaCallEvents.test.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const mockDispatch = jest.fn();
1111
const mockSetNativeAcceptedCallId = jest.fn();
1212
const mockAddEventListener = jest.fn();
1313
const mockRNCallKeepClearInitialEvents = jest.fn();
14+
const mockSetCurrentCallActive = jest.fn();
1415

1516
jest.mock('../../methods/helpers', () => ({
1617
...jest.requireActual('../../methods/helpers'),
@@ -43,6 +44,7 @@ jest.mock('react-native-callkeep', () => ({
4344
default: {
4445
addEventListener: (...args: unknown[]) => mockAddEventListener(...args),
4546
clearInitialEvents: (...args: unknown[]) => mockRNCallKeepClearInitialEvents(...args),
47+
setCurrentCallActive: (...args: unknown[]) => mockSetCurrentCallActive(...args),
4648
getInitialEvents: jest.fn(() => Promise.resolve([]))
4749
}
4850
}));
@@ -264,10 +266,11 @@ describe('setupMediaCallEvents — didToggleHoldCallAction', () => {
264266
expect(mockAddEventListener).toHaveBeenCalledWith('didToggleHoldCallAction', expect.any(Function));
265267
});
266268

267-
it('hold: true when isOnHold is false calls toggleHold once', () => {
269+
it('hold: true when isOnHold is false calls toggleHold once and does not setCurrentCallActive', () => {
268270
setupMediaCallEvents();
269271
getToggleHoldHandler()({ hold: true, callUUID: 'uuid-1' });
270272
expect(toggleHold).toHaveBeenCalledTimes(1);
273+
expect(mockSetCurrentCallActive).not.toHaveBeenCalled();
271274
});
272275

273276
it('hold: true when isOnHold is true does not call toggleHold', () => {
@@ -277,19 +280,22 @@ describe('setupMediaCallEvents — didToggleHoldCallAction', () => {
277280
expect(toggleHold).not.toHaveBeenCalled();
278281
});
279282

280-
it('hold: false after OS-initiated hold calls toggleHold once (auto-resume)', () => {
283+
it('hold: false after OS-initiated hold calls toggleHold once (auto-resume) and setCurrentCallActive', () => {
281284
setupMediaCallEvents();
282285
const handler = getToggleHoldHandler();
283286
handler({ hold: true, callUUID: 'uuid-1' });
284287
getState.mockReturnValue({ ...activeCallBase, isOnHold: true, toggleHold });
285288
handler({ hold: false, callUUID: 'uuid-1' });
286289
expect(toggleHold).toHaveBeenCalledTimes(2);
290+
expect(mockSetCurrentCallActive).toHaveBeenCalledTimes(1);
291+
expect(mockSetCurrentCallActive).toHaveBeenCalledWith('uuid-1');
287292
});
288293

289-
it('hold: false without prior OS-initiated hold does not call toggleHold', () => {
294+
it('hold: false without prior OS-initiated hold does not call toggleHold or setCurrentCallActive', () => {
290295
setupMediaCallEvents();
291296
getToggleHoldHandler()({ hold: false, callUUID: 'uuid-1' });
292297
expect(toggleHold).not.toHaveBeenCalled();
298+
expect(mockSetCurrentCallActive).not.toHaveBeenCalled();
293299
});
294300

295301
it('consecutive hold: true events call toggleHold only once', () => {
@@ -315,8 +321,10 @@ describe('setupMediaCallEvents — didToggleHoldCallAction', () => {
315321
});
316322
handler({ hold: false, callUUID: 'uuid-1' });
317323
expect(toggleHold).toHaveBeenCalledTimes(1);
324+
expect(mockSetCurrentCallActive).not.toHaveBeenCalled();
318325
handler({ hold: false, callUUID: 'uuid-2' });
319326
expect(toggleHold).toHaveBeenCalledTimes(1);
327+
expect(mockSetCurrentCallActive).not.toHaveBeenCalled();
320328
});
321329

322330
it('does not toggle when there is no active call object even if ids match', () => {

app/lib/services/voip/MediaCallEvents.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ export const setupMediaCallEvents = (): (() => void) => {
120120
if (wasAutoHeld) {
121121
toggleHold();
122122
wasAutoHeld = false;
123+
RNCallKeep.setCurrentCallActive(callUUID);
123124
}
124125
})
125126
);

0 commit comments

Comments
 (0)