From f5d1c6184a715c7e12420049e45755627651156b Mon Sep 17 00:00:00 2001 From: Karina Sigartau Date: Tue, 13 Jul 2021 16:26:48 +0300 Subject: [PATCH] feat(MeetingSdkAdapter): transform localShare into an object --- scripts/puppeteer.server.js | 2 +- src/MeetingsSDKAdapter.js | 26 +++++++++++++++----------- src/MeetingsSDKAdapter.test.js | 10 ++++++---- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/scripts/puppeteer.server.js b/scripts/puppeteer.server.js index 03225ebb..260b6751 100644 --- a/scripts/puppeteer.server.js +++ b/scripts/puppeteer.server.js @@ -89,7 +89,7 @@ function getMeeting() { document.getElementById('remote-video').srcObject = meeting.remoteVideo; document.getElementById('local-audio').srcObject = meeting.localAudio; document.getElementById('local-video').srcObject = meeting.localVideo; - document.getElementById('local-share').srcObject = meeting.localShare; + document.getElementById('local-share').srcObject = meeting.localShare.stream; document.getElementById('remote-share').srcObject = meeting.remoteShare; document.getElementById('meeting-title').innerHTML = meeting.title; }, diff --git a/src/MeetingsSDKAdapter.js b/src/MeetingsSDKAdapter.js index 68890059..2c0fd37b 100644 --- a/src/MeetingsSDKAdapter.js +++ b/src/MeetingsSDKAdapter.js @@ -327,7 +327,7 @@ export default class MeetingsSDKAdapter extends MeetingsAdapter { this.meetings[ID] = {...meeting, remoteVideo: stream}; break; case MEDIA_TYPE_LOCAL_SHARE: - this.meetings[ID] = {...meeting, localShare: stream}; + this.meetings[ID] = {...meeting, localShare: {stream}}; break; case MEDIA_TYPE_REMOTE_SHARE: this.meetings[ID] = {...meeting, remoteShareStream: stream}; @@ -373,14 +373,16 @@ export default class MeetingsSDKAdapter extends MeetingsAdapter { if (this.meetings && this.meetings[ID]) { this.stopStream(this.meetings[ID].localAudio); this.stopStream(this.meetings[ID].localVideo); - this.stopStream(this.meetings[ID].localShare); + this.stopStream(this.meetings[ID].localShare.stream); } this.meetings[ID] = { ...this.meetings[ID], localAudio: null, localVideo: null, - localShare: null, + localShare: { + stream: null, + }, remoteAudio: null, remoteVideo: null, remoteShare: null, @@ -443,7 +445,9 @@ export default class MeetingsSDKAdapter extends MeetingsAdapter { ...meeting, localAudio: null, localVideo: null, - localShare: null, + localShare: { + stream: null, + }, remoteAudio: null, remoteVideo: null, remoteShare: null, @@ -840,7 +844,7 @@ export default class MeetingsSDKAdapter extends MeetingsAdapter { const [, localShare] = await sdkMeeting.getMediaStreams({sendShare: true}); - this.meetings[ID].localShare = localShare; + this.meetings[ID].localShare.stream = localShare; await sdkMeeting.updateShare({stream: localShare, sendShare: true, receiveShare: true}); }; @@ -861,11 +865,11 @@ export default class MeetingsSDKAdapter extends MeetingsAdapter { }; const resetSharingStream = (error) => { - if (this.meetings[ID] && this.meetings[ID].localShare) { + if (this.meetings[ID] && this.meetings[ID].localShare.stream) { // eslint-disable-next-line no-console console.warn(`Unable to update local share stream for meeting "${ID}"`, error); - this.stopStream(this.meetings[ID].localShare); - this.meetings[ID].localShare = null; + this.stopStream(this.meetings[ID].localShare.stream); + this.meetings[ID].localShare.stream = null; } sdkMeeting.emit(EVENT_MEDIA_LOCAL_UPDATE, { @@ -880,7 +884,7 @@ export default class MeetingsSDKAdapter extends MeetingsAdapter { // Will stop sharing stream and reset UI state when error happens // try { - if (this.meetings[ID].localShare) { + if (this.meetings[ID].localShare.stream) { await disableSharingStream(); } else { await enableSharingStream(); @@ -1374,8 +1378,8 @@ export default class MeetingsSDKAdapter extends MeetingsAdapter { const meetingWithLocalShareStoppedEvent$ = fromEvent(sdkMeeting, EVENT_LOCAL_SHARE_STOP) .pipe( tap(() => { - this.stopStream(this.meetings[ID].localShare); - this.meetings[ID].localShare = null; + this.stopStream(this.meetings[ID].localShare.stream); + this.meetings[ID].localShare.stream = null; }), ); diff --git a/src/MeetingsSDKAdapter.test.js b/src/MeetingsSDKAdapter.test.js index 7ae15a75..e87814d1 100644 --- a/src/MeetingsSDKAdapter.test.js +++ b/src/MeetingsSDKAdapter.test.js @@ -26,7 +26,9 @@ describe('Meetings SDK Adapter', () => { meeting = { ID: meetingID, localAudio: null, - localShare: null, + localShare: { + stream: null, + }, localVideo: null, remoteAudio: null, remoteVideo: null, @@ -792,13 +794,13 @@ describe('Meetings SDK Adapter', () => { mockSDKMeeting.getMediaStreams = jest.fn(() => Promise.resolve([['mockStream'], 'localShare'])); await meetingSDKAdapter.handleLocalShare(meetingID); - expect(meetingSDKAdapter.meetings[meetingID].localShare).toEqual('localShare'); + expect(meetingSDKAdapter.meetings[meetingID].localShare.stream).toEqual('localShare'); expect(mockSDKMeeting.updateShare).toHaveBeenCalled(); mockSDKMeeting.getMediaStreams = getMediaStreams; }); test('stop share if the share track is enabled', async () => { - meetingSDKAdapter.meetings[meetingID] = {...meeting, localShare: 'localShare'}; + meetingSDKAdapter.meetings[meetingID] = {...meeting, localShare: {stream: 'localShare'}}; await meetingSDKAdapter.handleLocalShare(meetingID); expect(mockSDKMeeting.updateShare).toHaveBeenCalledWith({ @@ -808,7 +810,7 @@ describe('Meetings SDK Adapter', () => { }); test('resets sharing stream if share control is not handled properly', async () => { - meetingSDKAdapter.meetings[meetingID] = {...meeting, localShare: 'localShare'}; + meetingSDKAdapter.meetings[meetingID] = {...meeting, localShare: {stream: 'localShare'}}; global.console.warn = mockConsole; mockSDKMeeting.updateShare = jest.fn(() => Promise.reject()); await meetingSDKAdapter.handleLocalShare(meetingID);