android support

This commit is contained in:
Geoffrey Goh
2015-11-23 12:02:01 -08:00
parent 380df40361
commit 25e3eb67f3
55 changed files with 55728 additions and 181 deletions

View File

@@ -0,0 +1,66 @@
'use strict';
var NativeCodePush = require("react-native").NativeModules.CodePush;
var Platform = require("Platform");
var Alert;
if (Platform.OS === "android") {
/*
* Promisify native methods. Assumes that every native method takes
* two callback functions, resolve and reject.
*/
var methodsToPromisify = [
"installUpdate",
"downloadUpdate",
"getConfiguration",
"getCurrentPackage",
"isFailedUpdate",
"isFirstRun",
"notifyApplicationReady"
];
methodsToPromisify.forEach((methodName) => {
var aMethod = NativeCodePush[methodName];
NativeCodePush[methodName] = function() {
var args = [].slice.apply(arguments);
return new Promise((resolve, reject) => {
args.push(resolve);
args.push(reject);
aMethod.apply(this, args);
});
}
});
var CodePushDialog = require("react-native").NativeModules.CodePushDialog;
Alert = {
alert: function(title, message, buttons) {
if (buttons.length > 2) {
throw "Can only show 2 buttons for Android dialog.";
}
var button1Text = buttons[0] ? buttons[0].text : null;
var button2Text = buttons[1] ? buttons[1].text : null;
CodePushDialog.showDialog(
title, message, button1Text, button2Text,
(buttonPressedId) => {
buttons[buttonPressedId].onPress && buttons[buttonPressedId].onPress();
},
(error) => {
throw error;
});
}
};
} else if (Platform.OS === "ios") {
var { AlertIOS } = require("react-native");
Alert = AlertIOS;
}
var PackageMixins = require("./package-mixins")(NativeCodePush);
module.exports = {
NativeCodePush: NativeCodePush,
PackageMixins: PackageMixins,
Alert: Alert
}