Skip to content

Commit 3f64708

Browse files
author
Aidan Zimmermann
committed
STREAM-777: add new interface and rename params
1 parent e2b2a5d commit 3f64708

6 files changed

Lines changed: 32 additions & 28 deletions

File tree

src/client.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import {
2929
VideoMediaSession,
3030
IVideoResolution,
3131
JWTDetails,
32-
ISdkFullConfig
32+
ISdkFullConfig, LiveMonitoringMetadata
3333
} from './types/interfaces';
3434
import {
3535
setupStreamingClient,
@@ -410,14 +410,14 @@ export class GenesysCloudWebrtcSdk extends (EventEmitter as { new(): StrictEvent
410410
* `initialize()` must be called first.
411411
*
412412
* @param conferenceJid JID of the conference to join
413-
* @param screenRecordingMetadatas Array of screen metadata to identify primary screen
413+
* @param liveMonitoringMetadata Array of screen metadata to identify primary screen
414414
*
415415
* @returns a promise with an object with the newly created 'conversationId'
416416
*/
417-
async startLiveMonitoringSession (conferenceJid: string, screenRecordingMetadatas: ScreenRecordingMetadata[]): Promise<{ conversationId: string }> {
417+
async startLiveMonitoringSession (conferenceJid: string, liveMonitoringMetadata: LiveMonitoringMetadata[]): Promise<{ conversationId: string }> {
418418
return this.sessionManager.startSession({
419419
conferenceJid,
420-
screenRecordingMetadatas,
420+
liveMonitoringMetadata,
421421
sessionType: SessionTypes.collaborateVideo
422422
});
423423
}

src/sessions/live-monitoring-session-handler.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ import {
22
IPendingSession,
33
IExtendedMediaSession,
44
IAcceptSessionRequest,
5-
ScreenRecordingMetadata,
6-
IUpdateOutgoingMedia, IStartScreenConferenceSessionParams,
5+
LiveMonitoringMetadata,
6+
IUpdateOutgoingMedia,
7+
IStartLiveMonitoringSessionParams
78
} from '../types/interfaces';
89
import BaseSessionHandler from './base-session-handler';
910
import { SessionTypes, SdkErrorTypes } from '../types/enums';
@@ -26,23 +27,20 @@ export class LiveMonitoringSessionHandler extends BaseSessionHandler {
2627
return this.proceedWithSession(pendingSession);
2728
}
2829

29-
async startSession(params: IStartScreenConferenceSessionParams): Promise<{ conversationId: string }> {
30-
const primaryScreen = this.identifyPrimaryScreen(params.screenRecordingMetadatas);
31-
30+
async startSession(params: IStartLiveMonitoringSessionParams): Promise<{ conversationId: string }> {
31+
const primaryScreen = this.identifyPrimaryScreen(params.liveMonitoringMetadata);
3232
if (!primaryScreen) {
3333
throw createAndEmitSdkError.call(this.sdk, SdkErrorTypes.invalid_options, 'No primary screen found in metadata');
3434
}
35-
3635
const screenStream = await this.getScreenMediaForPrimary(primaryScreen);
37-
3836
return this.joinConferenceWithScreen(params.conferenceJid, screenStream);
3937
}
4038

41-
private identifyPrimaryScreen(metadatas: ScreenRecordingMetadata[]): ScreenRecordingMetadata | null {
42-
return metadatas.find(metadata => metadata.primary) || null;
39+
private identifyPrimaryScreen(metadata: LiveMonitoringMetadata[]): LiveMonitoringMetadata | null {
40+
return metadata.find(metadata => metadata.primary) || null;
4341
}
4442

45-
private async getScreenMediaForPrimary(primaryScreen: ScreenRecordingMetadata): Promise<MediaStream> {
43+
private async getScreenMediaForPrimary(primaryScreen: LiveMonitoringMetadata): Promise<MediaStream> {
4644
try {
4745
const constraints = {
4846
video: {

src/sessions/session-manager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
IConversationHeldRequest,
2222
IPendingSessionActionParams,
2323
VideoMediaSession,
24-
IActiveConversationDescription, IStartScreenConferenceSessionParams,
24+
IActiveConversationDescription, IStartLiveMonitoringSessionParams,
2525
SubscriptionEvent
2626
} from '../types/interfaces';
2727
import { ConversationUpdate } from '../conversations/conversation-update';
@@ -187,7 +187,7 @@ export class SessionManager {
187187
return handler;
188188
}
189189

190-
async startSession (startSessionParams: IStartSessionParams | IStartVideoSessionParams | IStartVideoMeetingSessionParams | IStartSoftphoneSessionParams | IStartScreenConferenceSessionParams): Promise<any> {
190+
async startSession (startSessionParams: IStartSessionParams | IStartVideoSessionParams | IStartVideoMeetingSessionParams | IStartSoftphoneSessionParams | IStartLiveMonitoringSessionParams): Promise<any> {
191191
if (!this.sdk.connected) {
192192
throw createAndEmitSdkError.call(this.sdk, SdkErrorTypes.session, 'A session cannot be started as streaming client is not yet connected', { sessionType: startSessionParams.sessionType });
193193
}

src/types/interfaces.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,7 @@ export interface IAcceptSessionRequest extends ISdkMediaDeviceIds {
660660
mediaStream?: MediaStream;
661661

662662
/**
663-
* metadata about screens and tracks. This is required for screen recording sessions
663+
* metadata about screens and tracks. This is required for screen recording and live monitoring sessions
664664
*/
665665
screenRecordingMetadatas?: ScreenRecordingMetadata[];
666666

@@ -962,6 +962,10 @@ export interface ScreenRecordingMetadata {
962962
primary: boolean;
963963
}
964964

965+
export interface LiveMonitoringMetadata extends ScreenRecordingMetadata {
966+
967+
}
968+
965969
export interface SubscriptionEvent {
966970
metadata: {
967971
correlationId: string;
@@ -1216,11 +1220,11 @@ export interface IStartSoftphoneSessionParams extends IStartSessionParams {
12161220
uuiData?: string;
12171221
}
12181222

1219-
export interface IStartScreenConferenceSessionParams extends IStartSessionParams {
1223+
export interface IStartLiveMonitoringSessionParams extends IStartSessionParams {
12201224
/** Conference room JID to join */
12211225
conferenceJid: string;
12221226
/** Screen recording metadata to identify primary screen */
1223-
screenRecordingMetadatas: ScreenRecordingMetadata[];
1227+
liveMonitoringMetadata: LiveMonitoringMetadata[];
12241228
}
12251229

12261230
export interface ISdkSoftphoneDestination {

test/unit/client.test.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ import {
2929
IStation,
3030
IPersonDetails,
3131
ISessionIdAndConversationId,
32-
VideoSessionHandler, ScreenRecordingMetadata, IStartScreenConferenceSessionParams
32+
VideoSessionHandler,
33+
LiveMonitoringMetadata,
34+
IStartLiveMonitoringSessionParams
3335
} from '../../src';
3436
import * as utils from '../../src/utils';
3537
import { RetryPromise } from 'genesys-cloud-streaming-client/dist/es/utils';
@@ -335,17 +337,17 @@ describe('Client', () => {
335337
it('should call session manager to start a live monitoring session', async () => {
336338
sdk = constructSdk();
337339
const conferenceJid = 'livemonitor@example.com';
338-
const screenRecordingMetadatas = [{ screenId: 'screen1', primary: true } as ScreenRecordingMetadata];
340+
const liveMonitoringMetadata = [{ screenId: 'screen1', primary: true } as LiveMonitoringMetadata];
339341

340342
sessionManagerMock.startSession = jest.fn().mockResolvedValue({ conversationId: 'conv123' });
341343

342-
const result = await sdk.startLiveMonitoringSession(conferenceJid, screenRecordingMetadatas);
344+
const result = await sdk.startLiveMonitoringSession(conferenceJid, liveMonitoringMetadata);
343345

344346
expect(sessionManagerMock.startSession).toBeCalledWith({
345347
conferenceJid,
346-
screenRecordingMetadatas,
348+
liveMonitoringMetadata,
347349
sessionType: SessionTypes.collaborateVideo
348-
} as IStartScreenConferenceSessionParams);
350+
} as IStartLiveMonitoringSessionParams);
349351
expect(result).toEqual({ conversationId: 'conv123' });
350352
});
351353
});

test/unit/sessions/live-monitoring-session-handler.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ describe('startSession', () => {
124124
it('should throw error if no primary screen found', async () => {
125125
const params = {
126126
conferenceJid: 'conf@example.com',
127-
screenRecordingMetadatas: [{ screenId: 'screen1', primary: false }]
127+
liveMonitoringMetadata: [{ screenId: 'screen1', primary: false }]
128128
};
129129

130130
await expect(handler.startSession(params as any))
@@ -140,7 +140,7 @@ describe('startSession', () => {
140140

141141
const params = {
142142
conferenceJid: 'conf@example.com',
143-
screenRecordingMetadatas: mockMetadatas
143+
liveMonitoringMetadata: mockMetadatas
144144
};
145145

146146
const result = await handler.startSession(params as any);
@@ -165,7 +165,7 @@ describe('startSession', () => {
165165

166166
const params = {
167167
conferenceJid: 'conf@example.com',
168-
screenRecordingMetadatas: mockMetadatas
168+
liveMonitoringMetadata: mockMetadatas
169169
};
170170

171171
await expect(handler.startSession(params as any))
@@ -183,7 +183,7 @@ describe('startSession', () => {
183183

184184
const params = {
185185
conferenceJid: 'conf@example.com',
186-
screenRecordingMetadatas: mockMetadatas
186+
liveMonitoringMetadata: mockMetadatas
187187
};
188188

189189
await expect(handler.startSession(params as any))

0 commit comments

Comments
 (0)