feat(recording) mobile and web ui updates
This commit is contained in:
parent
4b95a5d6cb
commit
c60a51e671
|
@ -7,22 +7,23 @@
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.recording-header {
|
.recording-header {
|
||||||
|
align-items: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 0;
|
flex: 0;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding-top: 32px;
|
|
||||||
|
|
||||||
.recording-title {
|
.recording-title {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-size: 16px;
|
font-size: 14px;
|
||||||
margin-left: 16px;
|
margin-left: 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.recording-header-line {
|
.recording-header-line {
|
||||||
border-top: 1px solid #5e6d7a;
|
border-top: 1px solid #5e6d7a;
|
||||||
|
padding-top: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.recording-switch-disabled {
|
.recording-switch-disabled {
|
||||||
|
@ -34,10 +35,79 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.file-sharing-icon-container {
|
||||||
|
background-color: #525252;
|
||||||
|
border-radius: 4px;
|
||||||
|
height: 40px;
|
||||||
|
justify-content: center;
|
||||||
|
width: 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cloud-content-recording-icon-container {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
border-radius: 4px;
|
||||||
|
height: 40px;
|
||||||
|
justify-content: center;
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jitsi-recording-header {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jitsi-content-recording-icon-container-with-switch {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
border-radius: 4px;
|
||||||
|
height: 40px;
|
||||||
|
width: 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jitsi-content-recording-icon-container-without-switch {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
border-radius: 4px;
|
||||||
|
height: 40px;
|
||||||
|
width: 46px;
|
||||||
|
}
|
||||||
|
|
||||||
.recording-icon {
|
.recording-icon {
|
||||||
width: 32px;
|
height: 40px;
|
||||||
height: 32px;
|
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-recording-icon {
|
||||||
|
height: 18px;
|
||||||
|
margin: 10px 0 0 10px;
|
||||||
|
object-fit: contain;
|
||||||
|
width: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recording-file-sharing-icon {
|
||||||
|
height: 18px;
|
||||||
|
object-fit: contain;
|
||||||
|
width: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recording-info{
|
||||||
|
background-color: #FFD740;
|
||||||
|
color: black;
|
||||||
|
display: inline-flex;
|
||||||
|
margin: 32px 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recording-info-icon {
|
||||||
|
align-self: center;
|
||||||
|
height: 14px;
|
||||||
|
margin: 0 24px 0 16px;
|
||||||
|
object-fit: contain;
|
||||||
|
width: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recording-info-title {
|
||||||
|
display: inline-flex;
|
||||||
|
font-size: 14px;
|
||||||
|
width: 290px
|
||||||
}
|
}
|
||||||
|
|
||||||
.recording-switch {
|
.recording-switch {
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
|
@ -859,7 +859,7 @@
|
||||||
"expandedOn": "The meeting is currently being recorded.",
|
"expandedOn": "The meeting is currently being recorded.",
|
||||||
"expandedPending": "Recording is being started...",
|
"expandedPending": "Recording is being started...",
|
||||||
"failedToStart": "Recording failed to start",
|
"failedToStart": "Recording failed to start",
|
||||||
"fileSharingdescription": "Share recording with meeting participants",
|
"fileSharingdescription": "Share the recording link with the meeting participants",
|
||||||
"inProgress": "Recording or live streaming in progress",
|
"inProgress": "Recording or live streaming in progress",
|
||||||
"limitNotificationDescriptionNative": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <3>{{app}}</3>.",
|
"limitNotificationDescriptionNative": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <3>{{app}}</3>.",
|
||||||
"limitNotificationDescriptionWeb": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
"limitNotificationDescriptionWeb": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||||
|
@ -874,6 +874,7 @@
|
||||||
"rec": "REC",
|
"rec": "REC",
|
||||||
"serviceDescription": "Your recording will be saved by the recording service",
|
"serviceDescription": "Your recording will be saved by the recording service",
|
||||||
"serviceDescriptionCloud": "Cloud recording",
|
"serviceDescriptionCloud": "Cloud recording",
|
||||||
|
"serviceDescriptionCloudInfo": "Recorded meetings are automatically cleared 24h after their recording time.",
|
||||||
"serviceName": "Recording service",
|
"serviceName": "Recording service",
|
||||||
"sessionAlreadyActive": "This session is already being recorded or live streamed.",
|
"sessionAlreadyActive": "This session is already being recorded or live streamed.",
|
||||||
"signIn": "Sign in",
|
"signIn": "Sign in",
|
||||||
|
|
|
@ -44,6 +44,7 @@ export const colors = {
|
||||||
|
|
||||||
warning05: '#F8AE1A',
|
warning05: '#F8AE1A',
|
||||||
warning06: '#FFD600',
|
warning06: '#FFD600',
|
||||||
|
warning07: '#FFD740',
|
||||||
|
|
||||||
disabled01: '#00000040',
|
disabled01: '#00000040',
|
||||||
|
|
||||||
|
@ -166,6 +167,9 @@ export const colorMap = {
|
||||||
// Text for saved input values
|
// Text for saved input values
|
||||||
text06: 'surface03',
|
text06: 'surface03',
|
||||||
|
|
||||||
|
// Text info
|
||||||
|
text07Info: 'surface02',
|
||||||
|
|
||||||
// error messages
|
// error messages
|
||||||
textError: 'error06',
|
textError: 'error06',
|
||||||
|
|
||||||
|
@ -265,6 +269,9 @@ export const colorMap = {
|
||||||
// Color for indicating a raised hand
|
// Color for indicating a raised hand
|
||||||
warning02: 'warning06',
|
warning02: 'warning06',
|
||||||
|
|
||||||
|
// Color for indicating recording info
|
||||||
|
warning03: 'warning07',
|
||||||
|
|
||||||
// Color for disabled tab
|
// Color for disabled tab
|
||||||
tab01Disabled: 'disabled01',
|
tab01Disabled: 'disabled01',
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,14 @@ import { isVpaasMeeting } from '../../../jaas/functions';
|
||||||
import { RECORDING_TYPES } from '../../constants';
|
import { RECORDING_TYPES } from '../../constants';
|
||||||
import { getRecordingDurationEstimation } from '../../functions';
|
import { getRecordingDurationEstimation } from '../../functions';
|
||||||
|
|
||||||
import { DROPBOX_LOGO, ICON_CLOUD, JITSI_LOGO, TRACK_COLOR } from './styles';
|
import {
|
||||||
|
DROPBOX_LOGO,
|
||||||
|
ICON_CLOUD,
|
||||||
|
ICON_INFO,
|
||||||
|
ICON_USERS,
|
||||||
|
JITSI_LOGO,
|
||||||
|
TRACK_COLOR
|
||||||
|
} from './styles';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
|
|
||||||
|
@ -149,8 +156,9 @@ class StartRecordingDialogContent extends Component<Props> {
|
||||||
className = 'recording-dialog'
|
className = 'recording-dialog'
|
||||||
style = { styles.container }>
|
style = { styles.container }>
|
||||||
{ this._renderNoIntegrationsContent() }
|
{ this._renderNoIntegrationsContent() }
|
||||||
{ this._renderIntegrationsContent() }
|
|
||||||
{ this._renderFileSharingContent() }
|
{ this._renderFileSharingContent() }
|
||||||
|
{ this._renderUploadToTheCloudInfo() }
|
||||||
|
{ this._renderIntegrationsContent() }
|
||||||
</Container>
|
</Container>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -182,14 +190,11 @@ class StartRecordingDialogContent extends Component<Props> {
|
||||||
<Container
|
<Container
|
||||||
className = 'recording-header'
|
className = 'recording-header'
|
||||||
key = 'fileSharingSetting'
|
key = 'fileSharingSetting'
|
||||||
style = { [
|
style = { styles.header }>
|
||||||
styles.header,
|
<Container className = 'recording-icon-container file-sharing-icon-container'>
|
||||||
_dialogStyles.topBorderContainer
|
|
||||||
] }>
|
|
||||||
<Container className = 'recording-icon-container'>
|
|
||||||
<Image
|
<Image
|
||||||
className = 'recording-icon'
|
className = 'recording-file-sharing-icon'
|
||||||
src = { ICON_CLOUD }
|
src = { ICON_USERS }
|
||||||
style = { styles.recordingIcon } />
|
style = { styles.recordingIcon } />
|
||||||
</Container>
|
</Container>
|
||||||
<Text
|
<Text
|
||||||
|
@ -212,6 +217,46 @@ class StartRecordingDialogContent extends Component<Props> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the info in case recording is uploaded to the cloud.
|
||||||
|
*
|
||||||
|
* @returns {React$Component}
|
||||||
|
*/
|
||||||
|
_renderUploadToTheCloudInfo() {
|
||||||
|
const {
|
||||||
|
_dialogStyles,
|
||||||
|
_styles: styles,
|
||||||
|
isVpaas,
|
||||||
|
selectedRecordingService,
|
||||||
|
t
|
||||||
|
} = this.props;
|
||||||
|
|
||||||
|
if (isVpaas
|
||||||
|
|| selectedRecordingService !== RECORDING_TYPES.JITSI_REC_SERVICE) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Container
|
||||||
|
className = 'recording-info'
|
||||||
|
key = 'cloudUploadInfo'
|
||||||
|
style = { styles.headerInfo }>
|
||||||
|
<Image
|
||||||
|
className = 'recording-info-icon'
|
||||||
|
src = { ICON_INFO }
|
||||||
|
style = { styles.recordingInfoIcon } />
|
||||||
|
<Text
|
||||||
|
className = 'recording-info-title'
|
||||||
|
style = {{
|
||||||
|
..._dialogStyles.text,
|
||||||
|
...styles.titleInfo
|
||||||
|
}}>
|
||||||
|
{ t('recording.serviceDescriptionCloudInfo') }
|
||||||
|
</Text>
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the content in case no integrations were enabled.
|
* Renders the content in case no integrations were enabled.
|
||||||
*
|
*
|
||||||
|
@ -242,15 +287,23 @@ class StartRecordingDialogContent extends Component<Props> {
|
||||||
|
|
||||||
const icon = isVpaas ? ICON_CLOUD : JITSI_LOGO;
|
const icon = isVpaas ? ICON_CLOUD : JITSI_LOGO;
|
||||||
const label = isVpaas ? t('recording.serviceDescriptionCloud') : t('recording.serviceDescription');
|
const label = isVpaas ? t('recording.serviceDescriptionCloud') : t('recording.serviceDescription');
|
||||||
|
const jitsiContentRecordingIconContainer
|
||||||
|
= this.props.integrationsEnabled
|
||||||
|
? 'jitsi-content-recording-icon-container-with-switch'
|
||||||
|
: 'jitsi-content-recording-icon-container-without-switch';
|
||||||
|
const contentRecordingClass = isVpaas
|
||||||
|
? 'cloud-content-recording-icon-container'
|
||||||
|
: jitsiContentRecordingIconContainer;
|
||||||
|
const jitsiRecordingHeaderClass = !isVpaas && 'jitsi-recording-header';
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container
|
<Container
|
||||||
className = 'recording-header'
|
className = { `recording-header ${jitsiRecordingHeaderClass}` }
|
||||||
key = 'noIntegrationSetting'
|
key = 'noIntegrationSetting'
|
||||||
style = { styles.header }>
|
style = { styles.header }>
|
||||||
<Container className = 'recording-icon-container'>
|
<Container className = { contentRecordingClass }>
|
||||||
<Image
|
<Image
|
||||||
className = 'recording-icon'
|
className = 'content-recording-icon'
|
||||||
src = { icon }
|
src = { icon }
|
||||||
style = { styles.recordingIcon } />
|
style = { styles.recordingIcon } />
|
||||||
</Container>
|
</Container>
|
||||||
|
@ -327,7 +380,10 @@ class StartRecordingDialogContent extends Component<Props> {
|
||||||
<Container>
|
<Container>
|
||||||
<Container
|
<Container
|
||||||
className = 'recording-header recording-header-line'
|
className = 'recording-header recording-header-line'
|
||||||
style = { styles.header }>
|
style = { [
|
||||||
|
styles.headerIntegrations,
|
||||||
|
_dialogStyles.topBorderContainer
|
||||||
|
] }>
|
||||||
<Container
|
<Container
|
||||||
className = 'recording-icon-container'>
|
className = 'recording-icon-container'>
|
||||||
<Image
|
<Image
|
||||||
|
|
|
@ -6,6 +6,8 @@ import BaseTheme from '../../../base/ui/components/BaseTheme.native';
|
||||||
|
|
||||||
export const DROPBOX_LOGO = require('../../../../../images/dropboxLogo_square.png');
|
export const DROPBOX_LOGO = require('../../../../../images/dropboxLogo_square.png');
|
||||||
export const ICON_CLOUD = require('../../../../../images/icon-cloud.png');
|
export const ICON_CLOUD = require('../../../../../images/icon-cloud.png');
|
||||||
|
export const ICON_INFO = require('../../../../../images/icon-info.png');
|
||||||
|
export const ICON_USERS = require('../../../../../images/icon-users.png');
|
||||||
export const JITSI_LOGO = require('../../../../../images/jitsiLogo_square.png');
|
export const JITSI_LOGO = require('../../../../../images/jitsiLogo_square.png');
|
||||||
export const TRACK_COLOR = BaseTheme.palette.ui15;
|
export const TRACK_COLOR = BaseTheme.palette.ui15;
|
||||||
|
|
||||||
|
@ -14,6 +16,29 @@ export const TRACK_COLOR = BaseTheme.palette.ui15;
|
||||||
// the special case(s) of the recording feature below.
|
// the special case(s) of the recording feature below.
|
||||||
const _PADDING = BoxModel.padding * 1.5;
|
const _PADDING = BoxModel.padding * 1.5;
|
||||||
|
|
||||||
|
|
||||||
|
const header = {
|
||||||
|
alignItems: 'center',
|
||||||
|
flex: 0,
|
||||||
|
flexDirection: 'row',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
paddingBottom: _PADDING,
|
||||||
|
paddingTop: _PADDING
|
||||||
|
};
|
||||||
|
|
||||||
|
const recordingIcon = {
|
||||||
|
width: BaseTheme.spacing[4],
|
||||||
|
height: BaseTheme.spacing[4]
|
||||||
|
};
|
||||||
|
|
||||||
|
const title = {
|
||||||
|
flex: 1,
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: 'bold',
|
||||||
|
textAlign: 'left',
|
||||||
|
paddingLeft: BoxModel.padding
|
||||||
|
};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
/**
|
/**
|
||||||
* Container for the StartRecordingDialog screen.
|
* Container for the StartRecordingDialog screen.
|
||||||
|
@ -24,7 +49,6 @@ export default {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
paddingHorizontal: BaseTheme.spacing[3],
|
|
||||||
paddingTop: BaseTheme.spacing[3]
|
paddingTop: BaseTheme.spacing[3]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -52,12 +76,20 @@ ColorSchemeRegistry.register('StartRecordingDialogContent', {
|
||||||
},
|
},
|
||||||
|
|
||||||
header: {
|
header: {
|
||||||
alignItems: 'center',
|
...header,
|
||||||
flex: 0,
|
marginHorizontal: BaseTheme.spacing[3]
|
||||||
flexDirection: 'row',
|
},
|
||||||
justifyContent: 'space-between',
|
|
||||||
paddingBottom: _PADDING,
|
headerIntegrations: {
|
||||||
paddingTop: _PADDING
|
...header,
|
||||||
|
paddingHorizontal: BaseTheme.spacing[3]
|
||||||
|
},
|
||||||
|
|
||||||
|
headerInfo: {
|
||||||
|
...header,
|
||||||
|
backgroundColor: BaseTheme.palette.warning03,
|
||||||
|
marginBottom: BaseTheme.spacing[4],
|
||||||
|
paddingHorizontal: BaseTheme.spacing[3]
|
||||||
},
|
},
|
||||||
|
|
||||||
loggedIn: {
|
loggedIn: {
|
||||||
|
@ -65,8 +97,11 @@ ColorSchemeRegistry.register('StartRecordingDialogContent', {
|
||||||
},
|
},
|
||||||
|
|
||||||
recordingIcon: {
|
recordingIcon: {
|
||||||
width: BaseTheme.spacing[4],
|
...recordingIcon
|
||||||
height: BaseTheme.spacing[4]
|
},
|
||||||
|
|
||||||
|
recordingInfoIcon: {
|
||||||
|
...recordingIcon
|
||||||
},
|
},
|
||||||
|
|
||||||
recordingText: {
|
recordingText: {
|
||||||
|
@ -86,11 +121,12 @@ ColorSchemeRegistry.register('StartRecordingDialogContent', {
|
||||||
},
|
},
|
||||||
|
|
||||||
title: {
|
title: {
|
||||||
flex: 1,
|
...title
|
||||||
fontSize: 16,
|
},
|
||||||
fontWeight: 'bold',
|
|
||||||
textAlign: 'left',
|
titleInfo: {
|
||||||
paddingLeft: BoxModel.padding
|
...title,
|
||||||
|
color: BaseTheme.palette.text07Info
|
||||||
},
|
},
|
||||||
|
|
||||||
text: {
|
text: {
|
||||||
|
|
|
@ -8,6 +8,10 @@ export const DROPBOX_LOGO = 'images/dropboxLogo_square.png';
|
||||||
|
|
||||||
export const ICON_CLOUD = 'images/icon-cloud.png';
|
export const ICON_CLOUD = 'images/icon-cloud.png';
|
||||||
|
|
||||||
|
export const ICON_INFO = 'images/icon-info.png';
|
||||||
|
|
||||||
|
export const ICON_USERS = 'images/icon-users.png';
|
||||||
|
|
||||||
export const JITSI_LOGO = 'images/jitsiLogo_square.png';
|
export const JITSI_LOGO = 'images/jitsiLogo_square.png';
|
||||||
|
|
||||||
export const TRACK_COLOR = BaseTheme.palette.ui15;
|
export const TRACK_COLOR = BaseTheme.palette.ui15;
|
||||||
|
|
Loading…
Reference in New Issue