diff --git a/src/components/middle/MiddleColumn.tsx b/src/components/middle/MiddleColumn.tsx index 0e1124aa0..81d9e96af 100644 --- a/src/components/middle/MiddleColumn.tsx +++ b/src/components/middle/MiddleColumn.tsx @@ -62,7 +62,7 @@ import buildClassName from '../../util/buildClassName'; import buildStyle from '../../util/buildStyle'; import captureEscKeyListener from '../../util/captureEscKeyListener'; import { - IS_ANDROID, IS_ELECTRON, IS_IOS, IS_TRANSLATION_SUPPORTED, MASK_IMAGE_DISABLED, + IS_ANDROID, IS_ELECTRON, IS_IOS, IS_SAFARI, IS_TRANSLATION_SUPPORTED, MASK_IMAGE_DISABLED, } from '../../util/windowEnvironment'; import calculateMiddleFooterTransforms from './helpers/calculateMiddleFooterTransforms'; @@ -357,11 +357,13 @@ function MiddleColumn({ const handleDragEnter = useLastCallback((e: React.DragEvent) => { const { items } = e.dataTransfer || {}; - const shouldDrawQuick = items && items.length > 0 && Array.from(items) + // In Safari, the e.dataTransfer.items list may be empty during dragenter/dragover events, + // preventing the ability to determine file types in advance. More details: https://bugs.webkit.org/show_bug.cgi?id=223517 + const shouldDrawQuick = IS_SAFARI || (items && items.length > 0 && Array.from(items) // Filter unnecessary element for drag and drop images in Firefox (https://github.com/Ajaxy/telegram-tt/issues/49) // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#image .filter((item) => item.type !== 'text/uri-list') - .every((item) => isImage(item) || isVideo(item)); + .every((item) => isImage(item) || isVideo(item))); setDropAreaState(shouldDrawQuick ? DropAreaState.QuickFile : DropAreaState.Document); });