// @flow import React from 'react'; import { translate } from '../../../base/i18n'; import { ActionButton, InputField, PreMeetingScreen } from '../../../base/premeeting'; import { LoadingIndicator } from '../../../base/react'; import { connect } from '../../../base/redux'; import AbstractLobbyScreen, { _mapStateToProps } from '../AbstractLobbyScreen'; /** * Implements a waiting screen that represents the participant being in the lobby. */ class LobbyScreen extends AbstractLobbyScreen { /** * Implements {@code PureComponent#render}. * * @inheritdoc */ render() { const { _deviceStatusVisible, showCopyUrlButton, t } = this.props; return ( { this._renderContent() } ); } _getScreenTitleKey: () => string; _onAskToJoin: () => boolean; _onCancel: () => boolean; _onChangeDisplayName: Object => void; _onChangeEmail: Object => void; _onChangePassword: Object => void; _onEnableEdit: () => void; _onJoinWithPassword: () => void; _onSubmit: () => boolean; _onSwitchToKnockMode: () => void; _onSwitchToPasswordMode: () => void; _renderContent: () => React$Element<*>; /** * Renders the joining (waiting) fragment of the screen. * * @inheritdoc */ _renderJoining() { return (
{ this.props.t('lobby.joiningMessage') } { this._renderStandardButtons() }
); } /** * Renders the participant form to let the knocking participant enter its details. * * NOTE: We don't use edit action on web since the prejoin functionality got merged. * Mobile won't use it either once prejoin gets implemented there too. * * @inheritdoc */ _renderParticipantForm() { return this._renderParticipantInfo(); } /** * Renders the participant info fragment when we have all the required details of the user. * * @inheritdoc */ _renderParticipantInfo() { const { displayName } = this.state; const { t } = this.props; return ( ); } /** * Renders the password form to let the participant join by using a password instead of knocking. * * @inheritdoc */ _renderPasswordForm() { const { _passwordJoinFailed, t } = this.props; return ( <> {_passwordJoinFailed &&
{t('lobby.invalidPassword')}
} ); } /** * Renders the password join button (set). * * @inheritdoc */ _renderPasswordJoinButtons() { const { t } = this.props; return ( <> { t('prejoin.joinMeeting') } { t('lobby.backToKnockModeButton') } ); } /** * Renders the standard button set. * * @inheritdoc */ _renderStandardButtons() { const { _knocking, _renderPassword, t } = this.props; return ( <> { _knocking || { t('lobby.knockButton') } } {_renderPassword && { t('lobby.enterPasswordButton') } } ); } } export default translate(connect(_mapStateToProps)(LobbyScreen));