diff --git a/app/src/components/UnsupportedBrowser.js b/app/src/components/UnsupportedBrowser.js
new file mode 100644
index 0000000..480e792
--- /dev/null
+++ b/app/src/components/UnsupportedBrowser.js
@@ -0,0 +1,154 @@
+import React from 'react';
+import { withStyles } from '@material-ui/core/styles';
+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 DialogContent from '@material-ui/core/DialogContent';
+import Grid from '@material-ui/core/Grid';
+import List from '@material-ui/core/List';
+import ListItem from '@material-ui/core/ListItem';
+import ListItemText from '@material-ui/core/ListItemText';
+import ListItemAvatar from '@material-ui/core/ListItemAvatar';
+import Avatar from '@material-ui/core/Avatar';
+import WebAssetIcon from '@material-ui/icons/WebAsset';
+import ErrorIcon from '@material-ui/icons/Error';
+import Hidden from '@material-ui/core/Hidden';
+
+const styles = (theme) =>
+ ({
+ dialogPaper :
+ {
+ width : '40vw',
+ [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'
+ },
+ list : {
+ backgroundColor : theme.palette.background.paper
+ },
+ errorAvatar : {
+ width : theme.spacing(20),
+ height : theme.spacing(20)
+ }
+ });
+
+const open=true;
+const dividers=true;
+
+let dense=false;
+
+const supportedBrowsers=[
+ { name: 'Chrome/Chromium', version: '74', vendor: 'Google' },
+ { name: 'Edge', version: '18', vendor: 'Microsoft' },
+ { name: 'Firefox', version: '60', vendor: 'Mozilla' },
+ { name: 'Safari', version: '12', vendor: 'Apple' },
+ { name: 'Opera', version: '62', vendor: '' },
+ // { name: 'Brave', version: '1.5', vendor: '' },
+ // { name: 'Vivaldi', version: '3', vendor: '' },
+ { name: 'Samsung Internet', version: '11.1.1.52', vendor: '' }
+];
+
+const UnsupportedBrowser = ({
+ platform,
+ webrtcUnavailable,
+ classes
+}) =>
+{
+ if (platform !== 'desktop')
+ {
+ dense=true;
+ }
+
+ return (
+
+ );
+};
+
+UnsupportedBrowser.propTypes =
+{
+ webrtcUnavailable : PropTypes.bool.isRequired,
+ platform : PropTypes.string.isRequired,
+ classes : PropTypes.object.isRequired
+};
+
+export default withStyles(styles)(UnsupportedBrowser);
diff --git a/app/src/index.js b/app/src/index.js
index c5f333d..e21de44 100644
--- a/app/src/index.js
+++ b/app/src/index.js
@@ -12,6 +12,7 @@ import RoomClient from './RoomClient';
import RoomContext from './RoomContext';
import deviceInfo from './deviceInfo';
import * as meActions from './actions/meActions';
+import UnsupportedBrowser from './components/UnsupportedBrowser';
import ChooseRoom from './components/ChooseRoom';
import LoadingView from './components/LoadingView';
import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';
@@ -20,7 +21,7 @@ import { persistor, store } from './store';
import { SnackbarProvider } from 'notistack';
import * as serviceWorker from './serviceWorker';
import { ReactLazyPreload } from './components/ReactLazyPreload';
-
+import { detectDevice } from 'mediasoup-client';
// import messagesEnglish from './translations/en';
import messagesNorwegian from './translations/nb';
import messagesGerman from './translations/de';
@@ -138,6 +139,52 @@ function run()
// Get current device.
const device = deviceInfo();
+ let unsupportedBrowser=false;
+
+ let webrtcUnavailable=false;
+
+ if (detectDevice() === undefined)
+ {
+ logger.error('Unsupported browser detected by mediasoup client detectDevice! deviceInfo: %o', device);
+ unsupportedBrowser=true;
+ }
+ else
+ if (
+ navigator.mediaDevices === undefined ||
+ navigator.mediaDevices.getUserMedia === undefined ||
+ window.RTCPeerConnection === undefined
+ )
+ {
+ logger.error('WebRTC is unavialable in your browser! deviceInfo: %o', device);
+ webrtcUnavailable=true;
+ }
+ else
+ if (device.name === 'safari' && !isNaN(device.version) && parseFloat(device.version) < 12)
+ {
+ unsupportedBrowser=true;
+ }
+ else
+ {
+ logger.debug('Supported Browser! deviceInfo: %o', device);
+ }
+
+ if (unsupportedBrowser || webrtcUnavailable)
+ {
+ render(
+
+
+
+
+ ,
+ document.getElementById('multiparty-meeting')
+ );
+
+ return;
+ }
+
store.dispatch(
meActions.setMe({
peerId,
diff --git a/app/src/translations/cn.json b/app/src/translations/cn.json
index 8976787..6ecd36f 100644
--- a/app/src/translations/cn.json
+++ b/app/src/translations/cn.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": null,
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
\ No newline at end of file
diff --git a/app/src/translations/cs.json b/app/src/translations/cs.json
index b119b50..3305f92 100644
--- a/app/src/translations/cs.json
+++ b/app/src/translations/cs.json
@@ -190,5 +190,9 @@
"moderator.muteAudio": null,
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
\ No newline at end of file
diff --git a/app/src/translations/de.json b/app/src/translations/de.json
index d05780f..6a5dcf6 100644
--- a/app/src/translations/de.json
+++ b/app/src/translations/de.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": "Moderator hat dich stummgeschaltet",
"moderator.muteVideo": "Moderator hat dein Video gestoppt",
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
diff --git a/app/src/translations/dk.json b/app/src/translations/dk.json
index fa40da0..bf09c55 100644
--- a/app/src/translations/dk.json
+++ b/app/src/translations/dk.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": null,
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
diff --git a/app/src/translations/el.json b/app/src/translations/el.json
index ef661a0..87a37c4 100644
--- a/app/src/translations/el.json
+++ b/app/src/translations/el.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": null,
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
\ No newline at end of file
diff --git a/app/src/translations/en.json b/app/src/translations/en.json
index f8e4bfd..fbbd13b 100644
--- a/app/src/translations/en.json
+++ b/app/src/translations/en.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": "Moderator muted your audio",
"moderator.muteVideo": "Moderator muted your video",
"moderator.muteScreenSharing": "Moderator muted your screen sharing",
- "moderator.stopScreenSharing": "Moderator stopped your screen sharing"
+ "moderator.stopScreenSharing": "Moderator stopped your screen sharing",
+
+ "unsupportedBrowser.titleUsnsupportedBrowser": "Detected unsupported browser!",
+ "unsupportedBrowser.titlewebrtcUnavailable": "Required functionality not available in your browser!",
+ "unsupportedBrowser.bodyText": "This meeting service requires a functionality that is not supported by your browser. Please upgrade, or switch to a different browser, or check your settings. Supported browsers:"
}
\ No newline at end of file
diff --git a/app/src/translations/es.json b/app/src/translations/es.json
index 8100917..6d20c1f 100644
--- a/app/src/translations/es.json
+++ b/app/src/translations/es.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": null,
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
diff --git a/app/src/translations/fr.json b/app/src/translations/fr.json
index a85d841..4f80ebe 100644
--- a/app/src/translations/fr.json
+++ b/app/src/translations/fr.json
@@ -190,5 +190,9 @@
"moderator.muteAudio": null,
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
diff --git a/app/src/translations/hr.json b/app/src/translations/hr.json
index 2e3a973..b62ac73 100644
--- a/app/src/translations/hr.json
+++ b/app/src/translations/hr.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": "Moderator je utišao tvoj zvuk",
"moderator.muteVideo": "Moderator je zaustavio tvoj video",
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
diff --git a/app/src/translations/hu.json b/app/src/translations/hu.json
index 8b6ea25..124e0e1 100644
--- a/app/src/translations/hu.json
+++ b/app/src/translations/hu.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": "A moderátor elnémította a hangod",
"moderator.muteVideo": "A moderátor elnémította a videód",
"moderator.muteScreenSharing": "A moderátor szünetelteti képernyőmegosztásod",
- "moderator.stopScreenSharing": "A moderátor leállította a képernyőmegosztásod"
+ "moderator.stopScreenSharing": "A moderátor leállította a képernyőmegosztásod",
+
+ "unsupportedBrowser.titleUnsupportedBrowser": "A bőngésző verziód sajnos nem támogatott! :-(",
+ "unsupportedBrowser.titlewebrtcUnavailable": "A böngésződ egy szükséges funkciója nem elérhető!",
+ "unsupportedBrowser.bodyText": "Kérlek frissítsd a böngésződ, válts másik böngészőre, vagy ellenőrizd a böngésződ beállításait! Támogatott böngészők:"
}
diff --git a/app/src/translations/it.json b/app/src/translations/it.json
index 6dce676..4e092c1 100644
--- a/app/src/translations/it.json
+++ b/app/src/translations/it.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": "Il moderatore ha mutato il tuo audio",
"moderator.muteVideo": "Il moderatore ha fermato il tuo video",
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
-}
\ No newline at end of file
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
+}
diff --git a/app/src/translations/lv.json b/app/src/translations/lv.json
index 2d71aaf..9f62d12 100644
--- a/app/src/translations/lv.json
+++ b/app/src/translations/lv.json
@@ -185,5 +185,9 @@
"moderator.muteAudio": "Moderators noklusināja jūsu mikrofonu",
"moderator.muteVideo": "Moderators atslēdza jūsu kameru",
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
diff --git a/app/src/translations/nb.json b/app/src/translations/nb.json
index b1ba84e..8cd31a9 100644
--- a/app/src/translations/nb.json
+++ b/app/src/translations/nb.json
@@ -190,6 +190,10 @@
"moderator.clearFiles": "Moderator fjernet filer",
"moderator.muteAudio": "Moderator mutet lyden din",
"moderator.muteVideo": "Moderator mutet videoen din",
- "moderator.muteScreenSharing": null ,
- "moderator.stopScreenSharing": null
+ "moderator.muteScreenSharing": null,
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
\ No newline at end of file
diff --git a/app/src/translations/pl.json b/app/src/translations/pl.json
index 2a0d08c..c5baa68 100644
--- a/app/src/translations/pl.json
+++ b/app/src/translations/pl.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": "Moderator wyciszył audio",
"moderator.muteVideo": "Moderator wyciszył twoje video",
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
\ No newline at end of file
diff --git a/app/src/translations/pt.json b/app/src/translations/pt.json
index 6c7b122..1fb0103 100644
--- a/app/src/translations/pt.json
+++ b/app/src/translations/pt.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": null,
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
diff --git a/app/src/translations/ro.json b/app/src/translations/ro.json
index e6f390a..9520474 100644
--- a/app/src/translations/ro.json
+++ b/app/src/translations/ro.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": null,
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
diff --git a/app/src/translations/tr.json b/app/src/translations/tr.json
index 0c53df3..f3fa20d 100644
--- a/app/src/translations/tr.json
+++ b/app/src/translations/tr.json
@@ -182,6 +182,15 @@
"devices.cameraDisconnected": "Kamera bağlı değil",
"devices.cameraError": "Kameranıza erişilirken bir hata oluştu",
+
+ "moderator.clearChat": null,
+ "moderator.clearFiles": null,
+ "moderator.muteAudio": null,
+ "moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
diff --git a/app/src/translations/tw.json b/app/src/translations/tw.json
index 20ad15e..103d4ce 100644
--- a/app/src/translations/tw.json
+++ b/app/src/translations/tw.json
@@ -190,5 +190,9 @@
"moderator.muteAudio": "您已被管理員靜音",
"moderator.muteVideo": "您的視訊已被管理員關閉",
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
\ No newline at end of file
diff --git a/app/src/translations/uk.json b/app/src/translations/uk.json
index 9ab44d4..fc9b0a6 100644
--- a/app/src/translations/uk.json
+++ b/app/src/translations/uk.json
@@ -191,5 +191,9 @@
"moderator.muteAudio": null,
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null,
- "moderator.stopScreenSharing": null
+ "moderator.stopScreenSharing": null,
+
+ "unsupportedBrowser.titleUnsupportedBrowser": null,
+ "unsupportedBrowser.titlewebrtcUnavailable": null,
+ "unsupportedBrowser.bodyText": null
}
\ No newline at end of file