@brizy/cloud-media-upload
Version:
Upload media in Brizy Cloud
75 lines (74 loc) • 2.81 kB
JavaScript
import { ApiFileTypes } from "@brizy/media-gallery/lib/pages/mediaLibrary/types/types";
import mimes from "./mimes.json";
//#region exact like in builder
var TypesOfExtensions;
(function (TypesOfExtensions) {
TypesOfExtensions["Image"] = "image";
TypesOfExtensions["Video"] = "video";
TypesOfExtensions["Audio"] = "audio";
})(TypesOfExtensions || (TypesOfExtensions = {}));
const isTypeOfExtension = (type) => Object.values(TypesOfExtensions).includes(type);
const getAllMimesOfType = (type) => Object.values(mimes).reduce((acc, value) => {
const result = value.filter((i) => i.includes(type));
return result.length ? [...acc, ...result] : acc;
}, []);
const getAllMimes = () => Object.values(mimes).flat();
function isT(v) {
return typeof v !== "undefined" && v !== null;
}
const fromExtensionsToMimeTypes = (extensions) => extensions.length
? extensions
.reduce((acc, i) => {
if (i.includes("*")) {
const type = i.split("/")[0];
return isTypeOfExtension(type) ? [...acc, ...getAllMimesOfType(type)] : acc;
}
else {
const key = i.replace(/\./g, "");
return [...acc, ...mimes[key]];
}
}, [])
.filter(isT)
: getAllMimes();
//#endregion
export const getAcceptableTypes = (acceptedExtensions) => fromExtensionsToMimeTypes(acceptedExtensions).filter(isT);
export const fromItemToImage = ({ name, fileName, extension, altTitle }) => ({
uid: name,
fileName: `${fileName}.${extension}`,
altTitle,
});
export const onInsertFiles = (res, rej, handleClose) => (payload) => {
if (Array.isArray(payload)) {
rej(new Error("Failed to upload file. Please upload a valid file."));
}
else {
res(fromItemToImage(payload));
handleClose();
}
};
export const fromValToMediaGalleryParam = (key, value) => (key && value ? { [key]: value } : {});
export const getBase64 = async (file) => {
return await new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = (e) => {
typeof e.target?.result === "string" ? resolve(e.target?.result) : reject("Error read file.");
};
reader.onerror = () => {
reject("Error read file.");
};
reader.onabort = () => {
reject("Abort read file.");
};
reader.readAsDataURL(file);
});
};
export const getTypeOrDocument = (type) => ApiFileTypes.VIDEO === type || ApiFileTypes.AUDIO === type || ApiFileTypes.IMAGE === type
? type
: ApiFileTypes.DOCUMENT;
export const makeUrl = (baseUrl, params = {}) => {
const url = new URL(baseUrl);
Object.entries(params).forEach(([key, value]) => {
url.searchParams.append(key, value);
});
return url.toString();
};