Merge pull request #2434 from slavakisel/external-notification-screen-sharing
Implement external API notification about screen sharing status
This commit is contained in:
commit
7f78050513
|
@ -1336,19 +1336,35 @@ export default {
|
||||||
replaceLocalTrack(this.localVideo, newStream, room))
|
replaceLocalTrack(this.localVideo, newStream, room))
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.localVideo = newStream;
|
this.localVideo = newStream;
|
||||||
|
this._setSharingScreen(newStream);
|
||||||
if (newStream) {
|
if (newStream) {
|
||||||
this.isSharingScreen = newStream.videoType === 'desktop';
|
|
||||||
|
|
||||||
APP.UI.addLocalStream(newStream);
|
APP.UI.addLocalStream(newStream);
|
||||||
} else {
|
|
||||||
this.isSharingScreen = false;
|
|
||||||
}
|
}
|
||||||
this.setVideoMuteStatus(this.isLocalVideoMuted());
|
this.setVideoMuteStatus(this.isLocalVideoMuted());
|
||||||
APP.UI.updateDesktopSharingButtons();
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets `this.isSharingScreen` depending on provided video stream.
|
||||||
|
* In case new screen sharing status is not equal previous one
|
||||||
|
* it updates desktop sharing buttons in UI
|
||||||
|
* and notifies external application.
|
||||||
|
*
|
||||||
|
* @param {JitsiLocalTrack} [newStream] new stream to use or null
|
||||||
|
* @private
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
_setSharingScreen(newStream) {
|
||||||
|
const wasSharingScreen = this.isSharingScreen;
|
||||||
|
|
||||||
|
this.isSharingScreen = newStream && newStream.videoType === 'desktop';
|
||||||
|
|
||||||
|
if (wasSharingScreen !== this.isSharingScreen) {
|
||||||
|
APP.UI.updateDesktopSharingButtons();
|
||||||
|
APP.API.notifyScreenSharingStatusChanged(this.isSharingScreen);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start using provided audio stream.
|
* Start using provided audio stream.
|
||||||
* Stops previous audio stream.
|
* Stops previous audio stream.
|
||||||
|
|
|
@ -164,6 +164,13 @@ changes. The listener will receive an object with the following structure:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* **screenSharingStatusChanged** - receives event notifications about turning on/off the local user screen sharing. The listener will receive object with the following structure:
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
"on": on //whether screen sharing is on
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
* **incomingMessage** - Event notifications about incoming
|
* **incomingMessage** - Event notifications about incoming
|
||||||
messages. The listener will receive an object with the following structure:
|
messages. The listener will receive an object with the following structure:
|
||||||
```javascript
|
```javascript
|
||||||
|
|
|
@ -471,6 +471,20 @@ class API {
|
||||||
this._sendEvent({ name: 'feedback-submitted' });
|
this._sendEvent({ name: 'feedback-submitted' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify external application (if API is enabled) that the screen sharing
|
||||||
|
* has been turned on/off.
|
||||||
|
*
|
||||||
|
* @param {boolean} on - True if screen sharing is enabled.
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
notifyScreenSharingStatusChanged(on: boolean) {
|
||||||
|
this._sendEvent({
|
||||||
|
name: 'screen-sharing-status-changed',
|
||||||
|
on
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disposes the allocated resources.
|
* Disposes the allocated resources.
|
||||||
*
|
*
|
||||||
|
|
|
@ -48,7 +48,8 @@ const events = {
|
||||||
'video-conference-joined': 'videoConferenceJoined',
|
'video-conference-joined': 'videoConferenceJoined',
|
||||||
'video-conference-left': 'videoConferenceLeft',
|
'video-conference-left': 'videoConferenceLeft',
|
||||||
'video-availability-changed': 'videoAvailabilityChanged',
|
'video-availability-changed': 'videoAvailabilityChanged',
|
||||||
'video-mute-status-changed': 'videoMuteStatusChanged'
|
'video-mute-status-changed': 'videoMuteStatusChanged',
|
||||||
|
'screen-sharing-status-changed': 'screenSharingStatusChanged'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -485,6 +486,12 @@ export default class JitsiMeetExternalAPI extends EventEmitter {
|
||||||
* {{
|
* {{
|
||||||
* roomName: room //the room name of the conference
|
* roomName: room //the room name of the conference
|
||||||
* }}
|
* }}
|
||||||
|
* screenSharingStatusChanged - receives event notifications about
|
||||||
|
* turning on/off the local user screen sharing.
|
||||||
|
* The listener will receive object with the following structure:
|
||||||
|
* {{
|
||||||
|
* on: on //whether screen sharing is on
|
||||||
|
* }}
|
||||||
* readyToClose - all hangup operations are completed and Jitsi Meet is
|
* readyToClose - all hangup operations are completed and Jitsi Meet is
|
||||||
* ready to be disposed.
|
* ready to be disposed.
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
|
|
Loading…
Reference in New Issue