|
@@ -7,7 +7,7 @@ import { getRoomName } from '../../base/conference';
|
7
|
7
|
import { translate } from '../../base/i18n';
|
8
|
8
|
import { Icon, IconPhone, IconVolumeOff } from '../../base/icons';
|
9
|
9
|
import { isVideoMutedByUser } from '../../base/media';
|
10
|
|
-import { ActionButton, InputField, PreMeetingScreen } from '../../base/premeeting';
|
|
10
|
+import { ActionButton, InputField, PreMeetingScreen, ToggleButton } from '../../base/premeeting';
|
11
|
11
|
import { connect } from '../../base/redux';
|
12
|
12
|
import { getDisplayName, updateSettings } from '../../base/settings';
|
13
|
13
|
import { getLocalJitsiVideoTrack } from '../../base/tracks';
|
|
@@ -21,7 +21,8 @@ import {
|
21
|
21
|
isDeviceStatusVisible,
|
22
|
22
|
isDisplayNameRequired,
|
23
|
23
|
isJoinByPhoneButtonVisible,
|
24
|
|
- isJoinByPhoneDialogVisible
|
|
24
|
+ isJoinByPhoneDialogVisible,
|
|
25
|
+ isPrejoinSkipped
|
25
|
26
|
} from '../functions';
|
26
|
27
|
|
27
|
28
|
import JoinByPhoneDialog from './dialogs/JoinByPhoneDialog';
|
|
@@ -29,6 +30,11 @@ import DeviceStatus from './preview/DeviceStatus';
|
29
|
30
|
|
30
|
31
|
type Props = {
|
31
|
32
|
|
|
33
|
+ /**
|
|
34
|
+ * Flag signaling if the 'skip prejoin' button is toggled or not.
|
|
35
|
+ */
|
|
36
|
+ buttonIsToggled: boolean,
|
|
37
|
+
|
32
|
38
|
/**
|
33
|
39
|
* Flag signaling if the device status is visible or not.
|
34
|
40
|
*/
|
|
@@ -145,22 +151,22 @@ class Prejoin extends Component<Props, State> {
|
145
|
151
|
|
146
|
152
|
this._closeDialog = this._closeDialog.bind(this);
|
147
|
153
|
this._showDialog = this._showDialog.bind(this);
|
148
|
|
- this._onCheckboxChange = this._onCheckboxChange.bind(this);
|
|
154
|
+ this._onToggleButtonClick = this._onToggleButtonClick.bind(this);
|
149
|
155
|
this._onDropdownClose = this._onDropdownClose.bind(this);
|
150
|
156
|
this._onOptionsClick = this._onOptionsClick.bind(this);
|
151
|
157
|
this._setName = this._setName.bind(this);
|
152
|
158
|
}
|
153
|
159
|
|
154
|
|
- _onCheckboxChange: () => void;
|
|
160
|
+ _onToggleButtonClick: () => void;
|
155
|
161
|
|
156
|
162
|
/**
|
157
|
|
- * Handler for the checkbox.
|
|
163
|
+ * Handler for the toggle button.
|
158
|
164
|
*
|
159
|
165
|
* @param {Object} e - The synthetic event.
|
160
|
166
|
* @returns {void}
|
161
|
167
|
*/
|
162
|
|
- _onCheckboxChange(e) {
|
163
|
|
- this.props.setSkipPrejoin(e.target.checked);
|
|
168
|
+ _onToggleButtonClick() {
|
|
169
|
+ this.props.setSkipPrejoin(!this.props.buttonIsToggled);
|
164
|
170
|
}
|
165
|
171
|
|
166
|
172
|
_onDropdownClose: () => void;
|
|
@@ -250,7 +256,7 @@ class Prejoin extends Component<Props, State> {
|
250
|
256
|
videoTrack
|
251
|
257
|
} = this.props;
|
252
|
258
|
|
253
|
|
- const { _closeDialog, _onCheckboxChange, _onDropdownClose, _onOptionsClick, _setName, _showDialog } = this;
|
|
259
|
+ const { _closeDialog, _onDropdownClose, _onOptionsClick, _setName, _showDialog } = this;
|
254
|
260
|
const { showJoinByPhoneButtons } = this.state;
|
255
|
261
|
|
256
|
262
|
return (
|
|
@@ -259,6 +265,7 @@ class Prejoin extends Component<Props, State> {
|
259
|
265
|
name = { name }
|
260
|
266
|
showAvatar = { showAvatar }
|
261
|
267
|
showConferenceInfo = { showJoinActions }
|
|
268
|
+ skipPrejoinButton = { this._renderSkipPrejoinButton() }
|
262
|
269
|
title = { t('prejoin.joinMeeting') }
|
263
|
270
|
videoMuted = { !showCameraPreview }
|
264
|
271
|
videoTrack = { videoTrack }>
|
|
@@ -306,14 +313,6 @@ class Prejoin extends Component<Props, State> {
|
306
|
313
|
</InlineDialog>
|
307
|
314
|
</div>
|
308
|
315
|
</div>
|
309
|
|
-
|
310
|
|
- <div className = 'prejoin-checkbox-container'>
|
311
|
|
- <input
|
312
|
|
- className = 'prejoin-checkbox'
|
313
|
|
- onChange = { _onCheckboxChange }
|
314
|
|
- type = 'checkbox' />
|
315
|
|
- <span>{t('prejoin.doNotShow')}</span>
|
316
|
|
- </div>
|
317
|
316
|
</div>
|
318
|
317
|
)}
|
319
|
318
|
{ showDialog && (
|
|
@@ -333,6 +332,25 @@ class Prejoin extends Component<Props, State> {
|
333
|
332
|
_renderFooter() {
|
334
|
333
|
return this.props.deviceStatusVisible && <DeviceStatus />;
|
335
|
334
|
}
|
|
335
|
+
|
|
336
|
+ /**
|
|
337
|
+ * Renders the 'skip prejoin' button.
|
|
338
|
+ *
|
|
339
|
+ * @returns {React$Element}
|
|
340
|
+ */
|
|
341
|
+ _renderSkipPrejoinButton() {
|
|
342
|
+ const { buttonIsToggled, t } = this.props;
|
|
343
|
+
|
|
344
|
+ return (
|
|
345
|
+ <div className = 'prejoin-checkbox-container'>
|
|
346
|
+ <ToggleButton
|
|
347
|
+ isToggled = { buttonIsToggled }
|
|
348
|
+ onClick = { this._onToggleButtonClick }>
|
|
349
|
+ {t('prejoin.doNotShow')}
|
|
350
|
+ </ToggleButton>
|
|
351
|
+ </div>
|
|
352
|
+ );
|
|
353
|
+ }
|
336
|
354
|
}
|
337
|
355
|
|
338
|
356
|
/**
|
|
@@ -346,6 +364,7 @@ function mapStateToProps(state): Object {
|
346
|
364
|
const joinButtonDisabled = isDisplayNameRequired(state) && !name;
|
347
|
365
|
|
348
|
366
|
return {
|
|
367
|
+ buttonIsToggled: isPrejoinSkipped(state),
|
349
|
368
|
joinButtonDisabled,
|
350
|
369
|
name,
|
351
|
370
|
deviceStatusVisible: isDeviceStatusVisible(state),
|