- { !smallContainer &&
-
-
-
- }
Date: Sat, 9 May 2020 00:03:56 +0200
Subject: [PATCH 20/28] Option to make side drawer push videos to the side and
be permanent, fixes #320
---
app/public/config/config.example.js | 3 +
app/src/actions/settingsActions.js | 5 ++
app/src/components/Controls/TopBar.js | 49 ++++++++++-
app/src/components/MeetingViews/Democratic.js | 8 +-
app/src/components/MeetingViews/Filmstrip.js | 4 +
app/src/components/Room.js | 83 +++++++++++++++----
.../components/Settings/AppearenceSettings.js | 17 ++++
app/src/reducers/settings.js | 8 ++
app/src/translations/cn.json | 1 +
app/src/translations/cs.json | 1 +
app/src/translations/de.json | 1 +
app/src/translations/dk.json | 1 +
app/src/translations/el.json | 1 +
app/src/translations/en.json | 1 +
app/src/translations/es.json | 1 +
app/src/translations/fr.json | 1 +
app/src/translations/hr.json | 1 +
app/src/translations/hu.json | 1 +
app/src/translations/it.json | 1 +
app/src/translations/lv.json | 1 +
app/src/translations/nb.json | 1 +
app/src/translations/pl.json | 1 +
app/src/translations/pt.json | 1 +
app/src/translations/ro.json | 1 +
app/src/translations/tr.json | 1 +
app/src/translations/uk.json | 1 +
26 files changed, 174 insertions(+), 21 deletions(-)
diff --git a/app/public/config/config.example.js b/app/public/config/config.example.js
index 4bbc13f..7909284 100644
--- a/app/public/config/config.example.js
+++ b/app/public/config/config.example.js
@@ -57,6 +57,9 @@ var config =
// If true, will show media control buttons in separate
// control bar, not in the ME container.
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
hideTimeout : 3000,
lastN : 4,
diff --git a/app/src/actions/settingsActions.js b/app/src/actions/settingsActions.js
index 4b7dc6d..21ff2fd 100644
--- a/app/src/actions/settingsActions.js
+++ b/app/src/actions/settingsActions.js
@@ -43,6 +43,11 @@ export const toggleButtonControlBar = () =>
type : 'TOGGLE_BUTTON_CONTROL_BAR'
});
+export const toggleDrawerOverlayed = () =>
+ ({
+ type : 'TOGGLE_DRAWER_OVERLAYED'
+ });
+
export const toggleShowNotifications = () =>
({
type : 'TOGGLE_SHOW_NOTIFICATIONS'
diff --git a/app/src/components/Controls/TopBar.js b/app/src/components/Controls/TopBar.js
index b880c36..52b06cd 100644
--- a/app/src/components/Controls/TopBar.js
+++ b/app/src/components/Controls/TopBar.js
@@ -14,6 +14,7 @@ import { withStyles } from '@material-ui/core/styles';
import * as roomActions from '../../actions/roomActions';
import * as toolareaActions from '../../actions/toolareaActions';
import { useIntl, FormattedMessage } from 'react-intl';
+import classnames from 'classnames';
import AppBar from '@material-ui/core/AppBar';
import Toolbar from '@material-ui/core/Toolbar';
import MenuItem from '@material-ui/core/MenuItem';
@@ -43,6 +44,31 @@ import InfoIcon from '@material-ui/icons/Info';
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 :
{
margin : 0,
@@ -188,6 +214,9 @@ const TopBar = (props) =>
peersLength,
lobbyPeers,
permanentTopBar,
+ drawerOverlayed,
+ toolAreaOpen,
+ isMobile,
myPicture,
loggedIn,
loginEnabled,
@@ -248,7 +277,12 @@ const TopBar = (props) =>
const mapStateToProps = (state) =>
({
room : state.room,
+ isMobile : state.me.browser.platform === 'mobile',
peersLength : peersLengthSelector(state),
lobbyPeers : lobbyPeersKeySelector(state),
permanentTopBar : state.settings.permanentTopBar,
+ drawerOverlayed : state.settings.drawerOverlayed,
+ toolAreaOpen : state.toolarea.toolAreaOpen,
loggedIn : state.me.loggedIn,
loginEnabled : state.me.loginEnabled,
myPicture : state.me.picture,
@@ -832,12 +872,15 @@ export default withRoomContext(connect(
prev.peers === next.peers &&
prev.lobbyPeers === next.lobbyPeers &&
prev.settings.permanentTopBar === next.settings.permanentTopBar &&
+ prev.settings.drawerOverlayed === next.settings.drawerOverlayed &&
prev.me.loggedIn === next.me.loggedIn &&
+ prev.me.browser === next.me.browser &&
prev.me.loginEnabled === next.me.loginEnabled &&
prev.me.picture === next.me.picture &&
prev.me.roles === next.me.roles &&
prev.toolarea.unreadMessages === next.toolarea.unreadMessages &&
- prev.toolarea.unreadFiles === next.toolarea.unreadFiles
+ prev.toolarea.unreadFiles === next.toolarea.unreadFiles &&
+ prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen
);
}
}
diff --git a/app/src/components/MeetingViews/Democratic.js b/app/src/components/MeetingViews/Democratic.js
index f2fff1a..e2e774c 100644
--- a/app/src/components/MeetingViews/Democratic.js
+++ b/app/src/components/MeetingViews/Democratic.js
@@ -22,6 +22,7 @@ const styles = (theme) =>
display : 'flex',
flexDirection : 'row',
flexWrap : 'wrap',
+ overflow : 'hidden',
justifyContent : 'center',
alignItems : 'center',
alignContent : 'center'
@@ -189,6 +190,7 @@ Democratic.propTypes =
toolbarsVisible : PropTypes.bool.isRequired,
permanentTopBar : PropTypes.bool.isRequired,
buttonControlBar : PropTypes.bool.isRequired,
+ toolAreaOpen : PropTypes.bool.isRequired,
classes : PropTypes.object.isRequired
};
@@ -199,7 +201,8 @@ const mapStateToProps = (state) =>
spotlightsPeers : spotlightPeersSelector(state),
toolbarsVisible : state.room.toolbarsVisible,
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.toolbarsVisible === next.room.toolbarsVisible &&
prev.settings.permanentTopBar === next.settings.permanentTopBar &&
- prev.settings.buttonControlBar === next.settings.buttonControlBar
+ prev.settings.buttonControlBar === next.settings.buttonControlBar &&
+ prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen
);
}
}
diff --git a/app/src/components/MeetingViews/Filmstrip.js b/app/src/components/MeetingViews/Filmstrip.js
index d1cfba6..120e985 100644
--- a/app/src/components/MeetingViews/Filmstrip.js
+++ b/app/src/components/MeetingViews/Filmstrip.js
@@ -25,6 +25,7 @@ const styles = () =>
height : '100%',
width : '100%',
display : 'grid',
+ overflow : 'hidden',
gridTemplateColumns : '1fr',
gridTemplateRows : '1fr 0.25fr'
},
@@ -334,6 +335,7 @@ Filmstrip.propTypes = {
spotlights : PropTypes.array.isRequired,
boxes : PropTypes.number,
toolbarsVisible : PropTypes.bool.isRequired,
+ toolAreaOpen : PropTypes.bool.isRequired,
permanentTopBar : PropTypes.bool,
classes : PropTypes.object.isRequired
};
@@ -349,6 +351,7 @@ const mapStateToProps = (state) =>
spotlights : state.room.spotlights,
boxes : videoBoxesSelector(state),
toolbarsVisible : state.room.toolbarsVisible,
+ toolAreaOpen : state.toolarea.toolAreaOpen,
permanentTopBar : state.settings.permanentTopBar
};
};
@@ -364,6 +367,7 @@ export default withRoomContext(connect(
prev.room.activeSpeakerId === next.room.activeSpeakerId &&
prev.room.selectedPeerId === next.room.selectedPeerId &&
prev.room.toolbarsVisible === next.room.toolbarsVisible &&
+ prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen &&
prev.settings.permanentTopBar === next.settings.permanentTopBar &&
prev.peers === next.peers &&
prev.consumers === next.consumers &&
diff --git a/app/src/components/Room.js b/app/src/components/Room.js
index d021132..4dee360 100644
--- a/app/src/components/Room.js
+++ b/app/src/components/Room.js
@@ -12,6 +12,7 @@ import { FormattedMessage } from 'react-intl';
import CookieConsent from 'react-cookie-consent';
import CssBaseline from '@material-ui/core/CssBaseline';
import SwipeableDrawer from '@material-ui/core/SwipeableDrawer';
+import Drawer from '@material-ui/core/Drawer';
import Hidden from '@material-ui/core/Hidden';
import Notifications from './Notifications/Notifications';
import MeetingDrawer from './MeetingDrawer/MeetingDrawer';
@@ -45,6 +46,27 @@ const styles = (theme) =>
backgroundSize : 'cover',
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 :
{
width : '30vw',
@@ -147,6 +169,7 @@ class Room extends React.PureComponent
advancedMode,
showNotifications,
buttonControlBar,
+ drawerOverlayed,
toolAreaOpen,
toggleToolArea,
classes,
@@ -159,6 +182,8 @@ class Room extends React.PureComponent
democratic : Democratic
}[room.mode];
+ const container = window !== undefined ? window.document.body : undefined;
+
return (
{ !isElectron() &&
@@ -195,22 +220,45 @@ class Room extends React.PureComponent
onFullscreen={this.handleToggleFullscreen}
/>
-
+ { (browser.platform === 'mobile' || drawerOverlayed) ?
+
+ :
+
+ }
{ browser.platform === 'mobile' && browser.os !== 'ios' &&
@@ -252,6 +300,7 @@ Room.propTypes =
advancedMode : PropTypes.bool.isRequired,
showNotifications : PropTypes.bool.isRequired,
buttonControlBar : PropTypes.bool.isRequired,
+ drawerOverlayed : PropTypes.bool.isRequired,
toolAreaOpen : PropTypes.bool.isRequired,
setToolbarsVisible : PropTypes.func.isRequired,
toggleToolArea : PropTypes.func.isRequired,
@@ -266,6 +315,7 @@ const mapStateToProps = (state) =>
advancedMode : state.settings.advancedMode,
showNotifications : state.settings.showNotifications,
buttonControlBar : state.settings.buttonControlBar,
+ drawerOverlayed : state.settings.drawerOverlayed,
toolAreaOpen : state.toolarea.toolAreaOpen
});
@@ -294,6 +344,7 @@ export default connect(
prev.settings.advancedMode === next.settings.advancedMode &&
prev.settings.showNotifications === next.settings.showNotifications &&
prev.settings.buttonControlBar === next.settings.buttonControlBar &&
+ prev.settings.drawerOverlayed === next.settings.drawerOverlayed &&
prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen
);
}
diff --git a/app/src/components/Settings/AppearenceSettings.js b/app/src/components/Settings/AppearenceSettings.js
index a859ab4..46cc898 100644
--- a/app/src/components/Settings/AppearenceSettings.js
+++ b/app/src/components/Settings/AppearenceSettings.js
@@ -26,12 +26,14 @@ const styles = (theme) =>
});
const AppearenceSettings = ({
+ isMobile,
room,
settings,
onTogglePermanentTopBar,
onToggleHiddenControls,
onToggleButtonControlBar,
onToggleShowNotifications,
+ onToggleDrawerOverlayed,
handleChangeMode,
classes
}) =>
@@ -111,6 +113,16 @@ const AppearenceSettings = ({
defaultMessage : 'Separate media controls'
})}
/>
+ { !isMobile &&
+
}
+ label={intl.formatMessage({
+ id : 'settings.drawerOverlayed',
+ defaultMessage : 'Side drawer over content'
+ })}
+ />
+ }
}
@@ -125,18 +137,21 @@ const AppearenceSettings = ({
AppearenceSettings.propTypes =
{
+ isMobile : PropTypes.bool.isRequired,
room : appPropTypes.Room.isRequired,
settings : PropTypes.object.isRequired,
onTogglePermanentTopBar : PropTypes.func.isRequired,
onToggleHiddenControls : PropTypes.func.isRequired,
onToggleButtonControlBar : PropTypes.func.isRequired,
onToggleShowNotifications : PropTypes.func.isRequired,
+ onToggleDrawerOverlayed : PropTypes.func.isRequired,
handleChangeMode : PropTypes.func.isRequired,
classes : PropTypes.object.isRequired
};
const mapStateToProps = (state) =>
({
+ isMobile : state.me.browser.platform === 'mobile',
room : state.room,
settings : state.settings
});
@@ -146,6 +161,7 @@ const mapDispatchToProps = {
onToggleHiddenControls : settingsActions.toggleHiddenControls,
onToggleShowNotifications : settingsActions.toggleShowNotifications,
onToggleButtonControlBar : settingsActions.toggleButtonControlBar,
+ onToggleDrawerOverlayed : settingsActions.toggleDrawerOverlayed,
handleChangeMode : roomActions.setDisplayMode
};
@@ -157,6 +173,7 @@ export default connect(
areStatesEqual : (next, prev) =>
{
return (
+ prev.me.browser === next.me.browser &&
prev.room === next.room &&
prev.settings === next.settings
);
diff --git a/app/src/reducers/settings.js b/app/src/reducers/settings.js
index f306726..1c375bf 100644
--- a/app/src/reducers/settings.js
+++ b/app/src/reducers/settings.js
@@ -19,6 +19,7 @@ const initialState =
showNotifications : true,
notificationSounds : true,
buttonControlBar : window.config.buttonControlBar || false,
+ drawerOverlayed : window.config.drawerOverlayed || true,
...window.config.defaultAudio
};
@@ -153,6 +154,13 @@ const settings = (state = initialState, action) =>
return { ...state, buttonControlBar };
}
+ case 'TOGGLE_DRAWER_OVERLAYED':
+ {
+ const drawerOverlayed = !state.drawerOverlayed;
+
+ return { ...state, drawerOverlayed };
+ }
+
case 'TOGGLE_HIDDEN_CONTROLS':
{
const hiddenControls = !state.hiddenControls;
diff --git a/app/src/translations/cn.json b/app/src/translations/cn.json
index df97372..0ce5f5b 100644
--- a/app/src/translations/cn.json
+++ b/app/src/translations/cn.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "无法保存文件",
"filesharing.startingFileShare": "正在尝试共享文件",
diff --git a/app/src/translations/cs.json b/app/src/translations/cs.json
index f73144e..3eac16c 100644
--- a/app/src/translations/cs.json
+++ b/app/src/translations/cs.json
@@ -137,6 +137,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Není možné uložit soubor",
"filesharing.startingFileShare": "Pokouším se sdílet soubor",
diff --git a/app/src/translations/de.json b/app/src/translations/de.json
index d141ae9..402c4b3 100644
--- a/app/src/translations/de.json
+++ b/app/src/translations/de.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Fehler beim Speichern der Datei",
"filesharing.startingFileShare": "Starte Teilen der Datei",
diff --git a/app/src/translations/dk.json b/app/src/translations/dk.json
index a0bc95f..c5c3a2d 100644
--- a/app/src/translations/dk.json
+++ b/app/src/translations/dk.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Kan ikke gemme fil",
"filesharing.startingFileShare": "Forsøger at dele filen",
diff --git a/app/src/translations/el.json b/app/src/translations/el.json
index c21ef1d..d71764f 100644
--- a/app/src/translations/el.json
+++ b/app/src/translations/el.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Αδυναμία αποθήκευσης του αρχείου",
"filesharing.startingFileShare": "Προσπάθεια διαμοιρασμού αρχείου",
diff --git a/app/src/translations/en.json b/app/src/translations/en.json
index 4b33dbd..344d660 100644
--- a/app/src/translations/en.json
+++ b/app/src/translations/en.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": "Echo cancellation",
"settings.autoGainControl": "Auto gain control",
"settings.noiseSuppression": "Noise suppression",
+ "settings.drawerOverlayed": "Side drawer over content",
"filesharing.saveFileError": "Unable to save file",
"filesharing.startingFileShare": "Attempting to share file",
diff --git a/app/src/translations/es.json b/app/src/translations/es.json
index 9bf9744..758b0c8 100644
--- a/app/src/translations/es.json
+++ b/app/src/translations/es.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "No ha sido posible guardar el fichero",
"filesharing.startingFileShare": "Intentando compartir el fichero",
diff --git a/app/src/translations/fr.json b/app/src/translations/fr.json
index 2b74da9..2eb7edf 100644
--- a/app/src/translations/fr.json
+++ b/app/src/translations/fr.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Impossible d'enregistrer le fichier",
"filesharing.startingFileShare": "Début du transfert de fichier",
diff --git a/app/src/translations/hr.json b/app/src/translations/hr.json
index 9d55c44..c0f8879 100644
--- a/app/src/translations/hr.json
+++ b/app/src/translations/hr.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Nije moguće spremiti datoteku",
"filesharing.startingFileShare": "Pokušaj dijeljenja datoteke",
diff --git a/app/src/translations/hu.json b/app/src/translations/hu.json
index be0342d..cf65f1d 100644
--- a/app/src/translations/hu.json
+++ b/app/src/translations/hu.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": "Visszhangelnyomás",
"settings.autoGainControl": "Automatikus hangerő",
"settings.noiseSuppression": "Zajelnyomás",
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "A file-t nem sikerült elmenteni",
"filesharing.startingFileShare": "Fájl megosztása",
diff --git a/app/src/translations/it.json b/app/src/translations/it.json
index 8ce1764..5ce26b6 100644
--- a/app/src/translations/it.json
+++ b/app/src/translations/it.json
@@ -137,6 +137,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Impossibile salvare file",
"filesharing.startingFileShare": "Tentativo di condivisione file",
diff --git a/app/src/translations/lv.json b/app/src/translations/lv.json
index 5a39315..7bf0b24 100644
--- a/app/src/translations/lv.json
+++ b/app/src/translations/lv.json
@@ -132,6 +132,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Nav iespējams saglabāt failu",
"filesharing.startingFileShare": "Tiek mēģināts kopīgot failu",
diff --git a/app/src/translations/nb.json b/app/src/translations/nb.json
index 139341a..251858b 100644
--- a/app/src/translations/nb.json
+++ b/app/src/translations/nb.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": "Echokansellering",
"settings.autoGainControl": "Auto gain kontroll",
"settings.noiseSuppression": "Støy reduksjon",
+ "settings.drawerOverlayed": "Sidemeny over innhold",
"filesharing.saveFileError": "Klarte ikke å lagre fil",
"filesharing.startingFileShare": "Starter fildeling",
diff --git a/app/src/translations/pl.json b/app/src/translations/pl.json
index 4c8f28a..705a6d7 100644
--- a/app/src/translations/pl.json
+++ b/app/src/translations/pl.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Nie można zapisać pliku",
"filesharing.startingFileShare": "Próba udostępnienia pliku",
diff --git a/app/src/translations/pt.json b/app/src/translations/pt.json
index df2bf73..8250231 100644
--- a/app/src/translations/pt.json
+++ b/app/src/translations/pt.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Impossível de gravar o ficheiro",
"filesharing.startingFileShare": "Tentando partilha de ficheiro",
diff --git a/app/src/translations/ro.json b/app/src/translations/ro.json
index fe7fb50..1ba455c 100644
--- a/app/src/translations/ro.json
+++ b/app/src/translations/ro.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Încercarea de a salva fișierul a eșuat",
"filesharing.startingFileShare": "Partajarea fișierului",
diff --git a/app/src/translations/tr.json b/app/src/translations/tr.json
index 4a105d4..524c557 100644
--- a/app/src/translations/tr.json
+++ b/app/src/translations/tr.json
@@ -135,6 +135,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Dosya kaydedilemiyor",
"filesharing.startingFileShare": "Paylaşılan dosyaya erişiliyor",
diff --git a/app/src/translations/uk.json b/app/src/translations/uk.json
index 71ead8e..a8cc077 100644
--- a/app/src/translations/uk.json
+++ b/app/src/translations/uk.json
@@ -138,6 +138,7 @@
"settings.echoCancellation": null,
"settings.autoGainControl": null,
"settings.noiseSuppression": null,
+ "settings.drawerOverlayed": null,
"filesharing.saveFileError": "Неможливо зберегти файл",
"filesharing.startingFileShare": "Спроба поділитися файлом",
From 13e611e17747481fb0ca9b207052255d32db34b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?=
Date: Sat, 9 May 2020 00:07:12 +0200
Subject: [PATCH 21/28] Missing tooltip, fixes #324
---
app/src/components/Controls/TopBar.js | 29 +++++++++++++++++----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/app/src/components/Controls/TopBar.js b/app/src/components/Controls/TopBar.js
index 52b06cd..bbf408d 100644
--- a/app/src/components/Controls/TopBar.js
+++ b/app/src/components/Controls/TopBar.js
@@ -312,18 +312,25 @@ const TopBar = (props) =>
- handleMenuOpen(event, 'moreActions')}
- color='inherit'
+
-
-
+ handleMenuOpen(event, 'moreActions')}
+ color='inherit'
+ >
+
+
+
{ fullscreenEnabled &&
Date: Sat, 9 May 2020 00:09:52 +0200
Subject: [PATCH 22/28] Add h shortcut for help dialog
---
app/src/RoomClient.js | 7 +++++++
app/src/components/Controls/Help.js | 1 +
2 files changed, 8 insertions(+)
diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js
index bce2f03..2217d65 100644
--- a/app/src/RoomClient.js
+++ b/app/src/RoomClient.js
@@ -408,6 +408,13 @@ export default class RoomClient
break;
}
+ case 'H': // Open help dialog
+ {
+ store.dispatch(roomActions.setHelpOpen(true));
+
+ break;
+ }
+
default:
{
break;
diff --git a/app/src/components/Controls/Help.js b/app/src/components/Controls/Help.js
index 3091ec4..98415b5 100644
--- a/app/src/components/Controls/Help.js
+++ b/app/src/components/Controls/Help.js
@@ -17,6 +17,7 @@ import Tabs from '@material-ui/core/Tabs';
import Tab from '@material-ui/core/Tab';
const shortcuts=[
+ { key: 'h', label: 'room.help', defaultMessage: 'Help' },
{ key: 'm', label: 'device.muteAudio', defaultMessage: 'Mute Audio' },
{ key: 'v', label: 'device.stopVideo', defaultMessage: 'Mute Video' },
{ key: '1', label: 'label.democratic', defaultMessage: 'Democratic View' },
From 1bccc9a98568303e159fc66f9e833bdc16e4e8aa Mon Sep 17 00:00:00 2001
From: Roman Drozd
Date: Sat, 9 May 2020 00:29:20 +0200
Subject: [PATCH 23/28] Update pl translation
---
app/src/translations/pl.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/translations/pl.json b/app/src/translations/pl.json
index 705a6d7..8d3ecf5 100644
--- a/app/src/translations/pl.json
+++ b/app/src/translations/pl.json
@@ -60,7 +60,7 @@
"room.loweredHand": null,
"room.extraVideo": null,
"room.overRoomLimit": null,
- "room.help": null,
+ "room.help": "Pomoc",
"room.about": null,
"room.shortcutKeys": null,
From aa5f75b79478662ccb11ecb5ce5f45e21cfe2251 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?=
Date: Sat, 9 May 2020 00:37:47 +0200
Subject: [PATCH 24/28] Do things in correct order.
---
server/lib/Lobby.js | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/server/lib/Lobby.js b/server/lib/Lobby.js
index 43fc30d..45cdc06 100644
--- a/server/lib/Lobby.js
+++ b/server/lib/Lobby.js
@@ -154,8 +154,6 @@ class Lobby extends EventEmitter
this.emit('lobbyEmpty');
};
- this._notification(peer.socket, 'enteredLobby');
-
this._peers[peer.id] = peer;
peer.on('gotRole', peer.gotRoleHandler);
@@ -165,6 +163,8 @@ class Lobby extends EventEmitter
peer.socket.on('request', peer.socketRequestHandler);
peer.on('close', peer.closeHandler);
+
+ this._notification(peer.socket, 'enteredLobby');
}
async _handleSocketRequest(peer, request, cb)
@@ -189,7 +189,8 @@ class Lobby extends EventEmitter
cb();
break;
- }
+ }
+
case 'changePicture':
{
const { picture } = request.data;
From f468f95cdc58a2ab8ca2b1a408ffb3f02e8afbd1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?=
Date: Sat, 9 May 2020 00:43:05 +0200
Subject: [PATCH 25/28] Translated media buttons, fixes #309
---
.../components/Controls/ButtonControlBar.js | 75 +++++++++++++++----
1 file changed, 61 insertions(+), 14 deletions(-)
diff --git a/app/src/components/Controls/ButtonControlBar.js b/app/src/components/Controls/ButtonControlBar.js
index 2ee5b7e..f6e4fd6 100644
--- a/app/src/components/Controls/ButtonControlBar.js
+++ b/app/src/components/Controls/ButtonControlBar.js
@@ -7,6 +7,7 @@ import useMediaQuery from '@material-ui/core/useMediaQuery';
import classnames from 'classnames';
import * as appPropTypes from '../appPropTypes';
import { withRoomContext } from '../../RoomContext';
+import { useIntl } from 'react-intl';
import Fab from '@material-ui/core/Fab';
import Tooltip from '@material-ui/core/Tooltip';
import MicIcon from '@material-ui/icons/Mic';
@@ -57,6 +58,8 @@ const styles = (theme) =>
const ButtonControlBar = (props) =>
{
+ const intl = useIntl();
+
const {
roomClient,
toolbarsVisible,
@@ -73,20 +76,37 @@ const ButtonControlBar = (props) =>
let micTip;
- if (!me.canSendMic || !micProducer)
+ if (!me.canSendMic)
{
micState = 'unsupported';
- micTip = 'Audio unsupported';
+ micTip = intl.formatMessage({
+ id : 'device.audioUnsupported',
+ defaultMessage : 'Audio unsupported'
+ });
+ }
+ else if (!micProducer)
+ {
+ micState = 'off';
+ micTip = intl.formatMessage({
+ id : 'device.activateAudio',
+ defaultMessage : 'Activate audio'
+ });
}
else if (!micProducer.locallyPaused && !micProducer.remotelyPaused)
{
micState = 'on';
- micTip = 'Mute audio';
+ micTip = intl.formatMessage({
+ id : 'device.muteAudio',
+ defaultMessage : 'Mute audio'
+ });
}
else
{
- micState = 'off';
- micTip = 'Unmute audio';
+ micState = 'muted';
+ micTip = intl.formatMessage({
+ id : 'device.unMuteAudio',
+ defaultMessage : 'Unmute audio'
+ });
}
let webcamState;
@@ -96,17 +116,26 @@ const ButtonControlBar = (props) =>
if (!me.canSendWebcam)
{
webcamState = 'unsupported';
- webcamTip = 'Video unsupported';
+ webcamTip = intl.formatMessage({
+ id : 'device.videoUnsupported',
+ defaultMessage : 'Video unsupported'
+ });
}
else if (webcamProducer)
{
webcamState = 'on';
- webcamTip = 'Stop video';
+ webcamTip = intl.formatMessage({
+ id : 'device.stopVideo',
+ defaultMessage : 'Stop video'
+ });
}
else
{
webcamState = 'off';
- webcamTip = 'Start video';
+ webcamTip = intl.formatMessage({
+ id : 'device.startVideo',
+ defaultMessage : 'Start video'
+ });
}
let screenState;
@@ -116,17 +145,26 @@ const ButtonControlBar = (props) =>
if (!me.canShareScreen)
{
screenState = 'unsupported';
- screenTip = 'Screen sharing not supported';
+ screenTip = intl.formatMessage({
+ id : 'device.screenSharingUnsupported',
+ defaultMessage : 'Screen sharing not supported'
+ });
}
else if (screenProducer)
{
screenState = 'on';
- screenTip = 'Stop screen sharing';
+ screenTip = intl.formatMessage({
+ id : 'device.stopScreenSharing',
+ defaultMessage : 'Stop screen sharing'
+ });
}
else
{
screenState = 'off';
- screenTip = 'Start screen sharing';
+ screenTip = intl.formatMessage({
+ id : 'device.startScreenSharing',
+ defaultMessage : 'Start screen sharing'
+ });
}
const smallScreen = useMediaQuery(theme.breakpoints.down('sm'));
@@ -143,7 +181,10 @@ const ButtonControlBar = (props) =>
>
Date: Sat, 9 May 2020 00:43:20 +0200
Subject: [PATCH 26/28] Remove unused function
---
app/src/components/Room.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/src/components/Room.js b/app/src/components/Room.js
index 4dee360..e862be6 100644
--- a/app/src/components/Room.js
+++ b/app/src/components/Room.js
@@ -249,7 +249,6 @@ class Room extends React.PureComponent
anchor={theme.direction === 'rtl' ? 'right' : 'left'}
open={toolAreaOpen}
onClose={() => toggleToolArea()}
- onOpen={() => toggleToolArea()}
classes={{
paper : classes.drawerPaper
}}
From 2dcecae8889472fe74b18aec0783fe8064afade6 Mon Sep 17 00:00:00 2001
From: Roman Drozd
Date: Sat, 9 May 2020 01:26:50 +0200
Subject: [PATCH 27/28] Update pl translation
---
app/src/translations/pl.json | 80 ++++++++++++++++++------------------
1 file changed, 40 insertions(+), 40 deletions(-)
diff --git a/app/src/translations/pl.json b/app/src/translations/pl.json
index 8d3ecf5..174684c 100644
--- a/app/src/translations/pl.json
+++ b/app/src/translations/pl.json
@@ -49,25 +49,25 @@
"room.spotlights": "Aktywni uczestnicy",
"room.passive": "Pasywni uczestnicy",
"room.videoPaused": "To wideo jest wstrzymane.",
- "room.muteAll": null,
- "room.stopAllVideo": null,
- "room.closeMeeting": null,
- "room.clearChat": null,
- "room.clearFileSharing": null,
- "room.speechUnsupported": null,
- "room.moderatoractions": null,
- "room.raisedHand": null,
- "room.loweredHand": null,
- "room.extraVideo": null,
- "room.overRoomLimit": null,
+ "room.muteAll": "Wycisz wszystkich",
+ "room.stopAllVideo": "Zatrzymaj wszystkie Video",
+ "room.closeMeeting": "Zamknij spotkanie",
+ "room.clearChat": "Wyczyść Chat",
+ "room.clearFileSharing": "Wyczyść pliki",
+ "room.speechUnsupported": "Twoja przeglądarka nie rozpoznaje mowy",
+ "room.moderatoractions": "Akcje moderatora",
+ "room.raisedHand": "{displayName} podniósł rękę",
+ "room.loweredHand": "{displayName} opuścił rękę",
+ "room.extraVideo": "Dodatkowe Video",
+ "room.overRoomLimit": "Pokój jest pełny, spróbuj za jakiś czas.",
"room.help": "Pomoc",
- "room.about": null,
- "room.shortcutKeys": null,
+ "room.about": "O pogramie",
+ "room.shortcutKeys": "Skróty klawiaturowe",
- "me.mutedPTT": null,
+ "me.mutedPTT": "Masz wyciszony mikrofon, przytrzymaj spację aby mówić",
- "roles.gotRole": null,
- "roles.lostRole": null,
+ "roles.gotRole": "Masz rolę {role}",
+ "roles.lostRole": "Nie masz już roli {role}",
"tooltip.login": "Zaloguj",
"tooltip.logout": "Wyloguj",
@@ -79,11 +79,11 @@
"tooltip.lobby": "Pokaż poczekalnię",
"tooltip.settings": "Pokaż ustawienia",
"tooltip.participants": "Pokaż uczestników",
- "tooltip.kickParticipant": null,
- "tooltip.muteParticipant": null,
- "tooltip.muteParticipantVideo": null,
- "tooltip.raisedHand": null,
- "tooltip.muteScreenSharing": null,
+ "tooltip.kickParticipant": "Wyrzuć użytkownika",
+ "tooltip.muteParticipant": "Wycisz użytkownika",
+ "tooltip.muteParticipantVideo": "Wyłącz wideo użytkownika",
+ "tooltip.raisedHand": "Podnieś rękę",
+ "tooltip.muteScreenSharing": "Anuluj udostępniania pulpitu przez użytkownika",
"label.roomName": "Nazwa konferencji",
"label.chooseRoomButton": "Kontynuuj",
@@ -97,7 +97,7 @@
"label.filesharing": "Udostępnianie plików",
"label.participants": "Uczestnicy",
"label.shareFile": "Udostępnij plik",
- "label.shareGalleryFile": null,
+ "label.shareGalleryFile": "Udostępnij obraz",
"label.fileSharingUnsupported": "Udostępnianie plików nie jest obsługiwane",
"label.unknown": "Nieznane",
"label.democratic": "Układ demokratyczny",
@@ -108,12 +108,12 @@
"label.veryHigh": "Bardzo wysoka (FHD)",
"label.ultra": "Ultra (UHD)",
"label.close": "Zamknij",
- "label.media": null,
- "label.appearence": null,
- "label.advanced": null,
- "label.addVideo": null,
- "label.promoteAllPeers": null,
- "label.moreActions": null,
+ "label.media": "Media",
+ "label.appearence": "Wygląd",
+ "label.advanced": "Zaawansowane",
+ "label.addVideo": "Dodaj wideo",
+ "label.promoteAllPeers": "Wpuść wszystkich",
+ "label.moreActions": "Więcej akcji",
"settings.settings": "Ustawienia",
"settings.camera": "Kamera",
@@ -131,14 +131,14 @@
"settings.advancedMode": "Tryb zaawansowany",
"settings.permanentTopBar": "Stały górny pasek",
"settings.lastn": "Liczba widocznych uczestników (zdalnych)",
- "settings.hiddenControls": null,
- "settings.notificationSounds": null,
- "settings.showNotifications": null,
- "settings.buttonControlBar": null,
- "settings.echoCancellation": null,
- "settings.autoGainControl": null,
- "settings.noiseSuppression": null,
- "settings.drawerOverlayed": null,
+ "settings.hiddenControls": "Ukryte kontrolki mediów",
+ "settings.notificationSounds": "Powiadomienia dźwiękiem",
+ "settings.showNotifications": "Pokaż powiadomienia",
+ "settings.buttonControlBar": "Rozdziel kontrolki mediów",
+ "settings.echoCancellation": "Usuwanie echa",
+ "settings.autoGainControl": "Auto korekta wzmocnienia",
+ "settings.noiseSuppression": "Wyciszenie szumów",
+ "settings.drawerOverlayed": "Szuflada nad zawartością",
"filesharing.saveFileError": "Nie można zapisać pliku",
"filesharing.startingFileShare": "Próba udostępnienia pliku",
@@ -180,8 +180,8 @@
"devices.cameraDisconnected": "Kamera odłączona",
"devices.cameraError": "Wystąpił błąd podczas uzyskiwania dostępu do kamery",
- "moderator.clearChat": null,
- "moderator.clearFiles": null,
- "moderator.muteAudio": null,
- "moderator.muteVideo": null
+ "moderator.clearChat": "Moderator wyczyścił chat",
+ "moderator.clearFiles": "Moderator wyczyścił pliki",
+ "moderator.muteAudio": "Moderator wyciszył audio",
+ "moderator.muteVideo": "Moderator wyciszył twoje video"
}
\ No newline at end of file
From 36b40fd795e346372784f5bd631e2703498698b1 Mon Sep 17 00:00:00 2001
From: Stefan Otto
Date: Sat, 9 May 2020 12:15:05 +0200
Subject: [PATCH 28/28] Added german translations
---
app/src/translations/de.json | 72 ++++++++++++++++++------------------
1 file changed, 36 insertions(+), 36 deletions(-)
diff --git a/app/src/translations/de.json b/app/src/translations/de.json
index 402c4b3..c4b67fe 100644
--- a/app/src/translations/de.json
+++ b/app/src/translations/de.json
@@ -52,22 +52,22 @@
"room.muteAll": "Alle stummschalten",
"room.stopAllVideo": "Alle Videos stoppen",
"room.closeMeeting": "Meeting schließen",
- "room.clearChat": null,
- "room.clearFileSharing": null,
+ "room.clearChat": "Liste löschen",
+ "room.clearFileSharing": "Liste löschen",
"room.speechUnsupported": "Dein Browser unterstützt keine Spracherkennung",
- "room.moderatoractions": null,
- "room.raisedHand": null,
- "room.loweredHand": null,
- "room.extraVideo": null,
- "room.overRoomLimit": null,
- "room.help": null,
- "room.about": null,
- "room.shortcutKeys": null,
+ "room.moderatoractions": "Moderator Aktionen",
+ "room.raisedHand": "{displayName} hebt die Hand",
+ "room.loweredHand": "{displayName} senkt die Hand",
+ "room.extraVideo": "Video hinzufügen",
+ "room.overRoomLimit": "Der Raum ist voll, probiere es später nochmal",
+ "room.help": "Hilfe",
+ "room.about": "Impressum",
+ "room.shortcutKeys": "Tastaturkürzel",
"me.mutedPTT": "Du bist stummgeschalted, Halte die SPACE-Taste um zu sprechen",
- "roles.gotRole": null,
- "roles.lostRole": null,
+ "roles.gotRole": "Rolle erhalten: {role}",
+ "roles.lostRole": "Rolle entzogen: {role}",
"tooltip.login": "Anmelden",
"tooltip.logout": "Abmelden",
@@ -79,11 +79,11 @@
"tooltip.lobby": "Warteraum",
"tooltip.settings": "Einstellungen",
"tooltip.participants": "Teilnehmer",
- "tooltip.kickParticipant": "Teilnehmer rauswerfen",
- "tooltip.muteParticipant": null,
- "tooltip.muteParticipantVideo": null,
- "tooltip.raisedHand": null,
- "tooltip.muteScreenSharing": null,
+ "tooltip.kickParticipant": "Rauswerfen",
+ "tooltip.muteParticipant": "Stummschalten",
+ "tooltip.muteParticipantVideo": "Video stoppen",
+ "tooltip.raisedHand": "Hand heben",
+ "tooltip.muteScreenSharing": "Stoppe Bildschirmfreigabe",
"label.roomName": "Name des Raums",
"label.chooseRoomButton": "Weiter",
@@ -97,7 +97,7 @@
"label.filesharing": "Dateien",
"label.participants": "Teilnehmer",
"label.shareFile": "Datei hochladen",
- "label.shareGalleryFile": null,
+ "label.shareGalleryFile": "Bild teilen",
"label.fileSharingUnsupported": "Dateifreigabe nicht unterstützt",
"label.unknown": "Unbekannt",
"label.democratic": "Demokratisch",
@@ -108,12 +108,12 @@
"label.veryHigh": "Sehr hoch (FHD)",
"label.ultra": "Ultra (UHD)",
"label.close": "Schließen",
- "label.media": null,
- "label.appearence": null,
- "label.advanced": null,
- "label.addVideo": null,
- "label.promoteAllPeers": null,
- "label.moreActions": null,
+ "label.media": "Audio / Video",
+ "label.appearence": "Erscheinung",
+ "label.advanced": "Erweiter",
+ "label.addVideo": "Video hinzufügen",
+ "label.promoteAllPeers": "Alle Teinehmer einlassen",
+ "label.moreActions": "Weitere Aktionen",
"settings.settings": "Einstellungen",
"settings.camera": "Kamera",
@@ -131,14 +131,14 @@
"settings.advancedMode": "Erweiterter Modus",
"settings.permanentTopBar": "Permanente obere Leiste",
"settings.lastn": "Anzahl der sichtbaren Videos",
- "settings.hiddenControls": null,
- "settings.notificationSounds": null,
- "settings.showNotifications": null,
- "settings.buttonControlBar": null,
- "settings.echoCancellation": null,
- "settings.autoGainControl": null,
- "settings.noiseSuppression": null,
- "settings.drawerOverlayed": null,
+ "settings.hiddenControls": "Medienwerkzeugleiste automatisch ausblenden",
+ "settings.notificationSounds": "Audiosignal bei Benachrichtigungen",
+ "settings.showNotifications": "Zeige Benachrichtigungen",
+ "settings.buttonControlBar": "Seperate seitliche Medienwerkzeugleiste",
+ "settings.echoCancellation": "Echounterdrückung",
+ "settings.autoGainControl": "Automatische Pegelregelung (Audioeingang)",
+ "settings.noiseSuppression": "Rauschunterdrückung",
+ "settings.drawerOverlayed": "Seitenpanel verdeckt Hauptinhalt",
"filesharing.saveFileError": "Fehler beim Speichern der Datei",
"filesharing.startingFileShare": "Starte Teilen der Datei",
@@ -180,8 +180,8 @@
"devices.cameraDisconnected": "Kamera getrennt",
"devices.cameraError": "Fehler mit deiner Kamera",
- "moderator.clearChat": null,
- "moderator.clearFiles": null,
- "moderator.muteAudio": null,
- "moderator.muteVideo": null
+ "moderator.clearChat": "Moderator hat Chat gelöscht",
+ "moderator.clearFiles": "Moderator hat geteilte Dateiliste gelöscht",
+ "moderator.muteAudio": "Moderator hat dich stummgeschaltet",
+ "moderator.muteVideo": "Moderator hat dein Video gestoppt"
}