81 lines
2.1 KiB
JavaScript
81 lines
2.1 KiB
JavaScript
import cleanAxios from "../../utils/CleanAxios";
|
|
import { store } from "../../redux/store";
|
|
import { addMediaForJob } from "../../redux/media/media.actions";
|
|
import normalizeUrl from "normalize-url";
|
|
import { notification } from "antd";
|
|
import i18n from "i18next";
|
|
|
|
export const handleUpload = async ({ ev, context }) => {
|
|
const { onError, onSuccess, onProgress, file } = ev;
|
|
const { jobid, invoice_number, vendorid, callbackAfterUpload } = context;
|
|
|
|
const bodyshop = store.getState().user.bodyshop;
|
|
var options = {
|
|
headers: {
|
|
"X-Requested-With": "XMLHttpRequest",
|
|
ims_token: bodyshop.localmediatoken,
|
|
},
|
|
onUploadProgress: (e) => {
|
|
if (!!onProgress) onProgress({ percent: (e.loaded / e.total) * 100 });
|
|
},
|
|
};
|
|
|
|
const formData = new FormData();
|
|
|
|
formData.append("jobid", jobid);
|
|
if (invoice_number) {
|
|
formData.append("invoice_number", invoice_number);
|
|
formData.append("vendorid", vendorid);
|
|
}
|
|
formData.append("file", file);
|
|
|
|
const imexMediaServerResponse = await cleanAxios.post(
|
|
normalizeUrl(
|
|
`${bodyshop.localmediaserverhttp}/${
|
|
invoice_number ? "bills" : "jobs"
|
|
}/upload`
|
|
),
|
|
formData,
|
|
{
|
|
...options,
|
|
}
|
|
);
|
|
|
|
if (imexMediaServerResponse.status !== 200) {
|
|
if (!!onError) {
|
|
onError(imexMediaServerResponse.statusText);
|
|
}
|
|
} else {
|
|
onSuccess && onSuccess(file);
|
|
notification.open({
|
|
type: "success",
|
|
key: "docuploadsuccess",
|
|
message: i18n.t("documents.successes.insert"),
|
|
});
|
|
store.dispatch(
|
|
addMediaForJob({
|
|
jobid,
|
|
media: imexMediaServerResponse.data.map((d) => {
|
|
return {
|
|
...d,
|
|
selected: false,
|
|
src: normalizeUrl(`${bodyshop.localmediaserverhttp}/${d.src}`),
|
|
...(d.optimized && {
|
|
optimized: normalizeUrl(
|
|
`${bodyshop.localmediaserverhttp}/${d.optimized}`
|
|
),
|
|
}),
|
|
thumbnail: normalizeUrl(
|
|
`${bodyshop.localmediaserverhttp}/${d.thumbnail}`
|
|
),
|
|
};
|
|
}),
|
|
})
|
|
);
|
|
}
|
|
|
|
if (callbackAfterUpload) {
|
|
callbackAfterUpload();
|
|
}
|
|
};
|