dependencyHelper.js (4029B)
1 export const getPluginInstance = (pluginKey) => { 2 if (pluginKey in redux_templates.supported_plugins) { 3 return redux_templates.supported_plugins[pluginKey]; 4 } 5 return false; // Deal with unknown plugins 6 } 7 8 export const needsPluginInstall = (pluginKey) => { 9 const pluginInstance = getPluginInstance(pluginKey); 10 return !pluginInstance || pluginInstance.hasOwnProperty('version') === false; 11 } 12 13 export const needsPluginPro = (pluginKey) => { 14 const pluginInstance = getPluginInstance(pluginKey); 15 return (pluginInstance && pluginInstance.hasOwnProperty('has_pro') && pluginInstance.has_pro && 16 (pluginInstance.hasOwnProperty('is_pro') === false || pluginInstance.is_pro === false)); 17 } 18 19 20 export const pluginInfo = (pluginKey) => { 21 let pluginInstance = processPlugin(pluginKey); 22 if (!pluginInstance) return {name: null, slug: null, url: null}; 23 return pluginInstance 24 } 25 26 27 export const processPlugin = (pluginKey) => { 28 let pluginInstance = {...getPluginInstance(pluginKey)}; 29 if (!pluginInstance) { 30 return pluginInstance 31 } 32 33 if ('free_slug' in pluginInstance && pluginInstance['free_slug'] in redux_templates.supported_plugins) { 34 let new_instance = {...getPluginInstance(pluginInstance.free_slug)} 35 new_instance.free_slug = pluginInstance.free_slug 36 new_instance.name = pluginInstance.name 37 if (!('is_pro' in new_instance)) { 38 delete new_instance.version 39 } 40 pluginInstance = new_instance 41 } 42 pluginInstance.slug = pluginInstance.slug ? pluginInstance.slug : pluginKey; 43 44 return pluginInstance 45 } 46 47 export const requiresPro = (data) => { 48 if (data && data.proDependenciesMissing && data.proDependenciesMissing.length > 0) { 49 if (isReduxProInstalled()) { // redux pro installed, then skip merged plugins 50 return data.proDependenciesMissing.filter((plugin) => isPluginReduxProMerged(plugin) === false).length > 0 51 } 52 return true; 53 } 54 return false; 55 } 56 export const requiresInstall = (data) => { 57 if (data && data.installDependenciesMissing && data.installDependenciesMissing.length > 0) { 58 return true; 59 } 60 if (isReduxProInstalled() && data.proDependenciesMissing) { // redux pro installed, then include merged plugins 61 return data.proDependenciesMissing.filter((plugin) => isPluginReduxProMerged(plugin)).length > 0 62 } 63 return false; 64 } 65 // Check if redux pro should be installed. 66 export const requiresReduxPro = (data) => { 67 if (!data) return false; 68 const missingDependencies = [].concat(data.installDependenciesMissing, data.proDependenciesMissing); 69 return missingDependencies.reduce((acc, curKey) => { 70 if ((isReduxProInstalled() === false) && curKey === 'redux-pro') return true; 71 return acc || (isPluginReduxProMerged(curKey) && isReduxProInstalled() === false); // main logic, above were execpetion handling 72 }, false); 73 } 74 75 export const isPluginReduxProMerged = (pluginKey) => { 76 const pluginInstance = getPluginInstance(pluginKey); 77 return (pluginInstance !== false && pluginInstance.redux_pro === true); 78 } 79 80 export const isTemplateReadyToInstall = (data) => { 81 return (requiresInstall(data) || requiresPro(data)) ? false : true; 82 } 83 84 export const isTemplatePremium = (data, activeDependencyFilter) => { 85 if (data && data.proDependencies !== undefined && data.proDependencies.length > 0) { 86 return data.proDependencies.reduce((acc, cur) => { 87 if (activeDependencyFilter[cur] === undefined) 88 return false; 89 return (acc || activeDependencyFilter[cur].value); 90 }, false); 91 } 92 return (data && data.proDependenciesMissing !== undefined && data.proDependenciesMissing.length > 0); 93 } 94 95 export const isReduxProInstalled = () => { 96 const reduxProPluginInstance = redux_templates.supported_plugins['redux-framework']; 97 return (!!(redux_templates.mokama) == true) || reduxProPluginInstance && reduxProPluginInstance.hasOwnProperty('is_pro'); 98 }