Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 46x | import { customInstance } from "@services/api";
import { useMutation, useQueryClient } from "react-query";
import { buildAccountsUrl } from "@services/api/utils.api";
import { UploadProgressParams } from "@components/UploadFile/hooks/useUploadFiles";
import { useUploadSingleImage as useUploadSingleImageNew } from "@hooks/upload-api/uploadHooks";
type Props = {
list: {
file: File;
id: string;
}[];
onUploadProgress: (params: UploadProgressParams) => void;
onUploadFinish(params: { identifiers: (number | string)[] }): void;
onUploadFailed(params: { fileIds: string[] }): void;
};
export const useUploadCustomerFile = () => {
const { handleUpload, isLoading } = useUploadSingleImageNew();
const queryClient = useQueryClient();
const createImageMutation = useMutation(({ data, onUploadProgress }: any) => {
return customInstance({
url: buildAccountsUrl("media-items"),
method: "POST",
data,
onUploadProgress,
});
});
const handlePostImage = async ({
list,
onUploadFailed,
onUploadFinish,
onUploadProgress,
}: Props) => {
try {
const tempUrl = await handleUpload({
file: list[0]?.file,
formType: "customer_avatar",
});
if (!tempUrl) return "";
const promise = await createImageMutation.mutateAsync(
{
data: { label: "main_pic", url: tempUrl },
onUploadProgress: (progressEvent: ProgressEvent) => {
onUploadProgress({
identifier: tempUrl,
fileId: list?.[0].id,
progress: (progressEvent.loaded * 100) / progressEvent.total,
});
},
},
{
onSettled: () => {
onUploadFinish({ identifiers: [tempUrl] });
},
},
);
await queryClient.invalidateQueries("get-all-media-items");
const url: string = promise.URL || "";
return url;
} catch (err) {
onUploadFailed({ fileIds: [list?.[0]?.id] });
return "";
}
};
return { handlePostImage, isLoading };
};
|