import { Room } from 'matrix-js-sdk'; import { TUploadItem } from '../state/room/roomInputDrafts'; import { encryptFile } from './matrix'; import { safeFile } from './mimeTypes'; import { fulfilledPromiseSettledResult } from './common'; /** * Files → composer upload items for `room`, encrypting first when the room * is E2EE. Shared by the composer's pick/drop/paste paths and the PWA share * target (#155). */ export async function filesToUploadItems(room: Room, files: File[]): Promise { const safeFiles = files.map(safeFile); const metadata = { markedAsSpoiler: false }; if (room.hasEncryptionStateEvent()) { const encrypted = fulfilledPromiseSettledResult( await Promise.allSettled(safeFiles.map((f) => encryptFile(f))), ); return encrypted.map((ef) => ({ ...ef, metadata })); } return safeFiles.map((f) => ({ file: f, originalFile: f, encInfo: undefined, metadata })); }