@exodus/react-native-payments
Version:
[](http://facebook.github.io/react-native/releases/0.40) [](https://www.np
69 lines (68 loc) • 2.3 kB
JavaScript
import { NativeModules, Platform } from 'react-native';
const ReactNativePayments = NativeModules.ReactNativePayments;
const IS_ANDROID = Platform.OS === 'android';
const noop = () => { };
const isSupported = IS_ANDROID ? false : ReactNativePayments.canMakePayments;
function canMakePayments() {
return new Promise((resolve, reject) => {
resolve(isSupported);
});
}
function canMakePaymentsUsingNetworks(usingNetworks) {
return new Promise(resolve => {
if (IS_ANDROID)
return resolve(false);
ReactNativePayments.canMakePaymentsUsingNetworks(usingNetworks, (err, data) => resolve(data));
});
}
function createPaymentRequest(methodData, details, options = Object.create(null)) {
return new Promise((resolve, reject) => {
if (IS_ANDROID) {
return resolve();
}
ReactNativePayments.createPaymentRequest(methodData, details, options, err => err ? reject(err) : resolve());
});
}
function handleDetailsUpdate(details) {
return new Promise((resolve, reject) => {
if (IS_ANDROID)
return resolve(undefined);
ReactNativePayments.handleDetailsUpdate(details, err => err ? reject(err) : resolve());
});
}
function show() {
return new Promise((resolve, reject) => {
if (IS_ANDROID)
return reject(new Error('NotSupportedError'));
ReactNativePayments.show((err, paymentToken) => {
return err ? reject(err) : resolve(true);
});
});
}
function abort() {
return new Promise((resolve, reject) => {
if (IS_ANDROID)
return resolve(undefined);
ReactNativePayments.abort(err => err ? reject(err) : resolve(true));
});
}
function complete(paymentStatus) {
return new Promise((resolve, reject) => {
if (IS_ANDROID)
return resolve(undefined);
ReactNativePayments.complete(paymentStatus, err => err ? reject(err) : resolve(true));
});
}
const openPaymentSetup = (ReactNativePayments && ReactNativePayments.openPaymentSetup) || noop;
const NativePayments = {
isSupported,
canMakePayments,
canMakePaymentsUsingNetworks,
createPaymentRequest,
handleDetailsUpdate,
show,
abort,
complete,
openPaymentSetup,
};
export default NativePayments;