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..3091ec4
--- /dev/null
+++ b/app/src/components/Controls/Help.js
@@ -0,0 +1,168 @@
+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 { useIntl, 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 Button from '@material-ui/core/Button';
+import Paper from '@material-ui/core/Paper';
+import Tabs from '@material-ui/core/Tabs';
+import Tab from '@material-ui/core/Tab';
+
+const shortcuts=[
+ { key: 'm', label: 'device.muteAudio', defaultMessage: 'Mute Audio' },
+ { key: 'v', label: 'device.stopVideo', defaultMessage: 'Mute Video' },
+ { key: '1', label: 'label.democratic', defaultMessage: 'Democratic View' },
+ { key: '2', label: 'label.filmstrip', defaultMessage: 'Filmstrip View' },
+ { key: 'space', label: 'me.mutedPTT', defaultMessage: 'Push SPACE to talk' },
+ { key: 'a', label: 'label.advanced', defaultMessage: 'Show advanced information' }
+];
+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'
+ },
+ display : 'flex',
+ flexDirection : 'column'
+ },
+ paper : {
+ padding : theme.spacing(1),
+ textAlign : 'center',
+ color : theme.palette.text.secondary,
+ whiteSpace : 'nowrap',
+ marginRight : theme.spacing(3),
+ marginBottom : theme.spacing(1),
+ minWidth : theme.spacing(8)
+ },
+ shortcuts : {
+ display : 'flex',
+ flexDirection : 'row',
+ alignItems : 'center'
+ },
+ tabsHeader :
+ {
+ flexGrow : 1
+ }
+ });
+
+const Help = ({
+ helpOpen,
+ handleCloseHelp,
+ classes
+}) =>
+{
+ const intl = useIntl();
+
+ 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)));
diff --git a/app/src/components/Controls/TopBar.js b/app/src/components/Controls/TopBar.js
index 6422788..43ee13f 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 b6027ba..d021132 100644
--- a/app/src/components/Room.js
+++ b/app/src/components/Room.js
@@ -26,6 +26,8 @@ import TopBar from './Controls/TopBar';
import WakeLock from 'react-wakelock-react16';
import ExtraVideo from './Controls/ExtraVideo';
import ButtonControlBar from './Controls/ButtonControlBar';
+import Help from './Controls/Help';
+import About from './Controls/About';
const TIMEOUT = window.config.hideTimeout || 5000;
@@ -231,6 +233,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;
diff --git a/app/src/translations/cn.json b/app/src/translations/cn.json
index 7da15eb..df97372 100644
--- a/app/src/translations/cn.json
+++ b/app/src/translations/cn.json
@@ -60,7 +60,10 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
-
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
+
"me.mutedPTT": null,
"roles.gotRole": null,
diff --git a/app/src/translations/cs.json b/app/src/translations/cs.json
index ee859d2..f73144e 100644
--- a/app/src/translations/cs.json
+++ b/app/src/translations/cs.json
@@ -59,6 +59,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,
diff --git a/app/src/translations/de.json b/app/src/translations/de.json
index 428d104..d141ae9 100644
--- a/app/src/translations/de.json
+++ b/app/src/translations/de.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": "Du bist stummgeschalted, Halte die SPACE-Taste um zu sprechen",
diff --git a/app/src/translations/dk.json b/app/src/translations/dk.json
index c74026f..a0bc95f 100644
--- a/app/src/translations/dk.json
+++ b/app/src/translations/dk.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,
diff --git a/app/src/translations/el.json b/app/src/translations/el.json
index 10047cf..c21ef1d 100644
--- a/app/src/translations/el.json
+++ b/app/src/translations/el.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,
diff --git a/app/src/translations/en.json b/app/src/translations/en.json
index 475acd2..4b33dbd 100644
--- a/app/src/translations/en.json
+++ b/app/src/translations/en.json
@@ -60,6 +60,9 @@
"room.loweredHand": "{displayName} put their hand down",
"room.extraVideo": "Extra video",
"room.overRoomLimit": "The room is full, retry after some time.",
+ "room.help": "Help",
+ "room.about": "About",
+ "room.shortcutKeys": "Shortcut Keys",
"me.mutedPTT": "You are muted, hold down SPACE-BAR to talk",
diff --git a/app/src/translations/es.json b/app/src/translations/es.json
index 6c757cd..9bf9744 100644
--- a/app/src/translations/es.json
+++ b/app/src/translations/es.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,
diff --git a/app/src/translations/fr.json b/app/src/translations/fr.json
index 73493f5..2b74da9 100644
--- a/app/src/translations/fr.json
+++ b/app/src/translations/fr.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,
diff --git a/app/src/translations/hr.json b/app/src/translations/hr.json
index 22db8fa..9d55c44 100644
--- a/app/src/translations/hr.json
+++ b/app/src/translations/hr.json
@@ -60,6 +60,9 @@
"room.loweredHand": "{displayName} je spustio ruku",
"room.extraVideo": "Dodatni video",
"room.overRoomLimit": "Soba je popunjena, pokušajte ponovno kasnije.",
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": "Utišani ste, pritisnite i držite SPACE tipku za razgovor",
diff --git a/app/src/translations/hu.json b/app/src/translations/hu.json
index 8c68590..1b2db12 100644
--- a/app/src/translations/hu.json
+++ b/app/src/translations/hu.json
@@ -60,6 +60,9 @@
"room.loweredHand": "{displayName} leeresztette a kezét",
"room.extraVideo": "Kiegészítő videó",
"room.overRoomLimit": "A konferenciaszoba betelt..",
+ "room.help": "Segítség",
+ "room.about": "Névjegy",
+ "room.shortcutKeys": "Billentyűparancsok",
"me.mutedPTT": "Némítva vagy, ha beszélnél nyomd le a szóköz billentyűt",
diff --git a/app/src/translations/it.json b/app/src/translations/it.json
index ba849d9..8ce1764 100644
--- a/app/src/translations/it.json
+++ b/app/src/translations/it.json
@@ -60,7 +60,10 @@
"room.loweredHand": "{displayName} ha abbassato la mano",
"room.extraVideo": "Video extra",
"room.overRoomLimit": null,
-
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
+
"me.mutedPTT": "Sei mutato, tieni premuto SPAZIO per parlare",
"roles.gotRole": "Hai ottenuto il ruolo: {role}",
diff --git a/app/src/translations/lv.json b/app/src/translations/lv.json
index 6d4e97b..5a39315 100644
--- a/app/src/translations/lv.json
+++ b/app/src/translations/lv.json
@@ -59,6 +59,9 @@
"room.raisedHand": "{displayName} pacēla roku",
"room.loweredHand": "{displayName} nolaida roku",
"room.extraVideo": "Papildus video",
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": "Jūs esat noklusināts. Turiet taustiņu SPACE-BAR, lai runātu",
diff --git a/app/src/translations/nb.json b/app/src/translations/nb.json
index ea9b0b8..139341a 100644
--- a/app/src/translations/nb.json
+++ b/app/src/translations/nb.json
@@ -60,6 +60,9 @@
"room.loweredHand": "{displayName} tok ned hånden",
"room.extraVideo": "Ekstra video",
"room.overRoomLimit": "Rommet er fullt, prøv igjen om litt.",
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": "Du er dempet, hold nede SPACE for å snakke",
diff --git a/app/src/translations/pl.json b/app/src/translations/pl.json
index 859a29f..4c8f28a 100644
--- a/app/src/translations/pl.json
+++ b/app/src/translations/pl.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,
diff --git a/app/src/translations/pt.json b/app/src/translations/pt.json
index 7faed7c..df2bf73 100644
--- a/app/src/translations/pt.json
+++ b/app/src/translations/pt.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,
diff --git a/app/src/translations/ro.json b/app/src/translations/ro.json
index 3188e91..fe7fb50 100644
--- a/app/src/translations/ro.json
+++ b/app/src/translations/ro.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,
diff --git a/app/src/translations/tr.json b/app/src/translations/tr.json
index aa6a8cb..4a105d4 100644
--- a/app/src/translations/tr.json
+++ b/app/src/translations/tr.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,
diff --git a/app/src/translations/uk.json b/app/src/translations/uk.json
index 4932fc4..71ead8e 100644
--- a/app/src/translations/uk.json
+++ b/app/src/translations/uk.json
@@ -60,6 +60,9 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
+ "room.help": null,
+ "room.about": null,
+ "room.shortcutKeys": null,
"me.mutedPTT": null,