@sendbird/uikit-react
Version:
Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
63 lines (62 loc) • 2.68 kB
TypeScript
import type { Logger } from '../lib/Sendbird/types';
import type { OpenGlobalModalProps } from '../hooks/useModal';
import type { StringSet } from '../ui/Label/stringSet';
interface CountLimitParams {
totalCount: number;
uikitMultipleFilesMessageLimit: number;
openModal: (props: OpenGlobalModalProps) => void;
stringSet: StringSet;
logger?: Logger;
logTag?: string;
}
/**
* Validates that the resulting file count (existing + incoming) does not
* exceed the configured limit. Opens the count-limit modal on failure.
* Returns true when within limit.
*/
export declare const validateFileCount: ({ totalCount, uikitMultipleFilesMessageLimit, openModal, stringSet, logger, logTag, }: CountLimitParams) => boolean;
interface TypeFilterParams {
files: File[];
acceptableMimeTypes?: string[];
openModal: (props: OpenGlobalModalProps) => void;
stringSet: StringSet;
logger?: Logger;
logTag?: string;
}
/**
* Validates that every file matches the consumer's acceptableMimeTypes (or
* the UIKit default supported list when unspecified). Opens the unsupported-
* type modal and rejects the whole batch when any file fails.
*/
export declare const validateFileTypes: ({ files, acceptableMimeTypes, openModal, stringSet, logger, logTag, }: TypeFilterParams) => boolean;
interface SizeLimitParams {
files: File[];
uikitUploadSizeLimit: number;
openModal: (props: OpenGlobalModalProps) => void;
stringSet: StringSet;
logger?: Logger;
logTag?: string;
}
/**
* Validates that no file exceeds the configured size limit. Opens the
* size-limit modal on failure. Returns true when all files within limit.
*/
export declare const validateFileSizes: ({ files, uikitUploadSizeLimit, openModal, stringSet, logger, logTag, }: SizeLimitParams) => boolean;
export interface ValidateFilesForUploadParams {
files: File[];
uikitUploadSizeLimit: number;
uikitMultipleFilesMessageLimit: number;
acceptableMimeTypes: string[] | undefined;
openModal: (props: OpenGlobalModalProps) => void;
stringSet: StringSet;
logger?: Logger;
/** Logger context tag (e.g. 'GroupChannel|useHandleUploadFiles'). */
logTag?: string;
}
/**
* Validates a File[] before upload. Used by the legacy immediate-send hooks.
* Composer staging (usePendingFiles) calls validateFileTypes, validateFileCount,
* and validateFileSizes directly so it can check combined-with-staging count.
*/
export declare const validateFilesForUpload: ({ files, uikitUploadSizeLimit, uikitMultipleFilesMessageLimit, acceptableMimeTypes, openModal, stringSet, logger, logTag, }: ValidateFilesForUploadParams) => boolean;
export {};