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