From 1b4ff0bd7a59a32c8769694ecd79c5d6d9fc76ab Mon Sep 17 00:00:00 2001 From: Tony Jin Date: Wed, 12 Jul 2017 15:02:34 -0700 Subject: [PATCH] Fix: Disable chunked upload in IE11 IE11 does not work well with Rusha hashing on the main thread. --- .../moreOptionsCellRenderer.js | 2 +- .../ContentUploader/ContentUploader.js | 7 +++++- src/util/browser.js | 24 +++++++++++++++++++ src/util/mobile.js | 10 -------- 4 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 src/util/browser.js delete mode 100644 src/util/mobile.js diff --git a/src/components/ContentExplorer/moreOptionsCellRenderer.js b/src/components/ContentExplorer/moreOptionsCellRenderer.js index 3505fc2db1..bbc3399136 100644 --- a/src/components/ContentExplorer/moreOptionsCellRenderer.js +++ b/src/components/ContentExplorer/moreOptionsCellRenderer.js @@ -8,7 +8,7 @@ import React from 'react'; import DropdownMenu from '../DropdownMenu'; import { Menu, MenuItem } from '../Menu'; import { Button } from '../Button'; -import isMobile from '../../util/mobile'; +import { isMobile } from '../../util/browser'; import { PERMISSION_CAN_DOWNLOAD, PERMISSION_CAN_RENAME, diff --git a/src/components/ContentUploader/ContentUploader.js b/src/components/ContentUploader/ContentUploader.js index b3911013fc..1829e6980c 100644 --- a/src/components/ContentUploader/ContentUploader.js +++ b/src/components/ContentUploader/ContentUploader.js @@ -13,6 +13,7 @@ import API from '../../api'; import DroppableContent from './DroppableContent'; import Footer from './Footer'; import makeResponsive from '../makeResponsive'; +import { isIE } from '../../util/browser'; import { CLIENT_NAME_CONTENT_UPLOADER, DEFAULT_HOSTNAME_UPLOAD, @@ -246,7 +247,11 @@ class ContentUploader extends Component { uploadFile(item: UploadItem) { const { rootFolderId, chunked } = this.props; const { api, file } = item; - api.getUploadAPI(chunked, file.size).upload({ + + // Disable chunked upload in IE11 for now until hashing is done in a worker + const useChunked = chunked && !isIE(); + + api.getUploadAPI(useChunked, file.size).upload({ id: rootFolderId, file, successCallback: (entries) => this.handleUploadSuccess(item, entries), diff --git a/src/util/browser.js b/src/util/browser.js new file mode 100644 index 0000000000..4cc71be629 --- /dev/null +++ b/src/util/browser.js @@ -0,0 +1,24 @@ +/** + * @flow + * @file Helper to get mobile + * @author Box + */ + +/** + * Returns whether browser is mobile. + * + * @return {boolean} Whether browser is mobile + */ +export function isMobile(): boolean { + // Relying on the user agent to avoid desktop browsers on machines with touch screens. + return /iphone|ipad|ipod|android|blackberry|bb10|mini|windows\sce|palm/i.test(navigator.userAgent); +} + +/** + * Returns whether browser is IE. + * + * @return {boolena} Whether browser is IE + */ +export function isIE() { + return /Trident/i.test(navigator.userAgent); +} diff --git a/src/util/mobile.js b/src/util/mobile.js deleted file mode 100644 index c3d9e9ea1d..0000000000 --- a/src/util/mobile.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @flow - * @file Helper to get mobile - * @author Box - */ - -export default function isMobile() { - // Relying on the user agent to avoid desktop browsers on machines with touch screens. - return /iphone|ipad|ipod|android|blackberry|bb10|mini|windows\sce|palm/i.test(navigator.userAgent); -}