@brizy/cloud-media-upload
Version:
Upload media in Brizy Cloud
93 lines (92 loc) • 3.48 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MediaUpload = void 0;
const media_gallery_1 = __importDefault(require("@brizy/media-gallery"));
require("@brizy/media-gallery/dist/index.css");
const ModalController_1 = require("./ModalController");
const api_client_1 = require("./api-client");
const constants_1 = require("./constants");
const utils_1 = require("./utils");
class MediaUpload {
constructor({ node, clientId, isDev }) {
this.handleClose = () => {
this.modalController.update({ isOpen: false });
};
this.addMediaHandler = async (res, rej, extra) => {
try {
const config = await this.getConfig({ res, rej, extra });
this.handleOpen(config);
}
catch (err) {
this.log(err);
const error = err instanceof Error ? err : new Error(`${err}`);
rej(error);
}
};
this.clientId = clientId;
this.isDev = isDev ?? false;
this.modalController = new ModalController_1.ModalController(node);
}
async getConfig(addMediaHandlerArgs) {
const { res, rej, extra } = addMediaHandlerArgs;
const credentials = await (0, api_client_1.fetchCredentials)(this.credentialEndpoint, this.clientId);
const api = new api_client_1.ApiClient(credentials);
return {
development: this.isDev,
origin: "*",
insertFilesType: "single",
acceptableTypes: (0, utils_1.getAcceptableTypes)(extra.acceptedExtensions),
mediaLibrary: {
getItems: api.getItems,
removeItems: api.removeItems,
updateItem: api.updateItem,
uploadItem: api.uploadItem,
},
//#region TODO: Remove when https://github.com/bagrinsergiu/blox-editor/issues/28977 will be done
stockPhotos: {
getItems: () => Promise.resolve(undefined),
downloadItem: () => Promise.resolve({ url: "test" }),
},
//#endregion
onClose: () => {
rej(new Error("File upload was cancelled"));
this.handleClose();
},
onInsertFiles: (0, utils_1.onInsertFiles)(res, rej, this.handleClose),
};
}
handleOpen(config) {
this.modalController.update({
isOpen: true,
mediaUploadInstance: new media_gallery_1.default(config),
});
}
log(msg) {
if (this.isDev) {
console.log("[MediaUpload]: ", msg);
}
}
get credentialEndpoint() {
return this.isDev ? constants_1.DEV_GET_USER_CONFIG_ENDPOINT_URL : constants_1.GET_USER_CONFIG_ENDPOINT_URL;
}
get resizeUrl() {
return this.isDev ? constants_1.DEV_RESIZE_URL : constants_1.RESIZE_URL;
}
get resizePatterns() {
return this.isDev ? constants_1.DEV_RESIZE_PATTERNS : constants_1.RESIZE_PATTERNS;
}
get addMedia() {
return { handler: this.addMediaHandler };
}
get mediaConfig() {
return {
addMedia: this.addMedia,
mediaResizeUrl: this.resizeUrl,
imagePatterns: this.resizePatterns,
};
}
}
exports.MediaUpload = MediaUpload;