fix: catch prepare file API error
This commit is contained in:
@@ -54,7 +54,7 @@ const FileMessage: FC<Props> = ({
|
||||
from: from_uid,
|
||||
to
|
||||
});
|
||||
const { stopUploading, data, uploadFile, progress, isSuccess: uploadSuccess } = useUploadFile();
|
||||
const { stopUploading, data, uploadFile, progress, isSuccess: uploadSuccess, isError } = useUploadFile();
|
||||
const fromUser = useAppSelector((store) => store.users.byId[from_uid]);
|
||||
const { size = 0, name, content_type } = properties ?? {};
|
||||
useEffect(() => {
|
||||
@@ -89,6 +89,18 @@ const FileMessage: FC<Props> = ({
|
||||
handleUpSend({ url: content, name, type: content_type });
|
||||
}
|
||||
}, [content, name, content_type]);
|
||||
const handleCancel = () => {
|
||||
stopUploading();
|
||||
URL.revokeObjectURL(content);
|
||||
removeLocalMessage(properties.local_id);
|
||||
};
|
||||
useEffect(() => {
|
||||
if (isError) {
|
||||
// 撤回消息
|
||||
handleCancel();
|
||||
}
|
||||
}, [isError]);
|
||||
|
||||
useEffect(() => {
|
||||
const props = properties ?? {};
|
||||
const propsV2 = imageSize ? { ...props, ...imageSize } : props;
|
||||
@@ -110,11 +122,7 @@ const FileMessage: FC<Props> = ({
|
||||
URL.revokeObjectURL(content);
|
||||
}
|
||||
}, [sendMessageSuccess, content]);
|
||||
const handleCancel = () => {
|
||||
stopUploading();
|
||||
URL.revokeObjectURL(content);
|
||||
removeLocalMessage(properties.local_id);
|
||||
};
|
||||
|
||||
if (!properties) return null;
|
||||
const icon = getFileIcon(content_type, name, "w-9 h-auto");
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ const useUploadFile = (props?: IProps) => {
|
||||
const canceledRef = useRef(false);
|
||||
const sliceUploadedCountRef = useRef(0);
|
||||
const totalSliceCountRef = useRef(1);
|
||||
const [prepareUploadFile, { isLoading: isPreparing }] = usePrepareUploadFileMutation();
|
||||
const [prepareUploadFile, { isLoading: isPreparing, isError: prepareFileError }] = usePrepareUploadFileMutation();
|
||||
const [uploadFileFn, { isLoading: isUploading, isError: uploadFileError }] =
|
||||
useUploadFileMutation();
|
||||
|
||||
@@ -41,6 +41,8 @@ const useUploadFile = (props?: IProps) => {
|
||||
|
||||
const uploadFile = async (file?: File) => {
|
||||
if (!file) return;
|
||||
console.log("up file", file);
|
||||
|
||||
setData(null);
|
||||
const {
|
||||
name = `-${+new Date()}.${file.type.split("/")[1]}`,
|
||||
@@ -95,7 +97,7 @@ const useUploadFile = (props?: IProps) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
// setUploadingFile(false);
|
||||
// 出错 则返回
|
||||
if (!uploadResult || "error" in uploadResult) {
|
||||
return;
|
||||
}
|
||||
@@ -157,7 +159,7 @@ const useUploadFile = (props?: IProps) => {
|
||||
2
|
||||
),
|
||||
uploadFile,
|
||||
isError: uploadFileError,
|
||||
isError: uploadFileError || prepareFileError,
|
||||
isSuccess: !!data,
|
||||
stageFiles,
|
||||
addStageFile,
|
||||
|
||||
Reference in New Issue
Block a user