keanu-weblite/src/models/eventAttachment.ts

35 lines
1.2 KiB
TypeScript
Raw Normal View History

import { MatrixEvent, Room } from "matrix-js-sdk";
2025-06-09 09:44:37 +02:00
export type KeanuEventExtension = {
isMxThread?: boolean;
isChannelMessage?: boolean;
isPinned?: boolean;
parentThread?: MatrixEvent & KeanuEventExtension;
replyEvent?: MatrixEvent & KeanuEventExtension;
2025-06-09 09:44:37 +02:00
}
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: MatrixEvent & KeanuEventExtension;
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;
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 KeanuEvent = MatrixEvent & KeanuEventExtension;
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;
}