From 8861eca99b6ab0ceecf23a1e9c911c2f4395b0ca Mon Sep 17 00:00:00 2001
From: chrisgarrity <chrisg@media.mit.edu>
Date: Wed, 21 Mar 2018 11:17:07 -0400
Subject: [PATCH] Add more browsers to the unsupported list
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Added:
- Opera (including Opera Mini)
- Silk

Not Added:
- Vivialdi - appears to be ‘Chrome’ in `platform.name`
---
 src/components/browser-modal/browser-modal.jsx | 4 ++--
 src/containers/error-boundary.jsx              | 7 ++++++-
 src/containers/preview-modal.jsx               | 5 +----
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/components/browser-modal/browser-modal.jsx b/src/components/browser-modal/browser-modal.jsx
index c410f7f62..9052d5f57 100644
--- a/src/components/browser-modal/browser-modal.jsx
+++ b/src/components/browser-modal/browser-modal.jsx
@@ -9,7 +9,7 @@ import styles from './browser-modal.css';
 const messages = defineMessages({
     label: {
         id: 'gui.unsupportedBrowser.label',
-        defaultMessage: 'Internet Explorer is not supported',
+        defaultMessage: 'Browser is not supported',
         description: ''
     }
 });
@@ -31,7 +31,7 @@ const BrowserModal = ({intl, ...props}) => (
             <p>
                 { /* eslint-disable max-len */ }
                 <FormattedMessage
-                    defaultMessage="We're very sorry, but Scratch 3.0 does not support Internet Explorer. We recommend trying a newer browser such as Google Chrome, Mozilla Firefox, or Microsoft Edge."
+                    defaultMessage="We're very sorry, but Scratch 3.0 does not support Internet Explorer, Opera or Silk. We recommend trying a newer browser such as Google Chrome, Mozilla Firefox, or Microsoft Edge."
                     description="Unsupported browser description"
                     id="gui.unsupportedBrowser.description"
                 />
diff --git a/src/containers/error-boundary.jsx b/src/containers/error-boundary.jsx
index d7083f052..4c473a737 100644
--- a/src/containers/error-boundary.jsx
+++ b/src/containers/error-boundary.jsx
@@ -35,7 +35,12 @@ class ErrorBoundary extends React.Component {
 
     render () {
         if (this.state.hasError) {
-            if (platform.name === 'IE') {
+            // don't use array.includes because that's something that causes IE to crash.
+            if (
+                platform.name === 'IE' ||
+                platform.name === 'Opera' ||
+                platform.name === 'Opera Mini' ||
+                platform.name === 'Silk') {
                 return <BrowserModalComponent onBack={this.handleBack} />;
             }
             return <CrashMessageComponent onReload={this.handleReload} />;
diff --git a/src/containers/preview-modal.jsx b/src/containers/preview-modal.jsx
index 1209f251f..3fa6c8f03 100644
--- a/src/containers/preview-modal.jsx
+++ b/src/containers/preview-modal.jsx
@@ -36,10 +36,7 @@ class PreviewModal extends React.Component {
         this.props.onViewProject();
     }
     supportedBrowser () {
-        if (platform.name === 'IE') {
-            return false;
-        }
-        return true;
+        return !['IE', 'Opera', 'Opera Mini', 'Silk', 'Vivaldi'].includes(platform.name);
     }
     render () {
         return (this.supportedBrowser() ?
-- 
GitLab