Vulcan/packages/vulcan-cloudinary/lib/server/make_cloudinary.js
2018-12-31 15:22:17 +09:00

42 lines
No EOL
1.3 KiB
JavaScript

import { CloudinaryUtils } from '../server/cloudinary.js';
import { getSetting, addCallback } from 'meteor/vulcan:core';
import { addCustomFields } from '../modules/index.js';
const cloudinarySettings = getSetting('cloudinary');
export const CloudinaryCollections = [];
export const makeCloudinary = ({collection, fieldName}) => {
addCustomFields(collection);
// post submit callback
function cacheImageOnNew (document) {
if (cloudinarySettings) {
if (document[fieldName]) {
const data = CloudinaryUtils.uploadImage(document[fieldName]);
if (data) {
document.cloudinaryId = data.cloudinaryId;
document.cloudinaryUrls = data.urls;
}
}
}
return document;
}
addCallback(`${collection.options.collectionName.toLowerCase()}.new.sync`, cacheImageOnNew);
function cacheImageOnEdit (modifier, oldDocument) {
if (cloudinarySettings) {
if (modifier.$set[fieldName] && modifier.$set[fieldName] !== oldDocument[fieldName]) {
const data = CloudinaryUtils.uploadImage(modifier.$set[fieldName]);
modifier.$set.cloudinaryId = data.cloudinaryId;
modifier.$set.cloudinaryUrls = data.urls;
}
}
return modifier;
}
addCallback(`${collection.options.collectionName.toLowerCase()}.edit.sync`, cacheImageOnEdit);
};