keanu-weblite/src/models/eventAttachment.ts

42 lines
1.4 KiB
TypeScript
Raw Normal View History

import { MatrixEvent, Room } from "matrix-js-sdk";
2025-08-20 15:12:04 +02:00
import { AttachmentBatch } from "./attachment";
import { Proof, MediaMetadata } from "./proof";
2025-06-09 09:44:37 +02:00
export type KeanuEventExtension = {
isMxThread?: boolean;
isChannelMessage?: boolean;
isPinned?: boolean;
parentThread?: MatrixEvent & KeanuEventExtension;
replyEvent?: MatrixEvent & KeanuEventExtension;
2025-08-20 15:12:04 +02:00
uploadBatch?: AttachmentBatch;
2025-06-09 09:44:37 +02:00
}
export type KeanuEvent = MatrixEvent & KeanuEventExtension;
export type EventAttachmentUrlType = "src" | "thumbnail";
2025-07-02 15:40:43 +02:00
export type EventAttachmentUrlData = {data: string, type: EventAttachmentUrlType};
2025-06-09 09:44:37 +02:00
export type EventAttachment = {
event: KeanuEvent;
name: string;
2025-06-09 09:44:37 +02:00
src?: string;
srcSize: number;
srcProgress: number;
2025-07-02 15:40:43 +02:00
srcPromise?: Promise<EventAttachmentUrlData>;
thumbnail?: string;
thumbnailProgress: number;
2025-07-02 15:40:43 +02:00
thumbnailPromise?: Promise<EventAttachmentUrlData>;
autoDownloadable: boolean;
proof?: Proof;
mediaInterventionFlags?: MediaInterventionFlags;
mediaMetadata?: MediaMetadata;
2025-07-02 15:40:43 +02:00
loadSrc: () => Promise<EventAttachmentUrlData>;
loadThumbnail: () => Promise<EventAttachmentUrlData>;
loadBlob: () => Promise<{data: Blob}>;
release: (src: boolean, thumbnail: boolean) => void;
2025-06-09 09:44:37 +02:00
};
export type KeanuRoom = Room & {
displayType: "im.keanu.room_type_default" | "im.keanu.room_type_voice" | "im.keanu.room_type_file" | "im.keanu.room_type_channel" | undefined;
}