balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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 }