|
|
@@ -91,6 +91,12 @@ type Props = {
|
|
91
|
91
|
*/
|
|
92
|
92
|
_fullScreen: boolean,
|
|
93
|
93
|
|
|
|
94
|
+ /**
|
|
|
95
|
+ * Whether or not invite should be hidden, regardless of feature
|
|
|
96
|
+ * availability.
|
|
|
97
|
+ */
|
|
|
98
|
+ _hideInviteButton: boolean,
|
|
|
99
|
+
|
|
94
|
100
|
/**
|
|
95
|
101
|
* Whether or not the conference is currently being recorded by the local
|
|
96
|
102
|
* participant.
|
|
|
@@ -299,9 +305,8 @@ class ToolboxV2 extends Component<Props, State> {
|
|
299
|
305
|
*/
|
|
300
|
306
|
render() {
|
|
301
|
307
|
const {
|
|
302
|
|
- _addPeopleAvailable,
|
|
303
|
308
|
_chatOpen,
|
|
304
|
|
- _dialOutAvailable,
|
|
|
309
|
+ _hideInviteButton,
|
|
305
|
310
|
_raisedHand,
|
|
306
|
311
|
_visible,
|
|
307
|
312
|
t
|
|
|
@@ -349,12 +354,11 @@ class ToolboxV2 extends Component<Props, State> {
|
|
349
|
354
|
</div>
|
|
350
|
355
|
<div className = 'button-group-right'>
|
|
351
|
356
|
{ this._shouldShowButton('invite')
|
|
|
357
|
+ && !_hideInviteButton
|
|
352
|
358
|
&& <ToolbarButtonV2
|
|
353
|
359
|
iconName = 'icon-add'
|
|
354
|
360
|
onClick = { this._onToolbarOpenInvite }
|
|
355
|
|
- tooltip = { _addPeopleAvailable || _dialOutAvailable
|
|
356
|
|
- ? t('addPeople.title')
|
|
357
|
|
- : t('addPeople.notAvailable') } /> }
|
|
|
361
|
+ tooltip = { t('addPeople.title') } /> }
|
|
358
|
362
|
{ this._shouldShowButton('info') && <InfoDialogButton /> }
|
|
359
|
363
|
{ overflowHasItems
|
|
360
|
364
|
&& <OverflowMenuButton
|
|
|
@@ -1070,7 +1074,8 @@ function _mapStateToProps(state) {
|
|
1070
|
1074
|
const {
|
|
1071
|
1075
|
callStatsID,
|
|
1072
|
1076
|
enableRecording,
|
|
1073
|
|
- enableUserRolesBasedOnToken
|
|
|
1077
|
+ enableUserRolesBasedOnToken,
|
|
|
1078
|
+ iAmRecorder
|
|
1074
|
1079
|
} = state['features/base/config'];
|
|
1075
|
1080
|
const { isGuest } = state['features/base/jwt'];
|
|
1076
|
1081
|
const { isRecording, recordingType } = state['features/recording'];
|
|
|
@@ -1085,19 +1090,24 @@ function _mapStateToProps(state) {
|
|
1085
|
1090
|
const localParticipant = getLocalParticipant(state);
|
|
1086
|
1091
|
const localVideo = getLocalVideoTrack(state['features/base/tracks']);
|
|
1087
|
1092
|
const isModerator = localParticipant.role === PARTICIPANT_ROLE.MODERATOR;
|
|
|
1093
|
+ const isAddPeopleAvailable = !isGuest;
|
|
|
1094
|
+ const isDialOutAvailable
|
|
|
1095
|
+ = isModerator
|
|
|
1096
|
+ && conference && conference.isSIPCallingSupported()
|
|
|
1097
|
+ && (!enableUserRolesBasedOnToken || !isGuest);
|
|
1088
|
1098
|
|
|
1089
|
1099
|
return {
|
|
1090
|
|
- _addPeopleAvailable: !isGuest,
|
|
|
1100
|
+ _addPeopleAvailable: isAddPeopleAvailable,
|
|
1091
|
1101
|
_chatOpen: current === 'chat_container',
|
|
1092
|
1102
|
_conference: conference,
|
|
1093
|
1103
|
_desktopSharingEnabled: desktopSharingEnabled,
|
|
1094
|
|
- _dialOutAvailable: isModerator
|
|
1095
|
|
- && conference && conference.isSIPCallingSupported()
|
|
1096
|
|
- && (!enableUserRolesBasedOnToken || !isGuest),
|
|
|
1104
|
+ _dialOutAvailable: isDialOutAvailable,
|
|
1097
|
1105
|
_dialog: Boolean(state['features/base/dialog'].component),
|
|
1098
|
1106
|
_editingDocument: Boolean(state['features/etherpad'].editing),
|
|
1099
|
1107
|
_etherpadInitialized: Boolean(state['features/etherpad'].initialized),
|
|
1100
|
1108
|
_feedbackConfigured: Boolean(callStatsID),
|
|
|
1109
|
+ _hideInviteButton: iAmRecorder
|
|
|
1110
|
+ || (!isAddPeopleAvailable && !isDialOutAvailable),
|
|
1101
|
1111
|
_isRecording: isRecording,
|
|
1102
|
1112
|
_fullScreen: fullScreen,
|
|
1103
|
1113
|
_localParticipantID: localParticipant.id,
|