updated TrackProvider to check for soup

This commit is contained in:
Jon 2021-07-09 17:04:18 +01:00
parent d238ad9a7a
commit a558ca069b
1 changed files with 28 additions and 7 deletions

View File

@ -54,19 +54,34 @@ export const TracksProvider = ({ children }) => {
const pauseVideoTrack = useCallback((id) => { const pauseVideoTrack = useCallback((id) => {
// Ignore undefined, local or screenshare // Ignore undefined, local or screenshare
if (!id || isLocalId(id) || isScreenId(id)) return; if (
!id ||
isLocalId(id) ||
isScreenId(id) ||
rtcpeers.getCurrentType() !== 'sfu'
)
return;
if (!rtcpeers.soup.implementationIsAcceptingCalls) { if (!rtcpeers.soup.implementationIsAcceptingCalls) {
return; return;
} }
const consumer = rtcpeers.soup?.findConsumerForTrack(id, 'cam-video'); const consumer = rtcpeers.soup?.findConsumerForTrack(id, 'cam-video');
if (!consumer) return; if (!consumer) {
rtcpeers.soup?.pauseConsumer(consumer); rtcpeers.soup.setResumeOnSubscribeForTrack(id, 'cam-video', false);
} else {
rtcpeers.soup.pauseConsumer(consumer);
}
}, []); }, []);
const resumeVideoTrack = useCallback( const resumeVideoTrack = useCallback(
(id) => { (id) => {
// Ignore undefined, local or screenshare // Ignore undefined, local or screenshare
if (!id || isLocalId(id) || isScreenId(id)) return; if (
!id ||
isLocalId(id) ||
isScreenId(id) ||
rtcpeers.getCurrentType() !== 'sfu'
)
return;
const videoTrack = callObject.participants()?.[id]?.tracks?.video; const videoTrack = callObject.participants()?.[id]?.tracks?.video;
if (!videoTrack?.subscribed) { if (!videoTrack?.subscribed) {
@ -75,12 +90,18 @@ export const TracksProvider = ({ children }) => {
}); });
return; return;
} }
if (!rtcpeers.soup.implementationIsAcceptingCalls) { if (
rtcpeers.getCurrentType() !== 'sfu' ||
!rtcpeers.soup.implementationIsAcceptingCalls
) {
return; return;
} }
const consumer = rtcpeers.soup?.findConsumerForTrack(id, 'cam-video'); const consumer = rtcpeers.soup?.findConsumerForTrack(id, 'cam-video');
if (!consumer) return; if (!consumer) {
rtcpeers.soup?.resumeConsumer(consumer); rtcpeers.soup.setResumeOnSubscribeForTrack(id, 'cam-video', true);
} else {
rtcpeers.soup.resumeConsumer(consumer);
}
}, },
[callObject] [callObject]
); );