@sendbird/uikit-react
Version:
Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
36 lines (35 loc) • 1.45 kB
TypeScript
import type { Logger } from '../../../lib/Sendbird/types';
import type { OpenGlobalModalProps } from '../../../hooks/useModal';
import type { StringSet } from '../../Label/stringSet';
export interface PendingFile {
id: string;
file: File;
/** Object URL for image previews. Undefined for non-image files. Revoked on remove/unmount. */
previewUrl?: string;
isImage: boolean;
}
export interface UsePendingFilesParams {
uikitUploadSizeLimit: number;
uikitMultipleFilesMessageLimit: number;
acceptableMimeTypes?: string[];
openModal: (props: OpenGlobalModalProps) => void;
stringSet: StringSet;
logger?: Logger;
}
export interface UsePendingFilesReturn {
pendingFiles: PendingFile[];
/**
* Adds files to the staging list. Validates combined-count + per-file size.
* On count/size violation, opens the standard modal and rejects the batch.
*/
addFiles: (files: File[]) => void;
removeFile: (id: string) => void;
clear: () => void;
hasPendingFiles: boolean;
}
/**
* Holds files staged for the message composer before send. Producers (file
* picker, drag-and-drop, clipboard paste) all call addFiles. The owning
* wrapper drains pendingFiles on submit and calls clear().
*/
export declare const usePendingFiles: ({ uikitUploadSizeLimit, uikitMultipleFilesMessageLimit, acceptableMimeTypes, openModal, stringSet, logger, }: UsePendingFilesParams) => UsePendingFilesReturn;