Skip to content

Commit 79954a9

Browse files
committed
[STREAM-1180] Handle the scenario where sessionManager doesn't exist yet
1 parent 7d90a62 commit 79954a9

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

src/client.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -876,10 +876,15 @@ export class GenesysCloudWebrtcSdk extends (EventEmitter as { new(): StrictEvent
876876
* @param mediaHandling how softphone media should be handled
877877
*/
878878
setMediaHandling (mediaHandling: MediaHandling): void {
879-
const activeConversations = this.sessionManager.getAllActiveConversations();
880-
console.log('Hjon: mediaHandling:', mediaHandling);
881879
const useHeadsets = !(mediaHandling === MediaHandling.reducedMediaNoHeadsets);
882-
console.log('Hjon: useHeadsets:', useHeadsets);
880+
881+
if (!this.sessionManager) {
882+
this._mediaHandling = mediaHandling;
883+
this.setUseHeadsets(useHeadsets);
884+
return;
885+
}
886+
887+
const activeConversations = this.sessionManager.getAllActiveConversations();
883888

884889
if (activeConversations.length !== 0 && !useHeadsets) {
885890
throw createAndEmitSdkError.call(this, SdkErrorTypes.not_supported, 'Cannot downgrade media handling to stop using headsets during an active call');

test/unit/client.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,6 +1162,18 @@ describe('Client', () => {
11621162
});
11631163

11641164
describe('setMediaHandling()', () => {
1165+
it('should just set media handling and headsets if there is no sessionManager yet', () => {
1166+
const mockSdk = constructSdk();
1167+
(sdk as any).sessionManager = null;
1168+
const useHeadsetsSpy = jest.fn();
1169+
mockSdk.setUseHeadsets = useHeadsetsSpy;
1170+
1171+
sdk.setMediaHandling(MediaHandling.reducedMediaHeadsets);
1172+
1173+
expect(sdk._mediaHandling).toBe(MediaHandling.reducedMediaHeadsets);
1174+
expect(useHeadsetsSpy).toHaveBeenCalledWith(true);
1175+
});
1176+
11651177
it('should throw if media handling will not use headsets but there is an active conversation', () => {
11661178
sdk = constructSdk();
11671179
const conversations = [{ conversationId: 'test-conversation-id' }] as IActiveConversationDescription[];
@@ -1170,6 +1182,7 @@ describe('Client', () => {
11701182
expect(() => {
11711183
sdk.setMediaHandling(MediaHandling.reducedMediaNoHeadsets);
11721184
}).toThrow();
1185+
expect(sdk._mediaHandling).toBe(MediaHandling.standardMedia);
11731186
});
11741187

11751188
it('should disconnect any sessions not connected to an active conversation when set to a reduced handling of media', () => {
@@ -1188,6 +1201,7 @@ describe('Client', () => {
11881201

11891202
sdk.setMediaHandling(MediaHandling.reducedMediaHeadsets);
11901203

1204+
expect(sdk._mediaHandling).toBe(MediaHandling.reducedMediaHeadsets);
11911205
expect(forceTerminateSpy).toHaveBeenCalledTimes(1);
11921206
expect(forceTerminateSpy).toHaveBeenCalledWith(idleSessionId);
11931207
});
@@ -1199,12 +1213,15 @@ describe('Client', () => {
11991213
sdk.setUseHeadsets = useHeadsetsSpy;
12001214

12011215
sdk.setMediaHandling(MediaHandling.standardMedia);
1216+
expect(sdk._mediaHandling).toBe(MediaHandling.standardMedia);
12021217
expect(useHeadsetsSpy).toHaveBeenCalledWith(true);
12031218

12041219
sdk.setMediaHandling(MediaHandling.alertingLeaderMedia);
1220+
expect(sdk._mediaHandling).toBe(MediaHandling.alertingLeaderMedia);
12051221
expect(useHeadsetsSpy).toHaveBeenCalledWith(true);
12061222

12071223
sdk.setMediaHandling(MediaHandling.reducedMediaHeadsets);
1224+
expect(sdk._mediaHandling).toBe(MediaHandling.reducedMediaHeadsets);
12081225
expect(useHeadsetsSpy).toHaveBeenCalledWith(true);
12091226
});
12101227
});

0 commit comments

Comments
 (0)