diff --git a/bigbluebutton-html5/imports/startup/client/base.jsx b/bigbluebutton-html5/imports/startup/client/base.jsx
index e254ad8967..e48adc0717 100755
--- a/bigbluebutton-html5/imports/startup/client/base.jsx
+++ b/bigbluebutton-html5/imports/startup/client/base.jsx
@@ -297,7 +297,13 @@ class Base extends Component {
}
if (((meetingHasEnded && !meetingIsBreakout)) || (codeError && User?.loggedOut)) {
- return ();
+ return (
+
+ );
}
if (codeError && !meetingHasEnded) {
diff --git a/bigbluebutton-html5/imports/ui/components/about/component.jsx b/bigbluebutton-html5/imports/ui/components/about/component.jsx
index bd4100e783..8d57730afa 100644
--- a/bigbluebutton-html5/imports/ui/components/about/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/about/component.jsx
@@ -42,7 +42,8 @@ const AboutComponent = ({ intl, clientBuild, copyright }) => (
description: intl.formatMessage(intlMessages.dismissDesc),
}}
>
- {`${intl.formatMessage(intlMessages.copyright)} ${copyright}`}
+ {`${intl.formatMessage(intlMessages.copyright)} ${copyright}`}
+
{`${intl.formatMessage(intlMessages.version)} ${clientBuild}`}
);
diff --git a/bigbluebutton-html5/imports/ui/components/about/container.jsx b/bigbluebutton-html5/imports/ui/components/about/container.jsx
index 6999424fe6..9c843a450f 100644
--- a/bigbluebutton-html5/imports/ui/components/about/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/about/container.jsx
@@ -3,17 +3,20 @@ import { withTracker } from 'meteor/react-meteor-data';
import AboutComponent from './component';
-const AboutContainer = props => (
-
- {props.children}
-
-);
-
-const getClientBuildInfo = function () {
- return {
- clientBuild: Meteor.settings.public.app.html5ClientBuild,
- copyright: Meteor.settings.public.app.copyright,
- };
+const AboutContainer = (props) => {
+ const { children } = props;
+ return (
+
+ {children}
+
+ );
};
+const getClientBuildInfo = () => (
+ {
+ clientBuild: Meteor.settings.public.app.html5ClientBuild,
+ copyright: Meteor.settings.public.app.copyright,
+ }
+);
+
export default withTracker(() => getClientBuildInfo())(AboutContainer);
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx
index 641e448d57..2861c8fb0d 100755
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx
@@ -14,7 +14,9 @@ import { PANELS, ACTIONS } from '../../layout/enums';
const propTypes = {
amIPresenter: PropTypes.bool.isRequired,
- intl: PropTypes.object.isRequired,
+ intl: PropTypes.shape({
+ formatMessage: PropTypes.func.isRequired,
+ }).isRequired,
mountModal: PropTypes.func.isRequired,
amIModerator: PropTypes.bool.isRequired,
shortcuts: PropTypes.string,
@@ -260,7 +262,7 @@ class ActionsDropdown extends PureComponent {
isMeteorConnected,
isDropdownOpen,
sidebarContent,
- sidebarNavigation
+ sidebarNavigation,
} = this.props;
const availableActions = this.getAvailableActions();
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/captions/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/captions/component.jsx
index 3439d84102..b2cae14955 100644
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/captions/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/captions/component.jsx
@@ -6,7 +6,9 @@ import { styles } from '/imports/ui/components/actions-bar/styles';
import Button from '/imports/ui/components/button/component';
const propTypes = {
- intl: PropTypes.object.isRequired,
+ intl: PropTypes.shape({
+ formatMessage: PropTypes.func.isRequired,
+ }).isRequired,
isActive: PropTypes.bool.isRequired,
handleOnClick: PropTypes.func.isRequired,
};
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/captions/container.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/captions/container.jsx
index 4e423f9492..153a7edc21 100644
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/captions/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/captions/container.jsx
@@ -5,7 +5,7 @@ import CaptionsService from '/imports/ui/components/captions/service';
import CaptionsReaderMenuContainer from '/imports/ui/components/actions-bar/captions/reader-menu/container';
import CaptionsButton from './component';
-const CaptionsButtonContainer = props => ;
+const CaptionsButtonContainer = (props) => ;
export default withModalMounter(withTracker(({ mountModal }) => ({
isActive: CaptionsService.isCaptionsActive(),
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/captions/reader-menu/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/captions/reader-menu/component.jsx
index 4bfdcfb6e8..597e5a0127 100644
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/captions/reader-menu/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/captions/reader-menu/component.jsx
@@ -133,22 +133,6 @@ class ReaderMenu extends PureComponent {
this.getPreviewStyle = this.getPreviewStyle.bind(this);
}
- getPreviewStyle() {
- const {
- backgroundColor,
- fontColor,
- fontFamily,
- fontSize,
- } = this.state;
-
- return {
- fontFamily,
- fontSize,
- color: fontColor,
- background: backgroundColor,
- };
- }
-
handleColorPickerClick(fieldname) {
const obj = {};
// eslint-disable-next-line react/destructuring-assignment
@@ -199,6 +183,22 @@ class ReaderMenu extends PureComponent {
closeModal();
}
+ getPreviewStyle() {
+ const {
+ backgroundColor,
+ fontColor,
+ fontFamily,
+ fontSize,
+ } = this.state;
+
+ return {
+ fontFamily,
+ fontSize,
+ color: fontColor,
+ background: backgroundColor,
+ };
+ }
+
render() {
const {
intl,
@@ -255,14 +255,15 @@ class ReaderMenu extends PureComponent {
>
{intl.formatMessage(intlMessages.select)}
- {ownedLocales.map(loc => (
+ {ownedLocales.map((loc) => (
))}
+
+ ))}
@@ -275,25 +276,34 @@ class ReaderMenu extends PureComponent {
tabIndex={DEFAULT_INDEX}
className={styles.swatch}
onClick={this.handleColorPickerClick.bind(this, 'displayFontColorPicker')}
+ onKeyPress={() => { }}
+ role="button"
>
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/captions/reader-menu/container.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/captions/reader-menu/container.jsx
index 1fa6b35ea3..ff8e82d702 100644
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/captions/reader-menu/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/captions/reader-menu/container.jsx
@@ -4,7 +4,7 @@ import { withModalMounter } from '/imports/ui/components/modal/service';
import ReaderMenu from './component';
import CaptionsService from '/imports/ui/components/captions/service';
-const ReaderMenuContainer = props =>
;
+const ReaderMenuContainer = (props) =>
;
export default withModalMounter(withTracker(({ mountModal }) => ({
closeModal: () => mountModal(null),
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/component.jsx
index 9e23eb686c..c08fd1f793 100755
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/component.jsx
@@ -217,14 +217,49 @@ class BreakoutRoom extends PureComponent {
}
}
+ componentDidUpdate(prevProps, prevstate) {
+ if (this.listOfUsers) {
+ for (let i = 0; i < this.listOfUsers.children.length; i += 1) {
+ const roomList = this.listOfUsers.children[i].getElementsByTagName('div')[0];
+ roomList.addEventListener('keydown', this.handleMoveEvent, true);
+ }
+ }
+
+ const { numberOfRooms } = this.state;
+ const { users } = this.props;
+ const { users: prevUsers } = prevProps;
+ if (numberOfRooms < prevstate.numberOfRooms) {
+ this.resetUserWhenRoomsChange(numberOfRooms);
+ }
+ const usersCount = users.length;
+ const prevUsersCount = prevUsers.length;
+ if (usersCount > prevUsersCount) {
+ this.setRoomUsers();
+ }
+
+ if (usersCount < prevUsersCount) {
+ this.removeRoomUsers();
+ }
+ }
+
+ componentWillUnmount() {
+ if (this.listOfUsers) {
+ for (let i = 0; i < this.listOfUsers.children.length; i += 1) {
+ const roomList = this.listOfUsers.children[i].getElementsByTagName('div')[0];
+ roomList.removeEventListener('keydown', this.handleMoveEvent, true);
+ }
+ }
+ this.handleDismiss();
+ }
+
handleShiftUser(activeListSibling) {
const { users } = this.state;
if (activeListSibling) {
const text = activeListSibling.getElementsByTagName('p')[0].innerText;
const roomNumber = text.match(/\d/g).join('');
- users.forEach((u) => {
+ users.forEach((u, index) => {
if (u.userId === document.activeElement.id) {
- u.room = text.substr(text.length - 1).includes(')') ? 0 : parseInt(roomNumber);
+ users[index].room = text.substr(text.length - 1).includes(')') ? 0 : parseInt(roomNumber, 10);
}
});
}
@@ -278,41 +313,19 @@ class BreakoutRoom extends PureComponent {
this.setRoomUsers();
}
+ return true;
}
- componentWillUnmount() {
- if (this.listOfUsers) {
- for (let i = 0; i < this.listOfUsers.children.length; i++) {
- const roomList = this.listOfUsers.children[i].getElementsByTagName('div')[0];
- roomList.removeEventListener('keydown', this.handleMoveEvent, true);
- }
- }
- this.handleDismiss();
- }
+ handleDismiss() {
+ const { mountModal } = this.props;
- componentDidUpdate(prevProps, prevstate) {
- if (this.listOfUsers) {
- for (let i = 0; i < this.listOfUsers.children.length; i++) {
- const roomList = this.listOfUsers.children[i].getElementsByTagName('div')[0];
- roomList.addEventListener('keydown', this.handleMoveEvent, true);
- }
- }
+ return new Promise((resolve) => {
+ mountModal(null);
- const { numberOfRooms } = this.state;
- const { users } = this.props;
- const { users: prevUsers } = prevProps;
- if (numberOfRooms < prevstate.numberOfRooms) {
- this.resetUserWhenRoomsChange(numberOfRooms);
- }
- const usersCount = users.length;
- const prevUsersCount = prevUsers.length;
- if (usersCount > prevUsersCount) {
- this.setRoomUsers();
- }
-
- if (usersCount < prevUsersCount) {
- this.removeRoomUsers();
- }
+ this.setState({
+ preventClosing: false,
+ }, resolve);
+ });
}
onCreateBreakouts() {
@@ -349,7 +362,8 @@ class BreakoutRoom extends PureComponent {
return;
}
- const emptyNames = _.range(1, numberOfRooms + 1).filter((n) => this.getRoomName(n).length === 0);
+ const emptyNames = _.range(1, numberOfRooms + 1)
+ .filter((n) => this.getRoomName(n).length === 0);
if (emptyNames.length > 0) {
this.setState({ roomNameEmptyIsValid: false });
return;
@@ -456,27 +470,21 @@ class BreakoutRoom extends PureComponent {
return breakoutJoinedUsers.filter((room) => room.sequence === sequence)[0].joinedUsers || [];
}
- removeRoomUsers() {
- const { users } = this.props;
- const { users: stateUsers } = this.state;
- const userIds = users.map((user) => user.userId);
- const removeUsers = stateUsers.filter((user) => userIds.includes(user.userId));
+ getRoomName(position) {
+ const { intl } = this.props;
+ const { roomNamesChanged } = this.state;
- this.setState({
- users: removeUsers,
- });
+ if (this.hasNameChanged(position)) {
+ return roomNamesChanged[position];
+ }
+
+ return intl.formatMessage(intlMessages.breakoutRoom, { 0: position });
}
- handleDismiss() {
- const { mountModal } = this.props;
+ getFullName(position) {
+ const { meetingName } = this.props;
- return new Promise((resolve) => {
- mountModal(null);
-
- this.setState({
- preventClosing: false,
- }, resolve);
- });
+ return `${meetingName} (${this.getRoomName(position)})`;
}
resetUserWhenRoomsChange(rooms) {
@@ -537,21 +545,15 @@ class BreakoutRoom extends PureComponent {
});
}
- getRoomName(position) {
- const { intl } = this.props;
- const { roomNamesChanged } = this.state;
+ removeRoomUsers() {
+ const { users } = this.props;
+ const { users: stateUsers } = this.state;
+ const userIds = users.map((user) => user.userId);
+ const removeUsers = stateUsers.filter((user) => userIds.includes(user.userId));
- if (this.hasNameChanged(position)) {
- return roomNamesChanged[position];
- }
-
- return intl.formatMessage(intlMessages.breakoutRoom, { 0: position });
- }
-
- getFullName(position) {
- const { meetingName } = this.props;
-
- return `${meetingName} (${this.getRoomName(position)})`;
+ this.setState({
+ users: removeUsers,
+ });
}
hasNameChanged(position) {
@@ -559,11 +561,11 @@ class BreakoutRoom extends PureComponent {
const { roomNamesChanged } = this.state;
if (typeof roomNamesChanged[position] !== 'undefined'
- && roomNamesChanged[position] !== intl.formatMessage(intlMessages.breakoutRoom, { 0: position })) {
+ && roomNamesChanged[position] !== intl
+ .formatMessage(intlMessages.breakoutRoom, { 0: position })) {
return true;
- } else {
- return false;
}
+ return false;
}
hasNameDuplicated(position) {
@@ -599,7 +601,7 @@ class BreakoutRoom extends PureComponent {
};
const changeRoomName = (position) => (ev) => {
- let newRoomsNames = [...roomNamesChanged];
+ const newRoomsNames = [...roomNamesChanged];
newRoomsNames[position] = ev.target.value;
this.setState({
@@ -610,17 +612,19 @@ class BreakoutRoom extends PureComponent {
};
return (
-
this.listOfUsers = r}>
+
{ this.listOfUsers = r; }}>
-
+
{this.renderUserItemByRoom(0)}
@@ -643,20 +647,20 @@ class BreakoutRoom extends PureComponent {
aria-label={intl.formatMessage(intlMessages.duration)}
/>
-
+
{this.renderUserItemByRoom(value)}
{isInvitation && this.renderJoinedUsers(value)}
- { this.hasNameDuplicated(value) ? (
+ {this.hasNameDuplicated(value) ? (
{intl.formatMessage(intlMessages.roomNameDuplicatedIsValid)}
- ) : null }
- { this.getRoomName(value).length === 0 ? (
+ ) : null}
+ {this.getRoomName(value).length === 0 ? (
{intl.formatMessage(intlMessages.roomNameEmptyIsValid)}
- ) : null }
+ ) : null}
))
}
@@ -754,7 +758,12 @@ class BreakoutRoom extends PureComponent {
- {intl.formatMessage(intlMessages.minimumDurationWarnBreakout, { 0: MIN_BREAKOUT_TIME })}
+ {
+ intl.formatMessage(
+ intlMessages.minimumDurationWarnBreakout,
+ { 0: MIN_BREAKOUT_TIME },
+ )
+ }
@@ -862,7 +871,6 @@ class BreakoutRoom extends PureComponent {
return this.getUserByRoom(room)
.map((user) => (
- {intl.formatMessage(intlMessages.roomNameDuplicatedIsValid)}
-
+
+ {intl.formatMessage(intlMessages.roomNameDuplicatedIsValid)}
+
)}
{!roomNameEmptyIsValid
&& (
-
- {intl.formatMessage(intlMessages.roomNameEmptyIsValid)}
-
+
+ {intl.formatMessage(intlMessages.roomNameEmptyIsValid)}
+
)}
>
);
@@ -1048,11 +1056,11 @@ class BreakoutRoom extends PureComponent {
: intl.formatMessage(intlMessages.confirmButton),
callback: isInvitation ? this.onInviteBreakout : this.onCreateBreakouts,
disabled: !leastOneUserIsValid
- || !numberOfRoomsIsValid
- || !roomNameDuplicatedIsValid
- || !roomNameEmptyIsValid
- || !durationIsValid
- ,
+ || !numberOfRoomsIsValid
+ || !roomNameDuplicatedIsValid
+ || !roomNameEmptyIsValid
+ || !durationIsValid
+ ,
}
}
dismiss={{
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/container.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/container.jsx
index 9c2ae36945..d6e5b4445b 100644
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/container.jsx
@@ -4,12 +4,15 @@ import ActionsBarService from '/imports/ui/components/actions-bar/service';
import CreateBreakoutRoomModal from './component';
-const CreateBreakoutRoomContainer = (props) => (
- props.amIModerator
- && (
-
- )
-);
+const CreateBreakoutRoomContainer = (props) => {
+ const { amIModerator } = props;
+ return (
+ amIModerator
+ && (
+
+ )
+ );
+};
export default withTracker(() => ({
createBreakoutRoom: ActionsBarService.createBreakoutRoom,
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/sort-user-list/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/sort-user-list/component.jsx
index 92c77b4162..39977e4a3f 100644
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/sort-user-list/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/sort-user-list/component.jsx
@@ -13,8 +13,8 @@ const propTypes = {
};
const defaultProps = {
- onCheck: () => {},
- onUncheck: () => {},
+ onCheck: () => { },
+ onUncheck: () => { },
};
const intlMessages = defineMessages({
@@ -99,7 +99,8 @@ class SortUsers extends Component {
{user.userName}
{user.room && !(user.room === room) ? `\t[${user.room}]` : ''}
-
));
+
+ ));
}
renderJoinedUserItem() {
@@ -107,19 +108,19 @@ class SortUsers extends Component {
if (!joinedUsers.length) return null;
return joinedUsers
- .map(b => b.joinedUsers.map(u => ({ ...u, room: b.sequence })))
+ .map((b) => b.joinedUsers.map((u) => ({ ...u, room: b.sequence })))
.flat()
- .map(user => (
+ .map((user) => (
{user.name}
{`\t[${user.room}]`}
-
));
+
+ ));
}
-
render() {
const {
intl,
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/presentation-options/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/presentation-options/component.jsx
index e7f813ce78..4c180e632e 100755
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/presentation-options/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/presentation-options/component.jsx
@@ -5,7 +5,9 @@ import Button from '/imports/ui/components/button/component';
import MediaService from '/imports/ui/components/media/service';
const propTypes = {
- intl: PropTypes.object.isRequired,
+ intl: PropTypes.shape({
+ formatMessage: PropTypes.func.isRequired,
+ }).isRequired,
toggleSwapLayout: PropTypes.func.isRequired,
};
@@ -20,13 +22,15 @@ const intlMessages = defineMessages({
},
});
-const shouldUnswapLayout = () => MediaService.shouldShowScreenshare() || MediaService.shouldShowExternalVideo();
+const shouldUnswapLayout = () => (
+ MediaService.shouldShowScreenshare() || MediaService.shouldShowExternalVideo()
+);
const PresentationOptionsContainer = ({
intl,
toggleSwapLayout,
isThereCurrentPresentation,
- layoutContextDispatch
+ layoutContextDispatch,
}) => {
if (shouldUnswapLayout()) toggleSwapLayout();
return (
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/quick-poll-dropdown/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/quick-poll-dropdown/component.jsx
index 9f5978de44..bdef582c93 100644
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/quick-poll-dropdown/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/quick-poll-dropdown/component.jsx
@@ -58,21 +58,23 @@ const handleClickQuickPoll = (layoutContextDispatch) => {
Session.set('pollInitiated', true);
};
-const getAvailableQuickPolls = (slideId, parsedSlides, startPoll, pollTypes, layoutContextDispatch) => {
+const getAvailableQuickPolls = (
+ slideId, parsedSlides, startPoll, pollTypes, layoutContextDispatch,
+) => {
const pollItemElements = parsedSlides.map((poll) => {
const { poll: label } = poll;
- let { type } = poll;
+ const { type } = poll;
let itemLabel = label;
- let letterAnswers = [];
+ const letterAnswers = [];
- if (type !== pollTypes.YesNo &&
- type !== pollTypes.YesNoAbstention &&
- type !== pollTypes.TrueFalse) {
+ if (type !== pollTypes.YesNo
+ && type !== pollTypes.YesNoAbstention
+ && type !== pollTypes.TrueFalse) {
const { options } = itemLabel;
itemLabel = options.join('/').replace(/[\n.)]/g, '');
if (type === pollTypes.Custom) {
- for (const option of options) {
- const letterOption = option.replace(/[\r.)]/g, '');
+ for (let i = 0; i < options.length; i += 1) {
+ const letterOption = options[i].replace(/[\r.)]/g, '');
if (letterAnswers.length < MAX_CUSTOM_FIELDS) {
letterAnswers.push(letterOption);
} else {
@@ -138,7 +140,9 @@ class QuickPollDropdown extends Component {
);
const { slideId, quickPollOptions } = parsedSlide;
- const quickPolls = getAvailableQuickPolls(slideId, quickPollOptions, startPoll, pollTypes, layoutContextDispatch);
+ const quickPolls = getAvailableQuickPolls(
+ slideId, quickPollOptions, startPoll, pollTypes, layoutContextDispatch,
+ );
if (quickPollOptions.length === 0) return null;
@@ -209,7 +213,6 @@ class QuickPollDropdown extends Component {
}
}
-
QuickPollDropdown.propTypes = propTypes;
export default QuickPollDropdown;
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/screenshare/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/screenshare/component.jsx
index 220b1aed10..8189e8a5e5 100755
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/screenshare/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/screenshare/component.jsx
@@ -112,7 +112,7 @@ const getErrorLocale = (errorCode) => {
default:
return intlMessages.retryError;
}
-}
+};
const ScreenshareButton = ({
intl,
@@ -128,7 +128,7 @@ const ScreenshareButton = ({
const handleFailure = (error) => {
const {
errorCode = SCREENSHARING_ERRORS.UNKNOWN_ERROR.errorCode,
- errorMessage
+ errorMessage,
} = error;
logger.error({
@@ -141,22 +141,20 @@ const ScreenshareButton = ({
screenshareHasEnded();
};
- const renderScreenshareUnavailableModal = () => {
- return mountModal(
-
mountModal(null)}
- hideBorder
- contentLabel={intl.formatMessage(intlMessages.screenShareUnavailable)}
- >
-
- {intl.formatMessage(intlMessages.screenShareUnavailable)}
-
- {intl.formatMessage(intlMessages.screenShareNotSupported)}
-
- )
- };
+ const renderScreenshareUnavailableModal = () => mountModal(
+
mountModal(null)}
+ hideBorder
+ contentLabel={intl.formatMessage(intlMessages.screenShareUnavailable)}
+ >
+
+ {intl.formatMessage(intlMessages.screenShareUnavailable)}
+
+ {intl.formatMessage(intlMessages.screenShareNotSupported)}
+ ,
+ );
const screenshareLocked = screenshareDataSavingSetting
? intlMessages.desktopShareLabel : intlMessages.lockedDesktopShareLabel;
@@ -192,8 +190,7 @@ const ScreenshareButton = ({
} else {
shareScreen(handleFailure);
}
- }
- }
+ }}
id={isVideoBroadcasting ? 'unshare-screen-button' : 'share-screen-button'}
/>
) : null;
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/screenshare/container.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/screenshare/container.jsx
index 5e100fd6f4..f39899f22d 100644
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/screenshare/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/screenshare/container.jsx
@@ -8,7 +8,7 @@ import {
dataSavingSetting,
} from '/imports/ui/components/screenshare/service';
-const ScreenshareButtonContainer = props =>
;
+const ScreenshareButtonContainer = (props) =>
;
/*
* All props, including the ones that are inherited from actions-bar
@@ -18,11 +18,11 @@ const ScreenshareButtonContainer = props =>
;
* isMeteorConnected,
* screenshareDataSavingSetting,
*/
-export default withModalMounter(withTracker(({ mountModal }) => ({
+export default withModalMounter(withTracker(() => ({
isVideoBroadcasting: isVideoBroadcasting(),
screenshareDataSavingSetting: dataSavingSetting(),
enabled: getFromUserSettings(
'bbb_enable_screen_sharing',
- Meteor.settings.public.kurento.enableScreensharing
+ Meteor.settings.public.kurento.enableScreensharing,
),
}))(ScreenshareButtonContainer));
diff --git a/bigbluebutton-html5/imports/ui/components/activity-check/component.jsx b/bigbluebutton-html5/imports/ui/components/activity-check/component.jsx
index 5f027d3801..df6f556725 100644
--- a/bigbluebutton-html5/imports/ui/components/activity-check/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/activity-check/component.jsx
@@ -6,11 +6,13 @@ import Button from '/imports/ui/components/button/component';
import Modal from '/imports/ui/components/modal/simple/component';
import { makeCall } from '/imports/ui/services/api';
+import { Meteor } from 'meteor/meteor';
import { styles } from './styles';
-import { Meteor } from "meteor/meteor";
const propTypes = {
- intl: PropTypes.object.isRequired,
+ intl: PropTypes.shape({
+ formatMessage: PropTypes.func.isRequired,
+ }).isRequired,
responseDelay: PropTypes.number.isRequired,
};
@@ -64,7 +66,7 @@ class ActivityCheck extends Component {
const { responseDelay } = this.state;
return setInterval(() => {
- if(responseDelay == 0) return;
+ if (responseDelay === 0) return;
const remainingTime = responseDelay - 1;
diff --git a/bigbluebutton-html5/imports/ui/components/activity-check/container.jsx b/bigbluebutton-html5/imports/ui/components/activity-check/container.jsx
index 1bc6a83944..740b7b0e6e 100644
--- a/bigbluebutton-html5/imports/ui/components/activity-check/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/activity-check/container.jsx
@@ -2,6 +2,6 @@ import React from 'react';
import { injectIntl } from 'react-intl';
import ActivityCheck from './component';
-const ActivityCheckContainer = props =>
;
+const ActivityCheckContainer = (props) =>
;
export default injectIntl(ActivityCheckContainer);
diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx
index aed2c2f383..2e6bda4c36 100755
--- a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx
@@ -84,33 +84,40 @@ const {
joinListenOnly,
} = Service;
-export default withUsersConsumer(lockContextContainer(withModalMounter(withTracker(({ mountModal, userLocks, users }) => {
- const currentUser = users[Auth.meetingID][Auth.userID];
- const isViewer = currentUser.role === ROLE_VIEWER;
- const isPresenter = currentUser.presenter;
- const { status } = Service.getBreakoutAudioTransferStatus();
+export default withUsersConsumer(
+ lockContextContainer(
+ withModalMounter(withTracker(({ mountModal, userLocks, users }) => {
+ const currentUser = users[Auth.meetingID][Auth.userID];
+ const isViewer = currentUser.role === ROLE_VIEWER;
+ const isPresenter = currentUser.presenter;
+ const { status } = Service.getBreakoutAudioTransferStatus();
- if (status === AudioManager.BREAKOUT_AUDIO_TRANSFER_STATES.RETURNING) {
- Service.setBreakoutAudioTransferStatus({
- status: AudioManager.BREAKOUT_AUDIO_TRANSFER_STATES.DISCONNECTED,
- });
- Service.recoverMicState();
- }
+ if (status === AudioManager.BREAKOUT_AUDIO_TRANSFER_STATES.RETURNING) {
+ Service.setBreakoutAudioTransferStatus({
+ status: AudioManager.BREAKOUT_AUDIO_TRANSFER_STATES.DISCONNECTED,
+ });
+ Service.recoverMicState();
+ }
- return ({
- processToggleMuteFromOutside: (arg) => processToggleMuteFromOutside(arg),
- showMute: isConnected() && !isListenOnly() && !isEchoTest() && !userLocks.userMic,
- muted: isConnected() && !isListenOnly() && isMuted(),
- inAudio: isConnected() && !isEchoTest(),
- listenOnly: isConnected() && isListenOnly(),
- disable: isConnecting() || isHangingUp() || !Meteor.status().connected,
- talking: isTalking() && !isMuted(),
- isVoiceUser: isVoiceUser(),
- handleToggleMuteMicrophone: () => toggleMuteMicrophone(),
- handleJoinAudio: () => (isConnected() ? joinListenOnly() : mountModal(
)),
- handleLeaveAudio,
- inputStream: AudioManager.inputStream,
- isViewer,
- isPresenter,
- });
-})(AudioControlsContainer))));
+ return ({
+ processToggleMuteFromOutside: (arg) => processToggleMuteFromOutside(arg),
+ showMute: isConnected() && !isListenOnly() && !isEchoTest() && !userLocks.userMic,
+ muted: isConnected() && !isListenOnly() && isMuted(),
+ inAudio: isConnected() && !isEchoTest(),
+ listenOnly: isConnected() && isListenOnly(),
+ disable: isConnecting() || isHangingUp() || !Meteor.status().connected,
+ talking: isTalking() && !isMuted(),
+ isVoiceUser: isVoiceUser(),
+ handleToggleMuteMicrophone: () => toggleMuteMicrophone(),
+ handleJoinAudio: () => (isConnected()
+ ? joinListenOnly()
+ : mountModal(
)
+ ),
+ handleLeaveAudio,
+ inputStream: AudioManager.inputStream,
+ isViewer,
+ isPresenter,
+ });
+ })(AudioControlsContainer)),
+ ),
+);
diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/input-stream-live-selector/component.jsx b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/input-stream-live-selector/component.jsx
index 9fa34bdd4e..bf9591c2d3 100644
--- a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/input-stream-live-selector/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/input-stream-live-selector/component.jsx
@@ -315,7 +315,9 @@ class InputStreamLiveSelector extends Component {
-
+
{dropdownListComplete}
diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-dial/component.jsx b/bigbluebutton-html5/imports/ui/components/audio/audio-dial/component.jsx
index 829a17c386..b9ffa784f9 100644
--- a/bigbluebutton-html5/imports/ui/components/audio/audio-dial/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/audio/audio-dial/component.jsx
@@ -23,7 +23,9 @@ const intlMessages = defineMessages({
});
const propTypes = {
- intl: PropTypes.object.isRequired,
+ intl: PropTypes.shape({
+ formatMessage: PropTypes.func.isRequired,
+ }).isRequired,
formattedDialNum: PropTypes.string.isRequired,
telVoice: PropTypes.string.isRequired,
};
diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-modal/component.jsx b/bigbluebutton-html5/imports/ui/components/audio/audio-modal/component.jsx
index 9a738ef234..bb890014bb 100755
--- a/bigbluebutton-html5/imports/ui/components/audio/audio-modal/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/audio/audio-modal/component.jsx
@@ -16,7 +16,9 @@ import AudioDial from '../audio-dial/component';
import AudioAutoplayPrompt from '../autoplay/component';
const propTypes = {
- intl: PropTypes.object.isRequired,
+ intl: PropTypes.shape({
+ formatMessage: PropTypes.func.isRequired,
+ }).isRequired,
closeModal: PropTypes.func.isRequired,
joinMicrophone: PropTypes.func.isRequired,
joinListenOnly: PropTypes.func.isRequired,
@@ -173,13 +175,18 @@ class AudioModal extends Component {
if (joinFullAudioImmediately && !listenOnlyMode) return this.handleJoinMicrophone();
}
+ return false;
}
componentDidUpdate(prevProps) {
const { autoplayBlocked, closeModal } = this.props;
if (autoplayBlocked !== prevProps.autoplayBlocked) {
- autoplayBlocked ? this.setState({ content: 'autoplayBlocked' }) : closeModal();
+ if (autoplayBlocked) {
+ this.setContent('autoplayBlocked');
+ } else {
+ closeModal();
+ }
}
}
@@ -244,7 +251,7 @@ class AudioModal extends Component {
disableActions,
} = this.state;
- if (disableActions && isConnecting) return;
+ if (disableActions && isConnecting) return null;
this.setState({
hasError: false,
@@ -292,7 +299,7 @@ class AudioModal extends Component {
disableActions,
} = this.state;
- if (disableActions && isConnecting) return;
+ if (disableActions && isConnecting) return null;
this.setState({
disableActions: true,
@@ -335,6 +342,10 @@ class AudioModal extends Component {
}).catch(this.handleGoToAudioOptions);
}
+ setContent(content) {
+ this.setState(content);
+ }
+
skipAudioOptions() {
const {
isConnecting,
@@ -377,7 +388,11 @@ class AudioModal extends Component {
circle
size="jumbo"
disabled={audioLocked}
- onClick={joinFullAudioImmediately ? this.handleJoinMicrophone : this.handleGoToEchoTest}
+ onClick={
+ joinFullAudioImmediately
+ ? this.handleJoinMicrophone
+ : this.handleGoToEchoTest
+ }
/>
)
: null}
@@ -430,16 +445,18 @@ class AudioModal extends Component {
{intl.formatMessage(intlMessages.iOSErrorRecommendation)}
-
);
+
+ );
}
if (this.skipAudioOptions()) {
return (