fix(app): paste clipboard images on mobile (#2793)

Native composers had no path from the device clipboard into image attachments. Route clipboard data URLs through the existing attachment persistence flow and expose the action only in the native attachment sheet.
This commit is contained in:
Mohamed Boudra
2026-08-02 14:46:25 +02:00
committed by GitHub
parent 2b474f7df9
commit 0ad51e26a1
14 changed files with 189 additions and 13 deletions
@@ -0,0 +1,29 @@
import type { PickedImageAttachmentInput } from "@/hooks/image-attachment-picker";
interface ClipboardImage {
data: string;
}
export interface ClipboardImageReader {
hasImageAsync: () => Promise<boolean>;
getImageAsync: (options: { format: "png" }) => Promise<ClipboardImage | null>;
}
export async function readClipboardImage(
clipboard: ClipboardImageReader,
): Promise<PickedImageAttachmentInput | null> {
if (!(await clipboard.hasImageAsync())) {
return null;
}
const image = await clipboard.getImageAsync({ format: "png" });
if (!image) {
return null;
}
return {
source: { kind: "data_url", dataUrl: image.data },
mimeType: "image/png",
fileName: "clipboard.png",
};
}