mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-09-09 05:08:41 +00:00
feat(tracks): add/remove "ended" listener when screen sharing
* Listen to the MediaStreamTrack "ended" event so local screen-share state is toggled off when capture is terminated externally.
This commit is contained in:
@@ -29,6 +29,7 @@ import {
|
||||
TRACK_UPDATED,
|
||||
TRACK_WILL_CREATE
|
||||
} from './actionTypes';
|
||||
import { toggleScreensharing } from './actions';
|
||||
import {
|
||||
createLocalTracksF,
|
||||
getCameraFacingMode,
|
||||
@@ -385,8 +386,22 @@ export function trackAdded(track: any) {
|
||||
const mediaType = track.getVideoType() === VIDEO_TYPE.DESKTOP
|
||||
? MEDIA_TYPE.SCREENSHARE
|
||||
: track.getType();
|
||||
|
||||
let isReceivingData, noDataFromSourceNotificationInfo, participantId;
|
||||
|
||||
// Make screen share toggle off listen to MediaStreamTrack "ended" event
|
||||
// when it's terminated via Android status bar chip.
|
||||
if (navigator.product === 'ReactNative') {
|
||||
const mediaStreamTrack = track?.getTrack?.();
|
||||
|
||||
if (mediaType === MEDIA_TYPE.SCREENSHARE) {
|
||||
const onEnded = () => dispatch(toggleScreensharing(false));
|
||||
|
||||
mediaStreamTrack.addEventListener('ended', onEnded);
|
||||
track._onEnded = onEnded;
|
||||
}
|
||||
}
|
||||
|
||||
if (local) {
|
||||
// Reset the no data from src notification state when we change the track, as it's context is set
|
||||
// on a per device basis.
|
||||
@@ -568,6 +583,16 @@ export function trackRemoved(track: any): {
|
||||
track.removeAllListeners(JitsiTrackEvents.TRACK_VIDEOTYPE_CHANGED);
|
||||
track.removeAllListeners(JitsiTrackEvents.NO_DATA_FROM_SOURCE);
|
||||
|
||||
// Remove MediaStreamTrack "ended" event.
|
||||
if (navigator.product === 'ReactNative') {
|
||||
const mediaStreamTrack = track?.getTrack?.();
|
||||
|
||||
if (track._onEnded) {
|
||||
mediaStreamTrack.removeEventListener('ended', track._onEnded);
|
||||
delete track._onEnded;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
type: TRACK_REMOVED,
|
||||
track: {
|
||||
|
||||
Reference in New Issue
Block a user