Option to make side drawer push videos to the side and be permanent, fixes #320
parent
c5143de647
commit
1690394328
|
|
@ -57,6 +57,9 @@ var config =
|
||||||
// If true, will show media control buttons in separate
|
// If true, will show media control buttons in separate
|
||||||
// control bar, not in the ME container.
|
// control bar, not in the ME container.
|
||||||
buttonControlBar : false,
|
buttonControlBar : false,
|
||||||
|
// If false, will push videos away to make room for side
|
||||||
|
// drawer. If true, will overlay side drawer over videos
|
||||||
|
drawerOverlayed : true,
|
||||||
// Timeout for autohiding topbar and button control bar
|
// Timeout for autohiding topbar and button control bar
|
||||||
hideTimeout : 3000,
|
hideTimeout : 3000,
|
||||||
lastN : 4,
|
lastN : 4,
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,11 @@ export const toggleButtonControlBar = () =>
|
||||||
type : 'TOGGLE_BUTTON_CONTROL_BAR'
|
type : 'TOGGLE_BUTTON_CONTROL_BAR'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const toggleDrawerOverlayed = () =>
|
||||||
|
({
|
||||||
|
type : 'TOGGLE_DRAWER_OVERLAYED'
|
||||||
|
});
|
||||||
|
|
||||||
export const toggleShowNotifications = () =>
|
export const toggleShowNotifications = () =>
|
||||||
({
|
({
|
||||||
type : 'TOGGLE_SHOW_NOTIFICATIONS'
|
type : 'TOGGLE_SHOW_NOTIFICATIONS'
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import { withStyles } from '@material-ui/core/styles';
|
||||||
import * as roomActions from '../../actions/roomActions';
|
import * as roomActions from '../../actions/roomActions';
|
||||||
import * as toolareaActions from '../../actions/toolareaActions';
|
import * as toolareaActions from '../../actions/toolareaActions';
|
||||||
import { useIntl, FormattedMessage } from 'react-intl';
|
import { useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
import classnames from 'classnames';
|
||||||
import AppBar from '@material-ui/core/AppBar';
|
import AppBar from '@material-ui/core/AppBar';
|
||||||
import Toolbar from '@material-ui/core/Toolbar';
|
import Toolbar from '@material-ui/core/Toolbar';
|
||||||
import MenuItem from '@material-ui/core/MenuItem';
|
import MenuItem from '@material-ui/core/MenuItem';
|
||||||
|
|
@ -43,6 +44,31 @@ import InfoIcon from '@material-ui/icons/Info';
|
||||||
|
|
||||||
const styles = (theme) =>
|
const styles = (theme) =>
|
||||||
({
|
({
|
||||||
|
persistentDrawerOpen :
|
||||||
|
{
|
||||||
|
width : 'calc(100% - 30vw)',
|
||||||
|
marginLeft : '30vw',
|
||||||
|
[theme.breakpoints.down('lg')] :
|
||||||
|
{
|
||||||
|
width : 'calc(100% - 40vw)',
|
||||||
|
marginLeft : '40vw'
|
||||||
|
},
|
||||||
|
[theme.breakpoints.down('md')] :
|
||||||
|
{
|
||||||
|
width : 'calc(100% - 50vw)',
|
||||||
|
marginLeft : '50vw'
|
||||||
|
},
|
||||||
|
[theme.breakpoints.down('sm')] :
|
||||||
|
{
|
||||||
|
width : 'calc(100% - 70vw)',
|
||||||
|
marginLeft : '70vw'
|
||||||
|
},
|
||||||
|
[theme.breakpoints.down('xs')] :
|
||||||
|
{
|
||||||
|
width : 'calc(100% - 90vw)',
|
||||||
|
marginLeft : '90vw'
|
||||||
|
}
|
||||||
|
},
|
||||||
menuButton :
|
menuButton :
|
||||||
{
|
{
|
||||||
margin : 0,
|
margin : 0,
|
||||||
|
|
@ -188,6 +214,9 @@ const TopBar = (props) =>
|
||||||
peersLength,
|
peersLength,
|
||||||
lobbyPeers,
|
lobbyPeers,
|
||||||
permanentTopBar,
|
permanentTopBar,
|
||||||
|
drawerOverlayed,
|
||||||
|
toolAreaOpen,
|
||||||
|
isMobile,
|
||||||
myPicture,
|
myPicture,
|
||||||
loggedIn,
|
loggedIn,
|
||||||
loginEnabled,
|
loginEnabled,
|
||||||
|
|
@ -248,7 +277,12 @@ const TopBar = (props) =>
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<AppBar
|
<AppBar
|
||||||
position='fixed'
|
position='fixed'
|
||||||
className={room.toolbarsVisible || permanentTopBar ? classes.show : classes.hide}
|
className={classnames(
|
||||||
|
room.toolbarsVisible || permanentTopBar ?
|
||||||
|
classes.show : classes.hide,
|
||||||
|
!(isMobile || drawerOverlayed) && toolAreaOpen ?
|
||||||
|
classes.persistentDrawerOpen : null
|
||||||
|
)}
|
||||||
>
|
>
|
||||||
<Toolbar>
|
<Toolbar>
|
||||||
<PulsingBadge
|
<PulsingBadge
|
||||||
|
|
@ -728,9 +762,12 @@ TopBar.propTypes =
|
||||||
{
|
{
|
||||||
roomClient : PropTypes.object.isRequired,
|
roomClient : PropTypes.object.isRequired,
|
||||||
room : appPropTypes.Room.isRequired,
|
room : appPropTypes.Room.isRequired,
|
||||||
|
isMobile : PropTypes.bool.isRequired,
|
||||||
peersLength : PropTypes.number,
|
peersLength : PropTypes.number,
|
||||||
lobbyPeers : PropTypes.array,
|
lobbyPeers : PropTypes.array,
|
||||||
permanentTopBar : PropTypes.bool,
|
permanentTopBar : PropTypes.bool.isRequired,
|
||||||
|
drawerOverlayed : PropTypes.bool.isRequired,
|
||||||
|
toolAreaOpen : PropTypes.bool.isRequired,
|
||||||
myPicture : PropTypes.string,
|
myPicture : PropTypes.string,
|
||||||
loggedIn : PropTypes.bool.isRequired,
|
loggedIn : PropTypes.bool.isRequired,
|
||||||
loginEnabled : PropTypes.bool.isRequired,
|
loginEnabled : PropTypes.bool.isRequired,
|
||||||
|
|
@ -767,9 +804,12 @@ const makeMapStateToProps = () =>
|
||||||
const mapStateToProps = (state) =>
|
const mapStateToProps = (state) =>
|
||||||
({
|
({
|
||||||
room : state.room,
|
room : state.room,
|
||||||
|
isMobile : state.me.browser.platform === 'mobile',
|
||||||
peersLength : peersLengthSelector(state),
|
peersLength : peersLengthSelector(state),
|
||||||
lobbyPeers : lobbyPeersKeySelector(state),
|
lobbyPeers : lobbyPeersKeySelector(state),
|
||||||
permanentTopBar : state.settings.permanentTopBar,
|
permanentTopBar : state.settings.permanentTopBar,
|
||||||
|
drawerOverlayed : state.settings.drawerOverlayed,
|
||||||
|
toolAreaOpen : state.toolarea.toolAreaOpen,
|
||||||
loggedIn : state.me.loggedIn,
|
loggedIn : state.me.loggedIn,
|
||||||
loginEnabled : state.me.loginEnabled,
|
loginEnabled : state.me.loginEnabled,
|
||||||
myPicture : state.me.picture,
|
myPicture : state.me.picture,
|
||||||
|
|
@ -832,12 +872,15 @@ export default withRoomContext(connect(
|
||||||
prev.peers === next.peers &&
|
prev.peers === next.peers &&
|
||||||
prev.lobbyPeers === next.lobbyPeers &&
|
prev.lobbyPeers === next.lobbyPeers &&
|
||||||
prev.settings.permanentTopBar === next.settings.permanentTopBar &&
|
prev.settings.permanentTopBar === next.settings.permanentTopBar &&
|
||||||
|
prev.settings.drawerOverlayed === next.settings.drawerOverlayed &&
|
||||||
prev.me.loggedIn === next.me.loggedIn &&
|
prev.me.loggedIn === next.me.loggedIn &&
|
||||||
|
prev.me.browser === next.me.browser &&
|
||||||
prev.me.loginEnabled === next.me.loginEnabled &&
|
prev.me.loginEnabled === next.me.loginEnabled &&
|
||||||
prev.me.picture === next.me.picture &&
|
prev.me.picture === next.me.picture &&
|
||||||
prev.me.roles === next.me.roles &&
|
prev.me.roles === next.me.roles &&
|
||||||
prev.toolarea.unreadMessages === next.toolarea.unreadMessages &&
|
prev.toolarea.unreadMessages === next.toolarea.unreadMessages &&
|
||||||
prev.toolarea.unreadFiles === next.toolarea.unreadFiles
|
prev.toolarea.unreadFiles === next.toolarea.unreadFiles &&
|
||||||
|
prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ const styles = (theme) =>
|
||||||
display : 'flex',
|
display : 'flex',
|
||||||
flexDirection : 'row',
|
flexDirection : 'row',
|
||||||
flexWrap : 'wrap',
|
flexWrap : 'wrap',
|
||||||
|
overflow : 'hidden',
|
||||||
justifyContent : 'center',
|
justifyContent : 'center',
|
||||||
alignItems : 'center',
|
alignItems : 'center',
|
||||||
alignContent : 'center'
|
alignContent : 'center'
|
||||||
|
|
@ -189,6 +190,7 @@ Democratic.propTypes =
|
||||||
toolbarsVisible : PropTypes.bool.isRequired,
|
toolbarsVisible : PropTypes.bool.isRequired,
|
||||||
permanentTopBar : PropTypes.bool.isRequired,
|
permanentTopBar : PropTypes.bool.isRequired,
|
||||||
buttonControlBar : PropTypes.bool.isRequired,
|
buttonControlBar : PropTypes.bool.isRequired,
|
||||||
|
toolAreaOpen : PropTypes.bool.isRequired,
|
||||||
classes : PropTypes.object.isRequired
|
classes : PropTypes.object.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -199,7 +201,8 @@ const mapStateToProps = (state) =>
|
||||||
spotlightsPeers : spotlightPeersSelector(state),
|
spotlightsPeers : spotlightPeersSelector(state),
|
||||||
toolbarsVisible : state.room.toolbarsVisible,
|
toolbarsVisible : state.room.toolbarsVisible,
|
||||||
permanentTopBar : state.settings.permanentTopBar,
|
permanentTopBar : state.settings.permanentTopBar,
|
||||||
buttonControlBar : state.settings.buttonControlBar
|
buttonControlBar : state.settings.buttonControlBar,
|
||||||
|
toolAreaOpen : state.toolarea.toolAreaOpen
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -217,7 +220,8 @@ export default connect(
|
||||||
prev.room.spotlights === next.room.spotlights &&
|
prev.room.spotlights === next.room.spotlights &&
|
||||||
prev.room.toolbarsVisible === next.room.toolbarsVisible &&
|
prev.room.toolbarsVisible === next.room.toolbarsVisible &&
|
||||||
prev.settings.permanentTopBar === next.settings.permanentTopBar &&
|
prev.settings.permanentTopBar === next.settings.permanentTopBar &&
|
||||||
prev.settings.buttonControlBar === next.settings.buttonControlBar
|
prev.settings.buttonControlBar === next.settings.buttonControlBar &&
|
||||||
|
prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ const styles = () =>
|
||||||
height : '100%',
|
height : '100%',
|
||||||
width : '100%',
|
width : '100%',
|
||||||
display : 'grid',
|
display : 'grid',
|
||||||
|
overflow : 'hidden',
|
||||||
gridTemplateColumns : '1fr',
|
gridTemplateColumns : '1fr',
|
||||||
gridTemplateRows : '1fr 0.25fr'
|
gridTemplateRows : '1fr 0.25fr'
|
||||||
},
|
},
|
||||||
|
|
@ -334,6 +335,7 @@ Filmstrip.propTypes = {
|
||||||
spotlights : PropTypes.array.isRequired,
|
spotlights : PropTypes.array.isRequired,
|
||||||
boxes : PropTypes.number,
|
boxes : PropTypes.number,
|
||||||
toolbarsVisible : PropTypes.bool.isRequired,
|
toolbarsVisible : PropTypes.bool.isRequired,
|
||||||
|
toolAreaOpen : PropTypes.bool.isRequired,
|
||||||
permanentTopBar : PropTypes.bool,
|
permanentTopBar : PropTypes.bool,
|
||||||
classes : PropTypes.object.isRequired
|
classes : PropTypes.object.isRequired
|
||||||
};
|
};
|
||||||
|
|
@ -349,6 +351,7 @@ const mapStateToProps = (state) =>
|
||||||
spotlights : state.room.spotlights,
|
spotlights : state.room.spotlights,
|
||||||
boxes : videoBoxesSelector(state),
|
boxes : videoBoxesSelector(state),
|
||||||
toolbarsVisible : state.room.toolbarsVisible,
|
toolbarsVisible : state.room.toolbarsVisible,
|
||||||
|
toolAreaOpen : state.toolarea.toolAreaOpen,
|
||||||
permanentTopBar : state.settings.permanentTopBar
|
permanentTopBar : state.settings.permanentTopBar
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -364,6 +367,7 @@ export default withRoomContext(connect(
|
||||||
prev.room.activeSpeakerId === next.room.activeSpeakerId &&
|
prev.room.activeSpeakerId === next.room.activeSpeakerId &&
|
||||||
prev.room.selectedPeerId === next.room.selectedPeerId &&
|
prev.room.selectedPeerId === next.room.selectedPeerId &&
|
||||||
prev.room.toolbarsVisible === next.room.toolbarsVisible &&
|
prev.room.toolbarsVisible === next.room.toolbarsVisible &&
|
||||||
|
prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen &&
|
||||||
prev.settings.permanentTopBar === next.settings.permanentTopBar &&
|
prev.settings.permanentTopBar === next.settings.permanentTopBar &&
|
||||||
prev.peers === next.peers &&
|
prev.peers === next.peers &&
|
||||||
prev.consumers === next.consumers &&
|
prev.consumers === next.consumers &&
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import { FormattedMessage } from 'react-intl';
|
||||||
import CookieConsent from 'react-cookie-consent';
|
import CookieConsent from 'react-cookie-consent';
|
||||||
import CssBaseline from '@material-ui/core/CssBaseline';
|
import CssBaseline from '@material-ui/core/CssBaseline';
|
||||||
import SwipeableDrawer from '@material-ui/core/SwipeableDrawer';
|
import SwipeableDrawer from '@material-ui/core/SwipeableDrawer';
|
||||||
|
import Drawer from '@material-ui/core/Drawer';
|
||||||
import Hidden from '@material-ui/core/Hidden';
|
import Hidden from '@material-ui/core/Hidden';
|
||||||
import Notifications from './Notifications/Notifications';
|
import Notifications from './Notifications/Notifications';
|
||||||
import MeetingDrawer from './MeetingDrawer/MeetingDrawer';
|
import MeetingDrawer from './MeetingDrawer/MeetingDrawer';
|
||||||
|
|
@ -45,6 +46,27 @@ const styles = (theme) =>
|
||||||
backgroundSize : 'cover',
|
backgroundSize : 'cover',
|
||||||
backgroundRepeat : 'no-repeat'
|
backgroundRepeat : 'no-repeat'
|
||||||
},
|
},
|
||||||
|
drawer :
|
||||||
|
{
|
||||||
|
width : '30vw',
|
||||||
|
flexShrink : 0,
|
||||||
|
[theme.breakpoints.down('lg')] :
|
||||||
|
{
|
||||||
|
width : '40vw'
|
||||||
|
},
|
||||||
|
[theme.breakpoints.down('md')] :
|
||||||
|
{
|
||||||
|
width : '50vw'
|
||||||
|
},
|
||||||
|
[theme.breakpoints.down('sm')] :
|
||||||
|
{
|
||||||
|
width : '70vw'
|
||||||
|
},
|
||||||
|
[theme.breakpoints.down('xs')] :
|
||||||
|
{
|
||||||
|
width : '90vw'
|
||||||
|
}
|
||||||
|
},
|
||||||
drawerPaper :
|
drawerPaper :
|
||||||
{
|
{
|
||||||
width : '30vw',
|
width : '30vw',
|
||||||
|
|
@ -147,6 +169,7 @@ class Room extends React.PureComponent
|
||||||
advancedMode,
|
advancedMode,
|
||||||
showNotifications,
|
showNotifications,
|
||||||
buttonControlBar,
|
buttonControlBar,
|
||||||
|
drawerOverlayed,
|
||||||
toolAreaOpen,
|
toolAreaOpen,
|
||||||
toggleToolArea,
|
toggleToolArea,
|
||||||
classes,
|
classes,
|
||||||
|
|
@ -159,6 +182,8 @@ class Room extends React.PureComponent
|
||||||
democratic : Democratic
|
democratic : Democratic
|
||||||
}[room.mode];
|
}[room.mode];
|
||||||
|
|
||||||
|
const container = window !== undefined ? window.document.body : undefined;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classes.root}>
|
<div className={classes.root}>
|
||||||
{ !isElectron() &&
|
{ !isElectron() &&
|
||||||
|
|
@ -195,9 +220,11 @@ class Room extends React.PureComponent
|
||||||
onFullscreen={this.handleToggleFullscreen}
|
onFullscreen={this.handleToggleFullscreen}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{ (browser.platform === 'mobile' || drawerOverlayed) ?
|
||||||
<nav>
|
<nav>
|
||||||
<Hidden implementation='css'>
|
<Hidden implementation='css'>
|
||||||
<SwipeableDrawer
|
<SwipeableDrawer
|
||||||
|
container={container}
|
||||||
variant='temporary'
|
variant='temporary'
|
||||||
anchor={theme.direction === 'rtl' ? 'right' : 'left'}
|
anchor={theme.direction === 'rtl' ? 'right' : 'left'}
|
||||||
open={toolAreaOpen}
|
open={toolAreaOpen}
|
||||||
|
|
@ -206,11 +233,32 @@ class Room extends React.PureComponent
|
||||||
classes={{
|
classes={{
|
||||||
paper : classes.drawerPaper
|
paper : classes.drawerPaper
|
||||||
}}
|
}}
|
||||||
|
ModalProps={{
|
||||||
|
keepMounted : true // Better open performance on mobile.
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<MeetingDrawer closeDrawer={toggleToolArea} />
|
||||||
|
</SwipeableDrawer>
|
||||||
|
</Hidden>
|
||||||
|
</nav>
|
||||||
|
:
|
||||||
|
<nav className={toolAreaOpen ? classes.drawer : null}>
|
||||||
|
<Hidden implementation='css'>
|
||||||
|
<Drawer
|
||||||
|
variant='persistent'
|
||||||
|
anchor={theme.direction === 'rtl' ? 'right' : 'left'}
|
||||||
|
open={toolAreaOpen}
|
||||||
|
onClose={() => toggleToolArea()}
|
||||||
|
onOpen={() => toggleToolArea()}
|
||||||
|
classes={{
|
||||||
|
paper : classes.drawerPaper
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<MeetingDrawer closeDrawer={toggleToolArea} />
|
<MeetingDrawer closeDrawer={toggleToolArea} />
|
||||||
</SwipeableDrawer>
|
</Drawer>
|
||||||
</Hidden>
|
</Hidden>
|
||||||
</nav>
|
</nav>
|
||||||
|
}
|
||||||
|
|
||||||
{ browser.platform === 'mobile' && browser.os !== 'ios' &&
|
{ browser.platform === 'mobile' && browser.os !== 'ios' &&
|
||||||
<WakeLock />
|
<WakeLock />
|
||||||
|
|
@ -252,6 +300,7 @@ Room.propTypes =
|
||||||
advancedMode : PropTypes.bool.isRequired,
|
advancedMode : PropTypes.bool.isRequired,
|
||||||
showNotifications : PropTypes.bool.isRequired,
|
showNotifications : PropTypes.bool.isRequired,
|
||||||
buttonControlBar : PropTypes.bool.isRequired,
|
buttonControlBar : PropTypes.bool.isRequired,
|
||||||
|
drawerOverlayed : PropTypes.bool.isRequired,
|
||||||
toolAreaOpen : PropTypes.bool.isRequired,
|
toolAreaOpen : PropTypes.bool.isRequired,
|
||||||
setToolbarsVisible : PropTypes.func.isRequired,
|
setToolbarsVisible : PropTypes.func.isRequired,
|
||||||
toggleToolArea : PropTypes.func.isRequired,
|
toggleToolArea : PropTypes.func.isRequired,
|
||||||
|
|
@ -266,6 +315,7 @@ const mapStateToProps = (state) =>
|
||||||
advancedMode : state.settings.advancedMode,
|
advancedMode : state.settings.advancedMode,
|
||||||
showNotifications : state.settings.showNotifications,
|
showNotifications : state.settings.showNotifications,
|
||||||
buttonControlBar : state.settings.buttonControlBar,
|
buttonControlBar : state.settings.buttonControlBar,
|
||||||
|
drawerOverlayed : state.settings.drawerOverlayed,
|
||||||
toolAreaOpen : state.toolarea.toolAreaOpen
|
toolAreaOpen : state.toolarea.toolAreaOpen
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -294,6 +344,7 @@ export default connect(
|
||||||
prev.settings.advancedMode === next.settings.advancedMode &&
|
prev.settings.advancedMode === next.settings.advancedMode &&
|
||||||
prev.settings.showNotifications === next.settings.showNotifications &&
|
prev.settings.showNotifications === next.settings.showNotifications &&
|
||||||
prev.settings.buttonControlBar === next.settings.buttonControlBar &&
|
prev.settings.buttonControlBar === next.settings.buttonControlBar &&
|
||||||
|
prev.settings.drawerOverlayed === next.settings.drawerOverlayed &&
|
||||||
prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen
|
prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,12 +26,14 @@ const styles = (theme) =>
|
||||||
});
|
});
|
||||||
|
|
||||||
const AppearenceSettings = ({
|
const AppearenceSettings = ({
|
||||||
|
isMobile,
|
||||||
room,
|
room,
|
||||||
settings,
|
settings,
|
||||||
onTogglePermanentTopBar,
|
onTogglePermanentTopBar,
|
||||||
onToggleHiddenControls,
|
onToggleHiddenControls,
|
||||||
onToggleButtonControlBar,
|
onToggleButtonControlBar,
|
||||||
onToggleShowNotifications,
|
onToggleShowNotifications,
|
||||||
|
onToggleDrawerOverlayed,
|
||||||
handleChangeMode,
|
handleChangeMode,
|
||||||
classes
|
classes
|
||||||
}) =>
|
}) =>
|
||||||
|
|
@ -111,6 +113,16 @@ const AppearenceSettings = ({
|
||||||
defaultMessage : 'Separate media controls'
|
defaultMessage : 'Separate media controls'
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
{ !isMobile &&
|
||||||
|
<FormControlLabel
|
||||||
|
className={classes.setting}
|
||||||
|
control={<Checkbox checked={settings.drawerOverlayed} onChange={onToggleDrawerOverlayed} value='drawerOverlayed' />}
|
||||||
|
label={intl.formatMessage({
|
||||||
|
id : 'settings.drawerOverlayed',
|
||||||
|
defaultMessage : 'Side drawer over content'
|
||||||
|
})}
|
||||||
|
/>
|
||||||
|
}
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
className={classes.setting}
|
className={classes.setting}
|
||||||
control={<Checkbox checked={settings.showNotifications} onChange={onToggleShowNotifications} value='showNotifications' />}
|
control={<Checkbox checked={settings.showNotifications} onChange={onToggleShowNotifications} value='showNotifications' />}
|
||||||
|
|
@ -125,18 +137,21 @@ const AppearenceSettings = ({
|
||||||
|
|
||||||
AppearenceSettings.propTypes =
|
AppearenceSettings.propTypes =
|
||||||
{
|
{
|
||||||
|
isMobile : PropTypes.bool.isRequired,
|
||||||
room : appPropTypes.Room.isRequired,
|
room : appPropTypes.Room.isRequired,
|
||||||
settings : PropTypes.object.isRequired,
|
settings : PropTypes.object.isRequired,
|
||||||
onTogglePermanentTopBar : PropTypes.func.isRequired,
|
onTogglePermanentTopBar : PropTypes.func.isRequired,
|
||||||
onToggleHiddenControls : PropTypes.func.isRequired,
|
onToggleHiddenControls : PropTypes.func.isRequired,
|
||||||
onToggleButtonControlBar : PropTypes.func.isRequired,
|
onToggleButtonControlBar : PropTypes.func.isRequired,
|
||||||
onToggleShowNotifications : PropTypes.func.isRequired,
|
onToggleShowNotifications : PropTypes.func.isRequired,
|
||||||
|
onToggleDrawerOverlayed : PropTypes.func.isRequired,
|
||||||
handleChangeMode : PropTypes.func.isRequired,
|
handleChangeMode : PropTypes.func.isRequired,
|
||||||
classes : PropTypes.object.isRequired
|
classes : PropTypes.object.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
const mapStateToProps = (state) =>
|
const mapStateToProps = (state) =>
|
||||||
({
|
({
|
||||||
|
isMobile : state.me.browser.platform === 'mobile',
|
||||||
room : state.room,
|
room : state.room,
|
||||||
settings : state.settings
|
settings : state.settings
|
||||||
});
|
});
|
||||||
|
|
@ -146,6 +161,7 @@ const mapDispatchToProps = {
|
||||||
onToggleHiddenControls : settingsActions.toggleHiddenControls,
|
onToggleHiddenControls : settingsActions.toggleHiddenControls,
|
||||||
onToggleShowNotifications : settingsActions.toggleShowNotifications,
|
onToggleShowNotifications : settingsActions.toggleShowNotifications,
|
||||||
onToggleButtonControlBar : settingsActions.toggleButtonControlBar,
|
onToggleButtonControlBar : settingsActions.toggleButtonControlBar,
|
||||||
|
onToggleDrawerOverlayed : settingsActions.toggleDrawerOverlayed,
|
||||||
handleChangeMode : roomActions.setDisplayMode
|
handleChangeMode : roomActions.setDisplayMode
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -157,6 +173,7 @@ export default connect(
|
||||||
areStatesEqual : (next, prev) =>
|
areStatesEqual : (next, prev) =>
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
|
prev.me.browser === next.me.browser &&
|
||||||
prev.room === next.room &&
|
prev.room === next.room &&
|
||||||
prev.settings === next.settings
|
prev.settings === next.settings
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ const initialState =
|
||||||
showNotifications : true,
|
showNotifications : true,
|
||||||
notificationSounds : true,
|
notificationSounds : true,
|
||||||
buttonControlBar : window.config.buttonControlBar || false,
|
buttonControlBar : window.config.buttonControlBar || false,
|
||||||
|
drawerOverlayed : window.config.drawerOverlayed || true,
|
||||||
...window.config.defaultAudio
|
...window.config.defaultAudio
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -153,6 +154,13 @@ const settings = (state = initialState, action) =>
|
||||||
return { ...state, buttonControlBar };
|
return { ...state, buttonControlBar };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'TOGGLE_DRAWER_OVERLAYED':
|
||||||
|
{
|
||||||
|
const drawerOverlayed = !state.drawerOverlayed;
|
||||||
|
|
||||||
|
return { ...state, drawerOverlayed };
|
||||||
|
}
|
||||||
|
|
||||||
case 'TOGGLE_HIDDEN_CONTROLS':
|
case 'TOGGLE_HIDDEN_CONTROLS':
|
||||||
{
|
{
|
||||||
const hiddenControls = !state.hiddenControls;
|
const hiddenControls = !state.hiddenControls;
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "无法保存文件",
|
"filesharing.saveFileError": "无法保存文件",
|
||||||
"filesharing.startingFileShare": "正在尝试共享文件",
|
"filesharing.startingFileShare": "正在尝试共享文件",
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Není možné uložit soubor",
|
"filesharing.saveFileError": "Není možné uložit soubor",
|
||||||
"filesharing.startingFileShare": "Pokouším se sdílet soubor",
|
"filesharing.startingFileShare": "Pokouším se sdílet soubor",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Fehler beim Speichern der Datei",
|
"filesharing.saveFileError": "Fehler beim Speichern der Datei",
|
||||||
"filesharing.startingFileShare": "Starte Teilen der Datei",
|
"filesharing.startingFileShare": "Starte Teilen der Datei",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Kan ikke gemme fil",
|
"filesharing.saveFileError": "Kan ikke gemme fil",
|
||||||
"filesharing.startingFileShare": "Forsøger at dele filen",
|
"filesharing.startingFileShare": "Forsøger at dele filen",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Αδυναμία αποθήκευσης του αρχείου",
|
"filesharing.saveFileError": "Αδυναμία αποθήκευσης του αρχείου",
|
||||||
"filesharing.startingFileShare": "Προσπάθεια διαμοιρασμού αρχείου",
|
"filesharing.startingFileShare": "Προσπάθεια διαμοιρασμού αρχείου",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": "Echo cancellation",
|
"settings.echoCancellation": "Echo cancellation",
|
||||||
"settings.autoGainControl": "Auto gain control",
|
"settings.autoGainControl": "Auto gain control",
|
||||||
"settings.noiseSuppression": "Noise suppression",
|
"settings.noiseSuppression": "Noise suppression",
|
||||||
|
"settings.drawerOverlayed": "Side drawer over content",
|
||||||
|
|
||||||
"filesharing.saveFileError": "Unable to save file",
|
"filesharing.saveFileError": "Unable to save file",
|
||||||
"filesharing.startingFileShare": "Attempting to share file",
|
"filesharing.startingFileShare": "Attempting to share file",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "No ha sido posible guardar el fichero",
|
"filesharing.saveFileError": "No ha sido posible guardar el fichero",
|
||||||
"filesharing.startingFileShare": "Intentando compartir el fichero",
|
"filesharing.startingFileShare": "Intentando compartir el fichero",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Impossible d'enregistrer le fichier",
|
"filesharing.saveFileError": "Impossible d'enregistrer le fichier",
|
||||||
"filesharing.startingFileShare": "Début du transfert de fichier",
|
"filesharing.startingFileShare": "Début du transfert de fichier",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Nije moguće spremiti datoteku",
|
"filesharing.saveFileError": "Nije moguće spremiti datoteku",
|
||||||
"filesharing.startingFileShare": "Pokušaj dijeljenja datoteke",
|
"filesharing.startingFileShare": "Pokušaj dijeljenja datoteke",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": "Visszhangelnyomás",
|
"settings.echoCancellation": "Visszhangelnyomás",
|
||||||
"settings.autoGainControl": "Automatikus hangerő",
|
"settings.autoGainControl": "Automatikus hangerő",
|
||||||
"settings.noiseSuppression": "Zajelnyomás",
|
"settings.noiseSuppression": "Zajelnyomás",
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "A file-t nem sikerült elmenteni",
|
"filesharing.saveFileError": "A file-t nem sikerült elmenteni",
|
||||||
"filesharing.startingFileShare": "Fájl megosztása",
|
"filesharing.startingFileShare": "Fájl megosztása",
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Impossibile salvare file",
|
"filesharing.saveFileError": "Impossibile salvare file",
|
||||||
"filesharing.startingFileShare": "Tentativo di condivisione file",
|
"filesharing.startingFileShare": "Tentativo di condivisione file",
|
||||||
|
|
|
||||||
|
|
@ -132,6 +132,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Nav iespējams saglabāt failu",
|
"filesharing.saveFileError": "Nav iespējams saglabāt failu",
|
||||||
"filesharing.startingFileShare": "Tiek mēģināts kopīgot failu",
|
"filesharing.startingFileShare": "Tiek mēģināts kopīgot failu",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": "Echokansellering",
|
"settings.echoCancellation": "Echokansellering",
|
||||||
"settings.autoGainControl": "Auto gain kontroll",
|
"settings.autoGainControl": "Auto gain kontroll",
|
||||||
"settings.noiseSuppression": "Støy reduksjon",
|
"settings.noiseSuppression": "Støy reduksjon",
|
||||||
|
"settings.drawerOverlayed": "Sidemeny over innhold",
|
||||||
|
|
||||||
"filesharing.saveFileError": "Klarte ikke å lagre fil",
|
"filesharing.saveFileError": "Klarte ikke å lagre fil",
|
||||||
"filesharing.startingFileShare": "Starter fildeling",
|
"filesharing.startingFileShare": "Starter fildeling",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Nie można zapisać pliku",
|
"filesharing.saveFileError": "Nie można zapisać pliku",
|
||||||
"filesharing.startingFileShare": "Próba udostępnienia pliku",
|
"filesharing.startingFileShare": "Próba udostępnienia pliku",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Impossível de gravar o ficheiro",
|
"filesharing.saveFileError": "Impossível de gravar o ficheiro",
|
||||||
"filesharing.startingFileShare": "Tentando partilha de ficheiro",
|
"filesharing.startingFileShare": "Tentando partilha de ficheiro",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Încercarea de a salva fișierul a eșuat",
|
"filesharing.saveFileError": "Încercarea de a salva fișierul a eșuat",
|
||||||
"filesharing.startingFileShare": "Partajarea fișierului",
|
"filesharing.startingFileShare": "Partajarea fișierului",
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Dosya kaydedilemiyor",
|
"filesharing.saveFileError": "Dosya kaydedilemiyor",
|
||||||
"filesharing.startingFileShare": "Paylaşılan dosyaya erişiliyor",
|
"filesharing.startingFileShare": "Paylaşılan dosyaya erişiliyor",
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@
|
||||||
"settings.echoCancellation": null,
|
"settings.echoCancellation": null,
|
||||||
"settings.autoGainControl": null,
|
"settings.autoGainControl": null,
|
||||||
"settings.noiseSuppression": null,
|
"settings.noiseSuppression": null,
|
||||||
|
"settings.drawerOverlayed": null,
|
||||||
|
|
||||||
"filesharing.saveFileError": "Неможливо зберегти файл",
|
"filesharing.saveFileError": "Неможливо зберегти файл",
|
||||||
"filesharing.startingFileShare": "Спроба поділитися файлом",
|
"filesharing.startingFileShare": "Спроба поділитися файлом",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue