diff --git a/src/index.js b/src/index.js index be3e74205..57a922fde 100644 --- a/src/index.js +++ b/src/index.js @@ -2,24 +2,40 @@ import {Plugins} from './plugins'; import {PluginConfig} from './plugin-config' import {promisifyCordova} from './cordova'; -let Wrapped = { -} +let wrappedPlugins = {} let promised; + +// Go through each registered plugin for(let plugin of PluginConfig) { - console.log('Plugin', plugin.name, plugin); + console.log('Plugin', plugin.className, plugin); - Wrapped[plugin.className] = {}; + // Create the wrapped class + let cls = newPluginClass(plugin); - promised = plugin.promise; + promised = plugin.promise || []; for(let method of promised) { let p = promisifyCordova(plugin.id, method) - Wrapped[plugin.className][method] = p; + cls[method] = p; } + // Save the plugin object + wrappedPlugins[plugin.className] = cls; } -export {Wrapped}; +function newPluginClass(config) { + let obj = { + installed: () => { + return obj.pluginCheck(); + } + } -window.Native = Wrapped; + obj.pluginCheck = config.pluginCheck || function() { return false; }; + + return obj; +} + +export {wrappedPlugins}; + +window.Native = wrappedPlugins; diff --git a/src/plugin-config.js b/src/plugin-config.js index ea84b8712..c4c4163c2 100644 --- a/src/plugin-config.js +++ b/src/plugin-config.js @@ -1,8 +1,19 @@ export var PluginConfig = [ { - 'id': 'camera', - 'className': 'Camera', - 'plugin': 'cordova-plugin-camera', - 'promise': ['takePicture'], + id: 'camera', + className: 'Camera', + plugin: 'cordova-plugin-camera', + promise: ['takePicture'], + pluginCheck: () => { + return !!navigator.camera; + } + }, + { + id: 'device', + className: 'Device', + plugin: 'cordova-plugin-device', + pluginCheck: () => { + return !!window.device; + } } ] diff --git a/test/app/app.js b/test/app/app.js index 89f214e01..80f9199ba 100644 --- a/test/app/app.js +++ b/test/app/app.js @@ -1,5 +1,11 @@ console.log(window.Native); + +if(Native.Camera.installed()) { + console.log('Camera installed'); +} else { + console.log('Camera not installed'); +} Native.Camera.takePicture().then(function(resp) { console.log('Got picture'); }, function(err) {