From 7c134039212fd0b60eb7a84e5663ead46ce4f800 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?=
Date: Wed, 6 May 2020 23:39:40 +0200
Subject: [PATCH] Add help and about modal
---
app/src/actions/roomActions.js | 12 +++
app/src/components/Controls/About.js | 133 ++++++++++++++++++++++++++
app/src/components/Controls/Help.js | 99 +++++++++++++++++++
app/src/components/Controls/TopBar.js | 54 +++++++++++
app/src/components/Room.js | 9 ++
app/src/reducers/room.js | 16 ++++
6 files changed, 323 insertions(+)
create mode 100644 app/src/components/Controls/About.js
create mode 100644 app/src/components/Controls/Help.js
diff --git a/app/src/actions/roomActions.js b/app/src/actions/roomActions.js
index b90bf1b..7c44835 100644
--- a/app/src/actions/roomActions.js
+++ b/app/src/actions/roomActions.js
@@ -70,6 +70,18 @@ export const setExtraVideoOpen = (extraVideoOpen) =>
payload : { extraVideoOpen }
});
+export const setHelpOpen = (helpOpen) =>
+ ({
+ type : 'SET_HELP_OPEN',
+ payload : { helpOpen }
+ });
+
+export const setAboutOpen = (aboutOpen) =>
+ ({
+ type : 'SET_ABOUT_OPEN',
+ payload : { aboutOpen }
+ });
+
export const setSettingsTab = (tab) =>
({
type : 'SET_SETTINGS_TAB',
diff --git a/app/src/components/Controls/About.js b/app/src/components/Controls/About.js
new file mode 100644
index 0000000..d361a8c
--- /dev/null
+++ b/app/src/components/Controls/About.js
@@ -0,0 +1,133 @@
+import React from 'react';
+import { connect } from 'react-redux';
+import { withStyles } from '@material-ui/core/styles';
+import { withRoomContext } from '../../RoomContext';
+import * as roomActions from '../../actions/roomActions';
+import PropTypes from 'prop-types';
+import { FormattedMessage } from 'react-intl';
+
+import Dialog from '@material-ui/core/Dialog';
+import DialogTitle from '@material-ui/core/DialogTitle';
+import DialogActions from '@material-ui/core/DialogActions';
+import DialogContent from '@material-ui/core/DialogContent';
+import DialogContentText from '@material-ui/core/DialogContentText';
+import Link from '@material-ui/core/Link';
+import Button from '@material-ui/core/Button';
+
+const styles = (theme) =>
+ ({
+ dialogPaper :
+ {
+ width : '30vw',
+ [theme.breakpoints.down('lg')] :
+ {
+ width : '40vw'
+ },
+ [theme.breakpoints.down('md')] :
+ {
+ width : '50vw'
+ },
+ [theme.breakpoints.down('sm')] :
+ {
+ width : '70vw'
+ },
+ [theme.breakpoints.down('xs')] :
+ {
+ width : '90vw'
+ }
+ },
+ logo :
+ {
+ marginRight : 'auto'
+ },
+ link :
+ {
+ display : 'block',
+ textAlign : 'center'
+ }
+ });
+
+const About = ({
+ aboutOpen,
+ handleCloseAbout,
+ classes
+}) =>
+{
+ return (
+
+ );
+};
+
+About.propTypes =
+{
+ roomClient : PropTypes.object.isRequired,
+ aboutOpen : PropTypes.bool.isRequired,
+ handleCloseAbout : PropTypes.func.isRequired,
+ classes : PropTypes.object.isRequired
+};
+
+const mapStateToProps = (state) =>
+ ({
+ aboutOpen : state.room.aboutOpen
+ });
+
+const mapDispatchToProps = {
+ handleCloseAbout : roomActions.setAboutOpen
+};
+
+export default withRoomContext(connect(
+ mapStateToProps,
+ mapDispatchToProps,
+ null,
+ {
+ areStatesEqual : (next, prev) =>
+ {
+ return (
+ prev.room.aboutOpen === next.room.aboutOpen
+ );
+ }
+ }
+)(withStyles(styles)(About)));
\ No newline at end of file
diff --git a/app/src/components/Controls/Help.js b/app/src/components/Controls/Help.js
new file mode 100644
index 0000000..67be03f
--- /dev/null
+++ b/app/src/components/Controls/Help.js
@@ -0,0 +1,99 @@
+import React from 'react';
+import { connect } from 'react-redux';
+import { withStyles } from '@material-ui/core/styles';
+import { withRoomContext } from '../../RoomContext';
+import * as roomActions from '../../actions/roomActions';
+import PropTypes from 'prop-types';
+import { FormattedMessage } from 'react-intl';
+
+import Dialog from '@material-ui/core/Dialog';
+import DialogTitle from '@material-ui/core/DialogTitle';
+import DialogActions from '@material-ui/core/DialogActions';
+import Button from '@material-ui/core/Button';
+
+const styles = (theme) =>
+ ({
+ dialogPaper :
+ {
+ width : '30vw',
+ [theme.breakpoints.down('lg')] :
+ {
+ width : '40vw'
+ },
+ [theme.breakpoints.down('md')] :
+ {
+ width : '50vw'
+ },
+ [theme.breakpoints.down('sm')] :
+ {
+ width : '70vw'
+ },
+ [theme.breakpoints.down('xs')] :
+ {
+ width : '90vw'
+ }
+ }
+ });
+
+const Help = ({
+ helpOpen,
+ handleCloseHelp,
+ classes
+}) =>
+{
+ return (
+
+ );
+};
+
+Help.propTypes =
+{
+ roomClient : PropTypes.object.isRequired,
+ helpOpen : PropTypes.bool.isRequired,
+ handleCloseHelp : PropTypes.func.isRequired,
+ classes : PropTypes.object.isRequired
+};
+
+const mapStateToProps = (state) =>
+ ({
+ helpOpen : state.room.helpOpen
+ });
+
+const mapDispatchToProps = {
+ handleCloseHelp : roomActions.setHelpOpen
+};
+
+export default withRoomContext(connect(
+ mapStateToProps,
+ mapDispatchToProps,
+ null,
+ {
+ areStatesEqual : (next, prev) =>
+ {
+ return (
+ prev.room.helpOpen === next.room.helpOpen
+ );
+ }
+ }
+)(withStyles(styles)(Help)));
\ No newline at end of file
diff --git a/app/src/components/Controls/TopBar.js b/app/src/components/Controls/TopBar.js
index 6422788..028b883 100644
--- a/app/src/components/Controls/TopBar.js
+++ b/app/src/components/Controls/TopBar.js
@@ -36,6 +36,8 @@ import VideoCallIcon from '@material-ui/icons/VideoCall';
import Button from '@material-ui/core/Button';
import Tooltip from '@material-ui/core/Tooltip';
import MoreIcon from '@material-ui/icons/MoreVert';
+import HelpIcon from '@material-ui/icons/Help';
+import InfoIcon from '@material-ui/icons/Info';
const styles = (theme) =>
({
@@ -192,6 +194,8 @@ const TopBar = (props) =>
onFullscreen,
setSettingsOpen,
setExtraVideoOpen,
+ setHelpOpen,
+ setAboutOpen,
setLockDialogOpen,
toggleToolArea,
openUsersTab,
@@ -483,6 +487,46 @@ const TopBar = (props) =>
/>
+
+
}
@@ -694,6 +738,8 @@ TopBar.propTypes =
setToolbarsVisible : PropTypes.func.isRequired,
setSettingsOpen : PropTypes.func.isRequired,
setExtraVideoOpen : PropTypes.func.isRequired,
+ setHelpOpen : PropTypes.func.isRequired,
+ setAboutOpen : PropTypes.func.isRequired,
setLockDialogOpen : PropTypes.func.isRequired,
toggleToolArea : PropTypes.func.isRequired,
openUsersTab : PropTypes.func.isRequired,
@@ -741,6 +787,14 @@ const mapDispatchToProps = (dispatch) =>
{
dispatch(roomActions.setExtraVideoOpen(extraVideoOpen));
},
+ setHelpOpen : (helpOpen) =>
+ {
+ dispatch(roomActions.setHelpOpen(helpOpen));
+ },
+ setAboutOpen : (aboutOpen) =>
+ {
+ dispatch(roomActions.setAboutOpen(aboutOpen));
+ },
setLockDialogOpen : (lockDialogOpen) =>
{
dispatch(roomActions.setLockDialogOpen(lockDialogOpen));
diff --git a/app/src/components/Room.js b/app/src/components/Room.js
index cdda66f..505fc69 100644
--- a/app/src/components/Room.js
+++ b/app/src/components/Room.js
@@ -25,6 +25,8 @@ import Settings from './Settings/Settings';
import TopBar from './Controls/TopBar';
import WakeLock from 'react-wakelock-react16';
import ExtraVideo from './Controls/ExtraVideo';
+import Help from './Controls/Help';
+import About from './Controls/About';
const TIMEOUT = 5 * 1000;
@@ -222,6 +224,13 @@ class Room extends React.PureComponent
{ room.extraVideoOpen &&
}
+ { room.helpOpen &&
+
+ }
+ { room.aboutOpen &&
+
+ }
+
);
}
diff --git a/app/src/reducers/room.js b/app/src/reducers/room.js
index 6d47d42..1a4b99e 100644
--- a/app/src/reducers/room.js
+++ b/app/src/reducers/room.js
@@ -22,6 +22,8 @@ const initialState =
spotlights : [],
settingsOpen : false,
extraVideoOpen : false,
+ helpOpen : false,
+ aboutOpen : false,
currentSettingsTab : 'media', // media, appearence, advanced
lockDialogOpen : false,
joined : false,
@@ -130,6 +132,20 @@ const room = (state = initialState, action) =>
return { ...state, extraVideoOpen };
}
+ case 'SET_HELP_OPEN':
+ {
+ const { helpOpen } = action.payload;
+
+ return { ...state, helpOpen };
+ }
+
+ case 'SET_ABOUT_OPEN':
+ {
+ const { aboutOpen } = action.payload;
+
+ return { ...state, aboutOpen };
+ }
+
case 'SET_SETTINGS_TAB':
{
const { tab } = action.payload;