stream-chat
Version:
JS SDK for the Stream Chat API
75 lines (74 loc) • 4.01 kB
TypeScript
import type { AttachmentManagerConfig, UploadRequestFn } from './configuration';
import { AttachmentPostUploadMiddlewareExecutor, AttachmentPreUploadMiddlewareExecutor } from './middleware/attachmentManager';
import { StateStore } from '../store';
import type { AttachmentLoadingState, FileLike, FileReference, LocalAttachment, LocalUploadAttachment, UploadPermissionCheckResult } from './types';
import type { DraftMessage, LocalMessage } from '../types';
import type { MessageComposer } from './messageComposer';
export type FileUploadFilter = (file: Partial<LocalUploadAttachment>) => boolean;
export type AttachmentManagerState = {
attachments: LocalAttachment[];
};
export type AttachmentManagerOptions = {
composer: MessageComposer;
message?: DraftMessage | LocalMessage;
};
export declare class AttachmentManager {
readonly state: StateStore<AttachmentManagerState>;
readonly composer: MessageComposer;
readonly preUploadMiddlewareExecutor: AttachmentPreUploadMiddlewareExecutor;
readonly postUploadMiddlewareExecutor: AttachmentPostUploadMiddlewareExecutor;
private attachmentsByIdGetterCache;
constructor({ composer, message }: AttachmentManagerOptions);
get attachmentsById(): Record<string, LocalAttachment>;
get client(): import("..").StreamChat;
get channel(): import("..").Channel;
get config(): AttachmentManagerConfig;
get acceptedFiles(): AttachmentManagerConfig["acceptedFiles"];
set acceptedFiles(acceptedFiles: AttachmentManagerConfig['acceptedFiles']);
get fileUploadFilter(): AttachmentManagerConfig["fileUploadFilter"];
set fileUploadFilter(fileUploadFilter: AttachmentManagerConfig['fileUploadFilter']);
get maxNumberOfFilesPerMessage(): AttachmentManagerConfig["maxNumberOfFilesPerMessage"];
set maxNumberOfFilesPerMessage(maxNumberOfFilesPerMessage: AttachmentManagerConfig['maxNumberOfFilesPerMessage']);
setCustomUploadFn: (doUploadRequest: UploadRequestFn) => void;
get attachments(): LocalAttachment[];
get hasUploadPermission(): boolean;
get isUploadEnabled(): boolean;
get successfulUploads(): LocalAttachment[];
get successfulUploadsCount(): number;
get uploadsInProgressCount(): number;
get failedUploadsCount(): number;
get blockedUploadsCount(): number;
get pendingUploadsCount(): number;
get availableUploadSlots(): number;
getUploadsByState(state: AttachmentLoadingState): LocalAttachment[];
initState: ({ message }?: {
message?: DraftMessage | LocalMessage;
}) => void;
getAttachmentIndex: (localId: string) => number;
private prepareAttachmentUpdate;
updateAttachment: (attachmentToUpdate: LocalAttachment) => void;
upsertAttachments: (attachmentsToUpsert: LocalAttachment[]) => void;
removeAttachments: (localAttachmentIds: string[]) => void;
getUploadConfigCheck: (fileLike: FileReference | FileLike) => Promise<UploadPermissionCheckResult>;
static toLocalUploadAttachment: (fileLike: FileReference | FileLike) => LocalUploadAttachment;
fileToLocalUploadAttachment: (fileLike: FileReference | FileLike) => Promise<LocalUploadAttachment>;
private ensureLocalUploadAttachment;
/**
* Method to perform the default upload behavior without checking for custom upload functions
* to prevent recursive calls
*/
doDefaultUploadRequest: (fileLike: FileReference | FileLike) => Promise<{
file: string;
thumb_url?: string;
}>;
/**
* todo: docs how to customize the image and file upload by overriding do
*/
doUploadRequest: (fileLike: FileReference | FileLike) => Promise<{
file: string;
thumb_url?: string;
}>;
uploadAttachment: (attachment: LocalUploadAttachment) => Promise<LocalUploadAttachment | undefined>;
uploadFile: (file: FileReference | FileLike) => Promise<LocalUploadAttachment>;
uploadFiles: (files: FileReference[] | FileList | FileLike[]) => Promise<LocalUploadAttachment[] | undefined>;
}