medusa-variant-images-updated
Version:
A variant images plugin for Medusa V2.
47 lines (46 loc) • 1.53 kB
JavaScript
import { fetchBackend } from "./util.js";
const splitImages = (images) => {
const uploadImages = [];
const existingImages = [];
images.forEach((image) => {
if (image.nativeFile && !image.uploadedUrl) {
uploadImages.push(image);
} else {
existingImages.push(image);
}
});
return { uploadImages, existingImages };
};
const uploadSingleImage = async (image) => {
const form = new FormData();
form.append("files", image.nativeFile, image.name);
const res = await fetchBackend("/admin/uploads", { body: form, method: "POST", files: true });
if (res && res.files && res.files[0]) {
return { ...image, url: res.files[0].url, uploadedUrl: res.files[0].url, uploading: false, nativeFile: void 0 };
}
throw new Error("Upload failed");
};
const prepareImages = async (images) => {
const { uploadImages, existingImages } = splitImages(images);
let uploadedImgs = [];
if (uploadImages.length > 0) {
const form = new FormData();
uploadImages.forEach((img) => {
form.append("files", img.nativeFile, img.name);
});
const res = await fetchBackend("/admin/uploads", { body: form, method: "POST", files: true }).catch((err) => console.log(err));
if (res && res.files) {
uploadedImgs = res.files.map((file, idx) => ({
...uploadImages[idx],
url: file.url,
nativeFile: void 0
// Remove nativeFile after upload
}));
}
}
return [...existingImages, ...uploadedImgs];
};
export {
prepareImages,
uploadSingleImage
};