Drop Area: Draw quick file in safari (#5517)

This commit is contained in:
Alexander Zinchuk 2025-01-22 23:01:26 +01:00
parent 5e7c38bb33
commit cc82e15654

View File

@ -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<HTMLDivElement>) => {
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);
});