import type { CnUploadBaseProps } from './upload-base-props'; import type { ICnOSSData } from './oss-data'; import type { ICnUploadFile } from './upload-file'; export interface IUploadContextProps extends Omit { children: React.ReactNode; /** * 上传失败后的回调 */ onError: (file: ICnUploadFile) => void; /** * onChange 返回值是否为详细数据 */ useDetailValue?: boolean; fetchOSSToken: (params: { fileName: string; }) => Promise | undefined; } export interface IUploadContextState { /** * 透传全量 props 中未被消费的部分 props */ props: Omit< IUploadContextProps, | 'defaultValue' | 'value' | 'onChange' | 'onError' | 'onRemove' | 'readOnly' | 'children' | 'useDetailValue' >; limited: boolean; readOnly: boolean; /** * 获取合并内部和外部的文件列表状态 */ getValue: () => ICnUploadFile[]; /** * 用户选择文件且凭证获取之前触发 */ onUploadInit: (fileList: ICnUploadFile[]) => void; /** * 上传过程中触发 */ onUploadProcess: (fileList: ICnUploadFile) => void; /** * 上传完成触发 */ onUploadSuccess: (currentFile: ICnUploadFile) => void; /** * 当用户点击删除时触发执行 */ onRemove: (file: ICnUploadFile) => Promise; /** * 当上传失败后或发生异常时触发执行 */ onError: (file: ICnUploadFile) => void; /** * 内置文件校验 */ fileValidator: (file: File) => void; /** * 存储上传请求实例,当用户删除上传中的文件,可通过请求实例结束文件上传 */ setUploadReq: (key: string, reqInstance: { abort: () => void }) => void; }