UNPKG

stream-chat

Version:

JS SDK for the Stream Chat API

75 lines (74 loc) 4.01 kB
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>; }