This commit is contained in:
Max Lynch 2015-11-28 18:36:38 -06:00
parent 5b754390f5
commit 3327fe8f45
10 changed files with 17 additions and 100 deletions

View File

@ -1,3 +1,10 @@
# Ionic Native
Native plugins to replace ngCordova
Ionic Native comes with a curated set of Native Cordova plugins that you can use to
pretty much do any native function you need from your [Ionic](http://ionicframework.com/), Cordova, or Web View mobile apps.
# Credits
Max Lynch - [@maxlynch](http://twitter.com/maxlynch)
Rob Wormald - [@robwormald](https://twitter.com/robwormald)

View File

@ -49,7 +49,7 @@ function Cordova(opts) {
if (opts.promise) {
console.log('TODO: Promise');
}
obj[methodName] = exports.wrap(obj, methodName, opts);
obj[methodName] = exports.wrap(obj, methodName, opts).bind(obj);
};
}
exports.Cordova = Cordova;

View File

@ -18,8 +18,8 @@ var Toast = (function () {
], Toast, "hide");
__decorate([
plugin_1.Cordova({
successIndex: 0,
errIndex: 1
successIndex: 1,
errIndex: 2
})
], Toast, "showWithOptions");
Toast = __decorate([

View File

@ -1,5 +0,0 @@
export declare class Cordova {
static hasPlugin(pluginRef: string): boolean;
static plugin(pluginRef: string): any;
static promisify(pluginRef: any, pluginName: any, methodName: any, successIndex: any, errorIndex: any): (...args: any[]) => any;
}

42
dist/src/cordova.js vendored
View File

@ -1,42 +0,0 @@
var util_1 = require('./util');
var Cordova = (function () {
function Cordova() {
}
Cordova.hasPlugin = function (pluginRef) {
return !!this.plugin(pluginRef);
};
Cordova.plugin = function (pluginRef) {
return util_1.get(window, pluginRef);
};
Cordova.promisify = function (pluginRef, pluginName, methodName, successIndex, errorIndex) {
var _this = this;
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
}
return new Promise(function (resolve, reject) {
if (!window.cordova) {
console.warn('Cordova: tried calling', '"' + pluginName + '.' + methodName + '"', 'but Cordova is not defined. Please make sure you have cordova.js included in your index.html file and you are running in a proper cordova environment');
reject({
error: 'cordova_not_available'
});
return;
}
if (!_this.hasPlugin(pluginRef)) {
console.warn('Cordova: tried calling', '"' + pluginName + '.' + methodName + '"', 'but the ' + pluginName + ' plugin is not installed.');
reject({
error: 'plugin_not_installed'
});
return;
}
console.log('Cordova: exec(' + pluginName + ', ' + methodName + ')');
args[successIndex] = resolve;
args[errorIndex] = reject;
util_1.get(window, pluginRef)[methodName].apply(_this, args);
});
};
};
return Cordova;
})();
exports.Cordova = Cordova;

View File

@ -48,7 +48,7 @@ function Cordova(opts) {
if (opts.promise) {
console.log('TODO: Promise');
}
obj[methodName] = exports.wrap(obj, methodName, opts);
obj[methodName] = exports.wrap(obj, methodName, opts).bind(obj);
};
}
exports.Cordova = Cordova;

View File

@ -20,8 +20,8 @@ var Toast = (function () {
], Toast, "hide", void 0);
__decorate([
plugin_1.Cordova({
successIndex: 0,
errIndex: 1
successIndex: 1,
errIndex: 2
}),
__metadata('design:type', Object)
], Toast, "showWithOptions", void 0);

View File

@ -1,43 +0,0 @@
//patch the window definition
declare var Promise;
declare var cordova;
declare var window;
import {get} from './util';
export class Cordova {
static hasPlugin(pluginRef: string) {
return !!this.plugin(pluginRef);
}
static plugin(pluginRef: string) {
return get(window, pluginRef);
}
static promisify(pluginRef, pluginName, methodName, successIndex, errorIndex) {
return (...args) => {
return new Promise((resolve, reject) => {
if(!window.cordova) {
console.warn('Cordova: tried calling', '"' + pluginName + '.' + methodName + '"', 'but Cordova is not defined. Please make sure you have cordova.js included in your index.html file and you are running in a proper cordova environment');
reject({
error: 'cordova_not_available'
});
return;
}
if(!this.hasPlugin(pluginRef)) {
console.warn('Cordova: tried calling', '"' + pluginName + '.' + methodName + '"', 'but the ' + pluginName + ' plugin is not installed.');
reject({
error: 'plugin_not_installed'
});
return;
}
console.log('Cordova: exec(' + pluginName + ', ' + methodName +')');
args[successIndex] = resolve;
args[errorIndex] = reject;
get(window, pluginRef)[methodName].apply(this, args);
})
}
}
}

View File

@ -57,6 +57,6 @@ export function Cordova(opts:any = {}) {
console.log('TODO: Promise');
}
obj[methodName] = wrap(obj, methodName, opts);
obj[methodName] = wrap(obj, methodName, opts).bind(obj);
}
}

View File

@ -13,8 +13,8 @@ export class Toast {
static hide;
@Cordova({
successIndex: 0,
errIndex: 1
successIndex: 1,
errIndex: 2
})
static showWithOptions;
}