Skip to content

Commit

Permalink
feat(MeetingSdkAdapter): transform localShare into an object
Browse files Browse the repository at this point in the history
  • Loading branch information
karinasigartau0798 authored and cipak committed Jul 14, 2021
1 parent 070cdf9 commit f5d1c61
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 16 deletions.
2 changes: 1 addition & 1 deletion scripts/puppeteer.server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
},
Expand Down
26 changes: 15 additions & 11 deletions src/MeetingsSDKAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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});
};
Expand All @@ -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, {
Expand All @@ -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();
Expand Down Expand Up @@ -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;
}),
);

Expand Down
10 changes: 6 additions & 4 deletions src/MeetingsSDKAdapter.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ describe('Meetings SDK Adapter', () => {
meeting = {
ID: meetingID,
localAudio: null,
localShare: null,
localShare: {
stream: null,
},
localVideo: null,
remoteAudio: null,
remoteVideo: null,
Expand Down Expand Up @@ -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({
Expand All @@ -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);
Expand Down

0 comments on commit f5d1c61

Please sign in to comment.