52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
export const MEDIA_LIBRARY_TAGS = ['penis', 'chest', 'selfie', 'topless', 'feet'] as const;
|
|
export type MediaLibraryTag = (typeof MEDIA_LIBRARY_TAGS)[number];
|
|
|
|
export const MEDIA_LIBRARY_SAFETY = ['sfw', 'nsfw', 'unknown'] as const;
|
|
export type MediaLibrarySafety = (typeof MEDIA_LIBRARY_SAFETY)[number];
|
|
|
|
export interface MediaLibraryClassification {
|
|
tags: MediaLibraryTag[];
|
|
safety: Exclude<MediaLibrarySafety, 'unknown'>;
|
|
description: string;
|
|
confidence: number;
|
|
}
|
|
|
|
export interface MediaLibraryAsset {
|
|
id: string;
|
|
tags: MediaLibraryTag[];
|
|
safety: MediaLibrarySafety;
|
|
classificationStatus: 'ready' | 'failed';
|
|
description: string | null;
|
|
confidence: number | null;
|
|
fileName: string;
|
|
relativePath: string;
|
|
mimeType: string;
|
|
sizeBytes: number;
|
|
width: number;
|
|
height: number;
|
|
enabled: boolean;
|
|
consentConfirmedAt: number;
|
|
createdAt: number;
|
|
updatedAt: number;
|
|
sendCount: number;
|
|
lastSentAt: number | null;
|
|
}
|
|
|
|
export type MediaRequestKind = MediaLibraryTag | 'generic';
|
|
|
|
export interface MediaLibrarySend {
|
|
id: number;
|
|
assetId: string;
|
|
accountId: string;
|
|
conversationId: string;
|
|
incomingKey: string;
|
|
requestKind: MediaRequestKind;
|
|
status: 'pending' | 'sent' | 'failed' | 'superseded';
|
|
requestedAt: number;
|
|
sentAt: number | null;
|
|
matrixMediaEventId: string | null;
|
|
matrixTextEventId: string | null;
|
|
mxcUri: string | null;
|
|
error: string | null;
|
|
}
|