export interface UploaderItem { /** * 上传文件源路径 */ filePath: string; /** * 上传完成后的文件路径 */ uploadedPath?: string; /** * 文件的大小(B) */ size?: number; /** * 指示当前文件是否是图片,如果设置为 true,则预览时会调用 ImagePreview 打开,否则会调用 Linking.openURL 预览资源。 */ isImage?: boolean; /** * 在已上传列表中显示的预览图像,为空时使用 filePath */ previewPath?: string; /** * 当前状态 */ state: 'notstart'|'uploading'|'success'|'fail'; /** * 当失败时显示 */ message?: string; /** * 当前上传进度,0-100 */ progress?: number; /** * 取消上传回调 */ cancelUpload?: () => void; } export interface UploaderAction { /** * 当前上传条目 */ item: UploaderItem; /** * 当上传进度变化时需要调用 * @param precent 当前上传百分比,0-100 */ onProgress: (precent: number) => void; /** * 当开始上传时需要调用 */ onStart: (message?: string) => void; /** * 当上传失败时需要调用 * @param error 当前错误信息,会显示在条目中 */ onError: (error: unknown) => void; /** * 当上传完成时需要调用 * @param result 上传完成后的结果 * @param message 上传完成后的消息,会显示在条目中 */ onFinish: (result: { /** * 上传完成后的文件路径 */ uploadedUrl: string; /** * 上传完成后的预览图像路径,为空时不修改 */ previewUrl?: string; }, message?: string) => void; } export function stringUrlToUploaderItem(url: string): UploaderItem { return { filePath: url, uploadedPath: url, state: 'success', } }