diff --git a/ui/src/components/editor/extensions/upload/index.ts b/ui/src/components/editor/extensions/upload/index.ts index a68a89723..adca39cf7 100644 --- a/ui/src/components/editor/extensions/upload/index.ts +++ b/ui/src/components/editor/extensions/upload/index.ts @@ -4,7 +4,10 @@ import { Plugin, PluginKey, } from "@halo-dev/richtext-editor"; -import { handleFileEvent } from "../../utils/upload"; +import { + containsFileClipboardIdentifier, + handleFileEvent, +} from "../../utils/upload"; export const Upload = Extension.create({ name: "upload", @@ -26,7 +29,8 @@ export const Upload = Extension.create({ } const types = event.clipboardData.types; - if (!(types.length === 1 && types[0].toLowerCase() === "files")) { + + if (!containsFileClipboardIdentifier(types)) { return false; } diff --git a/ui/src/components/editor/utils/upload.ts b/ui/src/components/editor/utils/upload.ts index 4ca9a4ce8..09cd04bc8 100644 --- a/ui/src/components/editor/utils/upload.ts +++ b/ui/src/components/editor/utils/upload.ts @@ -142,3 +142,8 @@ export function fileToBase64(file: File): Promise { reader.readAsDataURL(file); }); } + +export function containsFileClipboardIdentifier(types: readonly string[]) { + const fileTypes = ["files", "application/x-moz-file", "public.file-url"]; + return types.some((type) => fileTypes.includes(type.toLowerCase())); +}