From 4474d87ed2509888263444e4999dc8951969427b Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 25 Nov 2020 11:55:30 +0200 Subject: [PATCH] Fix: Unhandled exception for (#1512) * fix: invalid handling disabled={false} causing app crash Signed-off-by: Roman * re-fix: put React.Children.only() validation inside try-catch to avoid crash as well Signed-off-by: Roman --- src/renderer/components/input/drop-file-input.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/renderer/components/input/drop-file-input.tsx b/src/renderer/components/input/drop-file-input.tsx index 32ace899d6..70dd8ddf9c 100644 --- a/src/renderer/components/input/drop-file-input.tsx +++ b/src/renderer/components/input/drop-file-input.tsx @@ -51,12 +51,15 @@ export class DropFileInput extends React.Component< } render() { - const { disabled, className } = this.props; const { onDragEnter, onDragLeave, onDragOver, onDrop } = this; + const { disabled, className } = this.props; try { const contentElem = React.Children.only(this.props.children) as React.ReactElement>; + if (disabled) { + return contentElem; + } const isValidContentElem = React.isValidElement(contentElem); - if (!disabled && isValidContentElem) { + if (isValidContentElem) { const contentElemProps: React.HTMLProps = { className: cssNames("DropFileInput", className, { droppable: this.dropAreaActive, @@ -69,7 +72,7 @@ export class DropFileInput extends React.Component< return React.cloneElement(contentElem, contentElemProps); } } catch (err) { - logger.error("Invalid root content-element for DropFileInput", { err: String(err) }); + logger.error(`Error: must contain only single child element`); return this.props.children; } }