|
|
@@ -6,10 +6,12 @@ import {
|
|
6
|
6
|
ACTION_UNPINNED,
|
|
7
|
7
|
createAudioOnlyChangedEvent,
|
|
8
|
8
|
createConnectionEvent,
|
|
|
9
|
+ createOfferAnswerFailedEvent,
|
|
9
|
10
|
createPinnedEvent,
|
|
10
|
11
|
sendAnalytics
|
|
11
|
12
|
} from '../../analytics';
|
|
12
|
13
|
import { CONNECTION_ESTABLISHED, CONNECTION_FAILED } from '../connection';
|
|
|
14
|
+import { JitsiConferenceErrors } from '../lib-jitsi-meet';
|
|
13
|
15
|
import { setVideoMuted, VIDEO_MUTISM_AUTHORITY } from '../media';
|
|
14
|
16
|
import {
|
|
15
|
17
|
getLocalParticipant,
|
|
|
@@ -152,6 +154,12 @@ StateListenerRegistry.register(
|
|
152
|
154
|
function _conferenceFailed(store, next, action) {
|
|
153
|
155
|
const result = next(action);
|
|
154
|
156
|
|
|
|
157
|
+ const { conference, error } = action;
|
|
|
158
|
+
|
|
|
159
|
+ if (error.name === JitsiConferenceErrors.OFFER_ANSWER_FAILED) {
|
|
|
160
|
+ sendAnalytics(createOfferAnswerFailedEvent());
|
|
|
161
|
+ }
|
|
|
162
|
+
|
|
155
|
163
|
// FIXME: Workaround for the web version. Currently, the creation of the
|
|
156
|
164
|
// conference is handled by /conference.js and appropriate failure handlers
|
|
157
|
165
|
// are set there.
|
|
|
@@ -165,8 +173,6 @@ function _conferenceFailed(store, next, action) {
|
|
165
|
173
|
}
|
|
166
|
174
|
|
|
167
|
175
|
// XXX After next(action), it is clear whether the error is recoverable.
|
|
168
|
|
- const { conference, error } = action;
|
|
169
|
|
-
|
|
170
|
176
|
!error.recoverable
|
|
171
|
177
|
&& conference
|
|
172
|
178
|
&& conference.leave().catch(reason => {
|