fix: attachment bugs in safari(#1908)

* use widely available arrayBuffer
* fix stream fails in safari
* fix hasFocus bug
* fix safari upload bug
* feat: add HTTP range request support for file serving
This commit is contained in:
Philip Okugbe
2026-02-05 07:47:03 -08:00
committed by GitHub
parent 5c3942c159
commit 4878850b25
8 changed files with 140 additions and 49 deletions
@@ -1,9 +1,9 @@
import { imageDimensionsFromStream } from "image-dimensions";
import { MediaUploadOptions, UploadFn } from "../media-utils";
import { IAttachment } from "../types";
import { generateNodeId } from "../utils";
import { Node } from "@tiptap/pm/model";
import { Command } from "@tiptap/core";
import { imageDimensionsFromData } from 'image-dimensions';
import { MediaUploadOptions, UploadFn } from '../media-utils';
import { IAttachment } from '../types';
import { generateNodeId } from '../utils';
import { Node } from '@tiptap/pm/model';
import { Command } from '@tiptap/core';
const findImageNodeByPlaceholderId = (
doc: Node,
@@ -14,7 +14,7 @@ const findImageNodeByPlaceholderId = (
doc.descendants((node, pos) => {
if (result) return false;
if (
node.type.name === "image" &&
node.type.name === 'image' &&
node.attrs.placeholder?.id === placeholderId
) {
result = { node, pos };
@@ -34,7 +34,11 @@ const handleImageUpload =
if (!validated) return;
const objectUrl = URL.createObjectURL(file);
const imageDimensions = await imageDimensionsFromStream(file.stream());
const imageDimensions = imageDimensionsFromData(
new Uint8Array(await file.arrayBuffer()),
);
const placeholderId = generateNodeId();
const aspectRatio = imageDimensions
? imageDimensions.width / imageDimensions.height