fix: catch prepare file API error

This commit is contained in:
Tristan Yang
2023-02-26 14:43:04 +08:00
parent abc87c8206
commit f04a2f087d
2 changed files with 19 additions and 9 deletions
+14 -6
View File
@@ -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");
+5 -3
View File
@@ -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,