diff --git a/conference.js b/conference.js index 10a2b9568..b15e2242c 100644 --- a/conference.js +++ b/conference.js @@ -379,13 +379,6 @@ class ConferenceConnector { APP.UI.notifyGracefulShutdown(); break; - case JitsiConferenceErrors.JINGLE_FATAL_ERROR: { - const [ error ] = params; - - APP.UI.notifyInternalError(error); - break; - } - case JitsiConferenceErrors.CONFERENCE_DESTROYED: { const [ reason ] = params; @@ -407,6 +400,7 @@ class ConferenceConnector { case JitsiConferenceErrors.FOCUS_LEFT: case JitsiConferenceErrors.VIDEOBRIDGE_NOT_AVAILABLE: + case JitsiConferenceErrors.OFFER_ANSWER_FAILED: APP.store.dispatch(conferenceWillLeave(room)); // FIXME the conference should be stopped by the library and not by diff --git a/package-lock.json b/package-lock.json index c035a5d84..79930daf5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8946,8 +8946,8 @@ } }, "lib-jitsi-meet": { - "version": "github:jitsi/lib-jitsi-meet#a89d67388f49cc18aae080cb388877380a7664b1", - "from": "github:jitsi/lib-jitsi-meet#a89d67388f49cc18aae080cb388877380a7664b1", + "version": "github:jitsi/lib-jitsi-meet#ee1854c1b12a229f70f351acaebe6686f38f6a85", + "from": "github:jitsi/lib-jitsi-meet#ee1854c1b12a229f70f351acaebe6686f38f6a85", "requires": { "@jitsi/sdp-interop": "0.1.14", "@jitsi/sdp-simulcast": "0.2.1", diff --git a/package.json b/package.json index 172c64ced..6679fac5f 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "js-utils": "github:jitsi/js-utils#73a67a7a60d52f8e895f50939c8fcbd1f20fe7b5", "jsrsasign": "8.0.12", "jwt-decode": "2.2.0", - "lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#a89d67388f49cc18aae080cb388877380a7664b1", + "lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#ee1854c1b12a229f70f351acaebe6686f38f6a85", "libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d", "lodash": "4.17.11", "moment": "2.19.4", diff --git a/react/features/analytics/AnalyticsEvents.js b/react/features/analytics/AnalyticsEvents.js index 997f19df4..ede68310c 100644 --- a/react/features/analytics/AnalyticsEvents.js +++ b/react/features/analytics/AnalyticsEvents.js @@ -271,6 +271,18 @@ export function createInviteDialogEvent( }; } +/** + * Creates an "offer/answer failure" event. + * + * @returns {Object} The event in a format suitable for sending via + * sendAnalytics. + */ +export function createOfferAnswerFailedEvent() { + return { + action: 'offer.answer.failure' + }; +} + /** * Creates a "page reload" event. * diff --git a/react/features/base/conference/middleware.js b/react/features/base/conference/middleware.js index 95e1ca326..fdd25670a 100644 --- a/react/features/base/conference/middleware.js +++ b/react/features/base/conference/middleware.js @@ -6,10 +6,12 @@ import { ACTION_UNPINNED, createAudioOnlyChangedEvent, createConnectionEvent, + createOfferAnswerFailedEvent, createPinnedEvent, sendAnalytics } from '../../analytics'; import { CONNECTION_ESTABLISHED, CONNECTION_FAILED } from '../connection'; +import { JitsiConferenceErrors } from '../lib-jitsi-meet'; import { setVideoMuted, VIDEO_MUTISM_AUTHORITY } from '../media'; import { getLocalParticipant, @@ -152,6 +154,12 @@ StateListenerRegistry.register( function _conferenceFailed(store, next, action) { const result = next(action); + const { conference, error } = action; + + if (error.name === JitsiConferenceErrors.OFFER_ANSWER_FAILED) { + sendAnalytics(createOfferAnswerFailedEvent()); + } + // FIXME: Workaround for the web version. Currently, the creation of the // conference is handled by /conference.js and appropriate failure handlers // are set there. @@ -165,8 +173,6 @@ function _conferenceFailed(store, next, action) { } // XXX After next(action), it is clear whether the error is recoverable. - const { conference, error } = action; - !error.recoverable && conference && conference.leave().catch(reason => { diff --git a/react/features/base/lib-jitsi-meet/functions.js b/react/features/base/lib-jitsi-meet/functions.js index 914f7dc56..bc99e3909 100644 --- a/react/features/base/lib-jitsi-meet/functions.js +++ b/react/features/base/lib-jitsi-meet/functions.js @@ -70,6 +70,7 @@ export function isFatalJitsiConferenceError(error: Object | string) { return ( error === JitsiConferenceErrors.FOCUS_DISCONNECTED || error === JitsiConferenceErrors.FOCUS_LEFT + || error === JitsiConferenceErrors.OFFER_ANSWER_FAILED || error === JitsiConferenceErrors.VIDEOBRIDGE_NOT_AVAILABLE); }