feat(tracks) Clean up the track if a source addition is rejected. (#10562)
* feat(tracks) Clean up the track if a source addition is rejected. When jicofo rejects a source-add because of sendder limits, dispose and remove the local track from the conference. * chore(deps) update LJM to latest.
This commit is contained in:
parent
5dbf4845fb
commit
700c7c523d
|
@ -2135,6 +2135,8 @@ export default {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
room.on(JitsiConferenceEvents.TRACK_UNMUTE_REJECTED, track => APP.store.dispatch(destroyLocalTracks(track)));
|
||||||
|
|
||||||
room.on(JitsiConferenceEvents.SUBJECT_CHANGED,
|
room.on(JitsiConferenceEvents.SUBJECT_CHANGED,
|
||||||
subject => APP.store.dispatch(conferenceSubjectChanged(subject)));
|
subject => APP.store.dispatch(conferenceSubjectChanged(subject)));
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
"jquery-i18next": "1.2.1",
|
"jquery-i18next": "1.2.1",
|
||||||
"js-md5": "0.6.1",
|
"js-md5": "0.6.1",
|
||||||
"jwt-decode": "2.2.0",
|
"jwt-decode": "2.2.0",
|
||||||
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#161da84ac045afd8ac8eed9168bd708dc0cbedb1",
|
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#8aa35dae401f32a7eafe2b7dec159827c4bb2a84",
|
||||||
"libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d",
|
"libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d",
|
||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"moment": "2.29.1",
|
"moment": "2.29.1",
|
||||||
|
@ -12509,8 +12509,8 @@
|
||||||
},
|
},
|
||||||
"node_modules/lib-jitsi-meet": {
|
"node_modules/lib-jitsi-meet": {
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"resolved": "git+ssh://git@github.com/jitsi/lib-jitsi-meet.git#161da84ac045afd8ac8eed9168bd708dc0cbedb1",
|
"resolved": "git+ssh://git@github.com/jitsi/lib-jitsi-meet.git#8aa35dae401f32a7eafe2b7dec159827c4bb2a84",
|
||||||
"integrity": "sha512-UPQrJjATYSerDZVezRpr+v9OMI94LYwimWyrDUg2Wpr2yfrDnIM90oqn62F9CwsE3QBBBLEZoTUk9K02z2d/Yg==",
|
"integrity": "sha512-i2cP4DaCj4sdf4dFDQTO3FO+Ds6/JgiSvboHj1pBS+L74767qWVhoVjDQ0LO76g+JhVoXECR9MEkr2CGgSKA8Q==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -29978,9 +29978,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lib-jitsi-meet": {
|
"lib-jitsi-meet": {
|
||||||
"version": "git+ssh://git@github.com/jitsi/lib-jitsi-meet.git#161da84ac045afd8ac8eed9168bd708dc0cbedb1",
|
"version": "git+ssh://git@github.com/jitsi/lib-jitsi-meet.git#8aa35dae401f32a7eafe2b7dec159827c4bb2a84",
|
||||||
"integrity": "sha512-UPQrJjATYSerDZVezRpr+v9OMI94LYwimWyrDUg2Wpr2yfrDnIM90oqn62F9CwsE3QBBBLEZoTUk9K02z2d/Yg==",
|
"integrity": "sha512-i2cP4DaCj4sdf4dFDQTO3FO+Ds6/JgiSvboHj1pBS+L74767qWVhoVjDQ0LO76g+JhVoXECR9MEkr2CGgSKA8Q==",
|
||||||
"from": "lib-jitsi-meet@github:jitsi/lib-jitsi-meet#161da84ac045afd8ac8eed9168bd708dc0cbedb1",
|
"from": "lib-jitsi-meet@github:jitsi/lib-jitsi-meet#8aa35dae401f32a7eafe2b7dec159827c4bb2a84",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@jitsi/js-utils": "2.0.0",
|
"@jitsi/js-utils": "2.0.0",
|
||||||
"@jitsi/logger": "2.0.0",
|
"@jitsi/logger": "2.0.0",
|
||||||
|
|
|
@ -70,7 +70,7 @@
|
||||||
"jquery-i18next": "1.2.1",
|
"jquery-i18next": "1.2.1",
|
||||||
"js-md5": "0.6.1",
|
"js-md5": "0.6.1",
|
||||||
"jwt-decode": "2.2.0",
|
"jwt-decode": "2.2.0",
|
||||||
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#161da84ac045afd8ac8eed9168bd708dc0cbedb1",
|
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#8aa35dae401f32a7eafe2b7dec159827c4bb2a84",
|
||||||
"libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d",
|
"libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d",
|
||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"moment": "2.29.1",
|
"moment": "2.29.1",
|
||||||
|
|
|
@ -27,7 +27,13 @@ import {
|
||||||
participantRoleChanged,
|
participantRoleChanged,
|
||||||
participantUpdated
|
participantUpdated
|
||||||
} from '../participants';
|
} from '../participants';
|
||||||
import { getLocalTracks, replaceLocalTrack, trackAdded, trackRemoved } from '../tracks';
|
import {
|
||||||
|
destroyLocalTracks,
|
||||||
|
getLocalTracks,
|
||||||
|
replaceLocalTrack,
|
||||||
|
trackAdded,
|
||||||
|
trackRemoved
|
||||||
|
} from '../tracks';
|
||||||
import { getBackendSafeRoomName } from '../util';
|
import { getBackendSafeRoomName } from '../util';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
@ -181,6 +187,8 @@ function _addConferenceListeners(conference, dispatch, state) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
conference.on(JitsiConferenceEvents.TRACK_UNMUTE_REJECTED, track => dispatch(destroyLocalTracks(track)));
|
||||||
|
|
||||||
// Dispatches into features/base/participants follow:
|
// Dispatches into features/base/participants follow:
|
||||||
conference.on(
|
conference.on(
|
||||||
JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
|
JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
|
||||||
|
|
|
@ -188,12 +188,19 @@ export function createLocalTracksA(options = {}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calls JitsiLocalTrack#dispose() on all local tracks ignoring errors when
|
* Calls JitsiLocalTrack#dispose() on the given track or on all local tracks (if none are passed) ignoring errors if
|
||||||
* track is already disposed. After that signals tracks to be removed.
|
* track is already disposed. After that signals tracks to be removed.
|
||||||
*
|
*
|
||||||
|
* @param {JitsiLocalTrack|null} [track] - The local track that needs to be destroyed.
|
||||||
* @returns {Function}
|
* @returns {Function}
|
||||||
*/
|
*/
|
||||||
export function destroyLocalTracks() {
|
export function destroyLocalTracks(track = null) {
|
||||||
|
if (track) {
|
||||||
|
return dispatch => {
|
||||||
|
dispatch(_disposeAndRemoveTracks([ track ]));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return (dispatch, getState) => {
|
return (dispatch, getState) => {
|
||||||
// First wait until any getUserMedia in progress is settled and then get
|
// First wait until any getUserMedia in progress is settled and then get
|
||||||
// rid of all local tracks.
|
// rid of all local tracks.
|
||||||
|
|
Loading…
Reference in New Issue