Merge pull request #9741 from jfsiebel/prevent-680-error-screen

Show correct screen when user leaves meeting
This commit is contained in:
Anton Georgiev 2020-06-19 13:30:17 -04:00 committed by GitHub
commit 75cd8c2ea3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 10 deletions

View File

@ -7,7 +7,6 @@ import ErrorScreen from '/imports/ui/components/error-screen/component';
import MeetingEnded from '/imports/ui/components/meeting-ended/component';
import LoadingScreen from '/imports/ui/components/loading-screen/component';
import Settings from '/imports/ui/services/settings';
import AudioManager from '/imports/ui/services/audio-manager';
import logger from '/imports/startup/client/logger';
import Users from '/imports/api/users';
import { Session } from 'meteor/session';
@ -161,8 +160,8 @@ class Base extends Component {
const { updateLoadingState } = this;
const stateControls = { updateLoadingState };
const { loading } = this.state;
const codeError = Session.get('codeError');
const {
codeError,
ejected,
meetingExist,
meetingHasEnded,
@ -176,14 +175,12 @@ class Base extends Component {
}
if (ejected) {
AudioManager.exitAudio();
return (<MeetingEnded code="403" />);
}
if (meetingHasEnded && meetingIsBreakout) window.close();
if (((meetingHasEnded && !meetingIsBreakout)) || (codeError && (User && User.loggedOut))) {
AudioManager.exitAudio();
return (<MeetingEnded code={codeError} />);
}
@ -191,10 +188,11 @@ class Base extends Component {
// 680 is set for the codeError when the user requests a logout
if (codeError !== '680') {
logger.error({ logCode: 'startup_client_usercouldnotlogin_error' }, `User could not log in HTML5, hit ${codeError}`);
return (<ErrorScreen code={codeError} />);
}
return (<ErrorScreen code={codeError} />);
return (<MeetingEnded code={codeError} />);
}
// this.props.annotationsHandler.stop();
return (<AppContainer {...this.props} baseControls={stateControls} />);
}
@ -364,6 +362,8 @@ const BaseContainer = withTracker(() => {
Session.set('openPanel', '');
}
const codeError = Session.get('codeError');
return {
approved,
ejected,
@ -379,6 +379,7 @@ const BaseContainer = withTracker(() => {
meetingIsBreakout: AppService.meetingIsBreakout(),
subscriptionsReady: Session.get('subscriptionsReady'),
loggedIn,
codeError,
};
})(Base);

View File

@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import { defineMessages, injectIntl } from 'react-intl';
import { Meteor } from 'meteor/meteor';
import { Session } from 'meteor/session';
import AudioManager from '/imports/ui/services/audio-manager';
import { styles } from './styles';
const intlMessages = defineMessages({
@ -41,6 +42,7 @@ const defaultProps = {
class ErrorScreen extends PureComponent {
componentDidMount() {
AudioManager.exitAudio();
Meteor.disconnect();
}

View File

@ -1,4 +1,4 @@
import React from 'react';
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { defineMessages, injectIntl } from 'react-intl';
import { Meteor } from 'meteor/meteor';
@ -10,6 +10,7 @@ import Rating from './rating/component';
import { styles } from './styles';
import logger from '/imports/startup/client/logger';
import Users from '/imports/api/users';
import AudioManager from '/imports/ui/services/audio-manager';
const intlMessage = defineMessages({
410: {
@ -89,7 +90,7 @@ const propTypes = {
code: PropTypes.string.isRequired,
};
class MeetingEnded extends React.PureComponent {
class MeetingEnded extends PureComponent {
static getComment() {
const textarea = document.getElementById('feedbackComment');
const comment = textarea.value;
@ -110,9 +111,8 @@ class MeetingEnded extends React.PureComponent {
this.setSelectedStar = this.setSelectedStar.bind(this);
this.sendFeedback = this.sendFeedback.bind(this);
this.shouldShowFeedback = getFromUserSettings('bbb_ask_for_feedback_on_logout', Meteor.settings.public.app.askForFeedbackOnLogout);
}
componentDidMount() {
AudioManager.exitAudio();
Meteor.disconnect();
}