omnipay-reactnative-sdk 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/commonjs/components/OmnipayProvider.js +191 -0
- package/lib/commonjs/components/OmnipayProvider.js.map +1 -0
- package/lib/commonjs/components/OmnipayView.js +186 -0
- package/lib/commonjs/components/OmnipayView.js.map +1 -0
- package/lib/commonjs/hooks/useOmnipay.js +18 -0
- package/lib/commonjs/hooks/useOmnipay.js.map +1 -0
- package/lib/commonjs/index.js +12 -177
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/components/OmnipayProvider.js +180 -0
- package/lib/module/components/OmnipayProvider.js.map +1 -0
- package/lib/module/components/OmnipayView.js +177 -0
- package/lib/module/components/OmnipayView.js.map +1 -0
- package/lib/module/hooks/useOmnipay.js +12 -0
- package/lib/module/hooks/useOmnipay.js.map +1 -0
- package/lib/module/index.js +4 -176
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/components/OmnipayProvider.d.ts +14 -0
- package/lib/typescript/components/OmnipayProvider.d.ts.map +1 -0
- package/lib/typescript/components/OmnipayView.d.ts +12 -0
- package/lib/typescript/components/OmnipayView.d.ts.map +1 -0
- package/lib/typescript/hooks/useOmnipay.d.ts +4 -0
- package/lib/typescript/hooks/useOmnipay.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +4 -11
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/OmnipayProvider.tsx +193 -0
- package/src/components/OmnipayView.tsx +204 -0
- package/src/hooks/useOmnipay.tsx +9 -0
- package/src/index.tsx +4 -203
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ Make sure your manifest files includes permission to read contacts
|
|
|
21
21
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Also add this for Android 11+ support below
|
|
24
|
+
Also add this for Android 11+ support below the application tag in your AndroidManifest.xml file
|
|
25
25
|
|
|
26
26
|
```sh
|
|
27
27
|
<queries>
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.OmnipayProvider = exports.OmnipayContext = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _reactNativeWebview = _interopRequireDefault(require("react-native-webview"));
|
|
10
|
+
var _reactNativeSelectContact = require("react-native-select-contact");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
const OmnipayContext = /*#__PURE__*/_react.default.createContext(null);
|
|
15
|
+
exports.OmnipayContext = OmnipayContext;
|
|
16
|
+
const OmnipayProvider = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
children,
|
|
19
|
+
publicKey,
|
|
20
|
+
env,
|
|
21
|
+
color
|
|
22
|
+
} = _ref;
|
|
23
|
+
const [webviewUrl, setWebviewUrl] = (0, _react.useState)("");
|
|
24
|
+
const [webviewStatus, setWebviewStatus] = (0, _react.useState)('loading');
|
|
25
|
+
const [useFullscreen, setUseFullScreen] = (0, _react.useState)(false);
|
|
26
|
+
const webviewRef = (0, _react.useRef)(null);
|
|
27
|
+
const webHost = getWebHost();
|
|
28
|
+
const webviewStyle = getWebviewStyle();
|
|
29
|
+
console.log(useFullscreen);
|
|
30
|
+
function getWebviewStyle() {
|
|
31
|
+
if (webviewUrl === "") {
|
|
32
|
+
return {
|
|
33
|
+
opacity: 0,
|
|
34
|
+
height: 0,
|
|
35
|
+
width: 0,
|
|
36
|
+
flex: 0
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return styles.webview;
|
|
40
|
+
}
|
|
41
|
+
function getWebHost() {
|
|
42
|
+
if (env === 'dev') {
|
|
43
|
+
return 'https://omnipay-websdk.vercel.app/';
|
|
44
|
+
}
|
|
45
|
+
return 'https://sdk.omnipay.ng/';
|
|
46
|
+
}
|
|
47
|
+
const onWebviewMount = `
|
|
48
|
+
window.nativeOs = ${_reactNative.Platform.OS};
|
|
49
|
+
true;
|
|
50
|
+
`;
|
|
51
|
+
function postMessage(data) {
|
|
52
|
+
if (!webviewRef.current) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
webviewRef.current.postMessage(JSON.stringify(data));
|
|
57
|
+
} catch (error) {}
|
|
58
|
+
}
|
|
59
|
+
async function onWebviewMessage(e) {
|
|
60
|
+
try {
|
|
61
|
+
if (e.nativeEvent && e.nativeEvent.data) {
|
|
62
|
+
const eventData = JSON.parse(e.nativeEvent.data);
|
|
63
|
+
const {
|
|
64
|
+
dataKey,
|
|
65
|
+
dataValue
|
|
66
|
+
} = eventData;
|
|
67
|
+
if (dataKey === 'chooseContact') {
|
|
68
|
+
const contactDetails = await getContact();
|
|
69
|
+
postMessage({
|
|
70
|
+
dataKey: 'contactSelected',
|
|
71
|
+
dataValue: contactDetails
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (dataKey === 'openLink') {
|
|
75
|
+
_reactNative.Linking.openURL(dataValue);
|
|
76
|
+
}
|
|
77
|
+
if (dataKey === 'modalOpen') {
|
|
78
|
+
setUseFullScreen(true);
|
|
79
|
+
}
|
|
80
|
+
if (dataKey === 'modalClosed') {
|
|
81
|
+
setUseFullScreen(false);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
} catch (error) {}
|
|
85
|
+
}
|
|
86
|
+
async function getContact() {
|
|
87
|
+
try {
|
|
88
|
+
const isPermissionGranted = await checkPermisionStatus();
|
|
89
|
+
if (!isPermissionGranted) {
|
|
90
|
+
return {
|
|
91
|
+
name: '',
|
|
92
|
+
phoneNumber: ''
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const result = await (0, _reactNativeSelectContact.selectContactPhone)();
|
|
96
|
+
if (!result) {
|
|
97
|
+
return {
|
|
98
|
+
name: '',
|
|
99
|
+
phoneNumber: ''
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
let {
|
|
103
|
+
contact,
|
|
104
|
+
selectedPhone
|
|
105
|
+
} = result;
|
|
106
|
+
return {
|
|
107
|
+
name: contact.name,
|
|
108
|
+
phoneNumber: selectedPhone.number
|
|
109
|
+
};
|
|
110
|
+
} catch (error) {
|
|
111
|
+
return {
|
|
112
|
+
name: '',
|
|
113
|
+
phoneNumber: ''
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async function checkPermisionStatus() {
|
|
118
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
if (_reactNative.PermissionsAndroid.PERMISSIONS.READ_CONTACTS) {
|
|
122
|
+
const granted = await _reactNative.PermissionsAndroid.request(_reactNative.PermissionsAndroid.PERMISSIONS.READ_CONTACTS, {
|
|
123
|
+
title: 'Allow us access your contact list',
|
|
124
|
+
message: 'This will enable you choose a phone number to buy airtime or data for from your contact list',
|
|
125
|
+
buttonNegative: 'Cancel',
|
|
126
|
+
buttonPositive: 'OK'
|
|
127
|
+
});
|
|
128
|
+
if (granted === _reactNative.PermissionsAndroid.RESULTS.GRANTED) {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
const _initiateBills = (0, _react.useCallback)(phoneNumber => {
|
|
135
|
+
if (phoneNumber) {
|
|
136
|
+
if (phoneNumber.length === 11) {
|
|
137
|
+
const webUrl = `${webHost}?theme=${color}&view=bills&publicKey=${publicKey}&phoneNumber=${phoneNumber}`;
|
|
138
|
+
setWebviewUrl(webUrl);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}, []);
|
|
142
|
+
return /*#__PURE__*/_react.default.createElement(OmnipayContext.Provider, {
|
|
143
|
+
value: {
|
|
144
|
+
initiateBills: _initiateBills
|
|
145
|
+
}
|
|
146
|
+
}, children, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.default, {
|
|
147
|
+
source: {
|
|
148
|
+
uri: webviewUrl
|
|
149
|
+
},
|
|
150
|
+
style: webviewStyle,
|
|
151
|
+
injectedJavaScriptBeforeContentLoaded: onWebviewMount,
|
|
152
|
+
onMessage: onWebviewMessage,
|
|
153
|
+
ref: webviewRef,
|
|
154
|
+
onLoadStart: () => setWebviewStatus("loading"),
|
|
155
|
+
onLoadEnd: () => setWebviewStatus('success')
|
|
156
|
+
}), webviewStatus === 'loading' && webviewUrl !== "" && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
157
|
+
style: styles.webviewLoader
|
|
158
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
|
|
159
|
+
size: "small",
|
|
160
|
+
color: color
|
|
161
|
+
})));
|
|
162
|
+
};
|
|
163
|
+
exports.OmnipayProvider = OmnipayProvider;
|
|
164
|
+
const styles = _reactNative.StyleSheet.create({
|
|
165
|
+
hide: {
|
|
166
|
+
display: 'none'
|
|
167
|
+
},
|
|
168
|
+
full: {
|
|
169
|
+
flex: 1,
|
|
170
|
+
width: '100%',
|
|
171
|
+
height: '100%'
|
|
172
|
+
},
|
|
173
|
+
webview: {
|
|
174
|
+
flex: 1,
|
|
175
|
+
width: '100%',
|
|
176
|
+
height: '100%'
|
|
177
|
+
},
|
|
178
|
+
webviewLoader: {
|
|
179
|
+
zIndex: 3,
|
|
180
|
+
backgroundColor: 'white',
|
|
181
|
+
alignItems: 'center',
|
|
182
|
+
justifyContent: 'center',
|
|
183
|
+
flex: 1,
|
|
184
|
+
width: '100%',
|
|
185
|
+
height: '100%',
|
|
186
|
+
position: 'absolute',
|
|
187
|
+
top: 0,
|
|
188
|
+
left: 0
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
//# sourceMappingURL=OmnipayProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OmnipayContext","React","createContext","OmnipayProvider","children","publicKey","env","color","webviewUrl","setWebviewUrl","useState","webviewStatus","setWebviewStatus","useFullscreen","setUseFullScreen","webviewRef","useRef","webHost","getWebHost","webviewStyle","getWebviewStyle","console","log","opacity","height","width","flex","styles","webview","onWebviewMount","Platform","OS","postMessage","data","current","JSON","stringify","error","onWebviewMessage","e","nativeEvent","eventData","parse","dataKey","dataValue","contactDetails","getContact","Linking","openURL","isPermissionGranted","checkPermisionStatus","name","phoneNumber","result","selectContactPhone","contact","selectedPhone","number","PermissionsAndroid","PERMISSIONS","READ_CONTACTS","granted","request","title","message","buttonNegative","buttonPositive","RESULTS","GRANTED","_initiateBills","useCallback","length","webUrl","initiateBills","uri","webviewLoader","StyleSheet","create","hide","display","full","zIndex","backgroundColor","alignItems","justifyContent","position","top","left"],"sourceRoot":"../../src","sources":["OmnipayProvider.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _reactNativeWebview = require("react-native-webview");
|
|
10
|
+
var _reactNativeSelectContact = require("react-native-select-contact");
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
const OmnipayView = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
color,
|
|
16
|
+
env,
|
|
17
|
+
publicKey,
|
|
18
|
+
phoneNumber,
|
|
19
|
+
view,
|
|
20
|
+
onEnterFullScreen,
|
|
21
|
+
onExitFullScreen
|
|
22
|
+
} = _ref;
|
|
23
|
+
const webviewRef = (0, _react.useRef)(null);
|
|
24
|
+
const [webviewStatus, setWebviewStatus] = (0, _react.useState)('loading');
|
|
25
|
+
const webHost = getWebHost();
|
|
26
|
+
const webUrl = `${webHost}?theme=${color}&view=${view}&publicKey=${publicKey}&phoneNumber=${phoneNumber}`;
|
|
27
|
+
function getWebHost() {
|
|
28
|
+
if (env === 'dev') {
|
|
29
|
+
return 'https://omnipay-websdk.vercel.app/';
|
|
30
|
+
}
|
|
31
|
+
return 'https://sdk.omnipay.ng/';
|
|
32
|
+
}
|
|
33
|
+
const onWebviewMount = `
|
|
34
|
+
window.nativeOs = ${_reactNative.Platform.OS};
|
|
35
|
+
true;
|
|
36
|
+
`;
|
|
37
|
+
function postMessage(data) {
|
|
38
|
+
if (!webviewRef.current) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
webviewRef.current.postMessage(JSON.stringify(data));
|
|
43
|
+
} catch (error) {}
|
|
44
|
+
}
|
|
45
|
+
async function onWebviewMessage(e) {
|
|
46
|
+
try {
|
|
47
|
+
if (e.nativeEvent && e.nativeEvent.data) {
|
|
48
|
+
const eventData = JSON.parse(e.nativeEvent.data);
|
|
49
|
+
const {
|
|
50
|
+
dataKey,
|
|
51
|
+
dataValue
|
|
52
|
+
} = eventData;
|
|
53
|
+
if (dataKey === 'chooseContact') {
|
|
54
|
+
const contactDetails = await getContact();
|
|
55
|
+
postMessage({
|
|
56
|
+
dataKey: 'contactSelected',
|
|
57
|
+
dataValue: contactDetails
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (dataKey === 'modalOpen') {
|
|
61
|
+
if (onEnterFullScreen) {
|
|
62
|
+
onEnterFullScreen();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (dataKey === 'modalClosed') {
|
|
66
|
+
if (onExitFullScreen) {
|
|
67
|
+
onExitFullScreen();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (dataKey === 'openLink') {
|
|
71
|
+
_reactNative.Linking.openURL(dataValue);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
} catch (error) {}
|
|
75
|
+
}
|
|
76
|
+
async function getContact() {
|
|
77
|
+
try {
|
|
78
|
+
const isPermissionGranted = await checkPermisionStatus();
|
|
79
|
+
if (!isPermissionGranted) {
|
|
80
|
+
return {
|
|
81
|
+
name: '',
|
|
82
|
+
phoneNumber: ''
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const result = await (0, _reactNativeSelectContact.selectContactPhone)();
|
|
86
|
+
if (!result) {
|
|
87
|
+
return {
|
|
88
|
+
name: '',
|
|
89
|
+
phoneNumber: ''
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
let {
|
|
93
|
+
contact,
|
|
94
|
+
selectedPhone
|
|
95
|
+
} = result;
|
|
96
|
+
return {
|
|
97
|
+
name: contact.name,
|
|
98
|
+
phoneNumber: selectedPhone.number
|
|
99
|
+
};
|
|
100
|
+
} catch (error) {
|
|
101
|
+
return {
|
|
102
|
+
name: '',
|
|
103
|
+
phoneNumber: ''
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async function checkPermisionStatus() {
|
|
108
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
if (_reactNative.PermissionsAndroid.PERMISSIONS.READ_CONTACTS) {
|
|
112
|
+
const granted = await _reactNative.PermissionsAndroid.request(_reactNative.PermissionsAndroid.PERMISSIONS.READ_CONTACTS, {
|
|
113
|
+
title: 'Allow us access your contact list',
|
|
114
|
+
message: 'This will enable you choose a phone number to buy airtime or data for from your contact list',
|
|
115
|
+
buttonNegative: 'Cancel',
|
|
116
|
+
buttonPositive: 'OK'
|
|
117
|
+
});
|
|
118
|
+
if (granted === _reactNative.PermissionsAndroid.RESULTS.GRANTED) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
if (view !== 'bills') {
|
|
125
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid view");
|
|
126
|
+
}
|
|
127
|
+
if (!publicKey.includes('OMNIPUBKEY_')) {
|
|
128
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid public key");
|
|
129
|
+
}
|
|
130
|
+
if (phoneNumber.length !== 11) {
|
|
131
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid phone number");
|
|
132
|
+
}
|
|
133
|
+
if (color.length < 3) {
|
|
134
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid color");
|
|
135
|
+
}
|
|
136
|
+
if (!['dev', 'prod'].includes(env)) {
|
|
137
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid environment");
|
|
138
|
+
}
|
|
139
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
140
|
+
style: styles.full
|
|
141
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.WebView, {
|
|
142
|
+
source: {
|
|
143
|
+
uri: webUrl
|
|
144
|
+
},
|
|
145
|
+
style: styles.webview,
|
|
146
|
+
injectedJavaScriptBeforeContentLoaded: onWebviewMount,
|
|
147
|
+
onMessage: onWebviewMessage,
|
|
148
|
+
ref: webviewRef,
|
|
149
|
+
onLoadEnd: () => setWebviewStatus('success')
|
|
150
|
+
}), webviewStatus === 'loading' && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
151
|
+
style: styles.webviewLoader
|
|
152
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
|
|
153
|
+
size: "small",
|
|
154
|
+
color: color
|
|
155
|
+
}))));
|
|
156
|
+
};
|
|
157
|
+
const styles = _reactNative.StyleSheet.create({
|
|
158
|
+
hide: {
|
|
159
|
+
display: 'none'
|
|
160
|
+
},
|
|
161
|
+
full: {
|
|
162
|
+
flex: 1,
|
|
163
|
+
width: '100%',
|
|
164
|
+
height: '100%'
|
|
165
|
+
},
|
|
166
|
+
webview: {
|
|
167
|
+
flex: 1,
|
|
168
|
+
width: '100%',
|
|
169
|
+
height: '100%'
|
|
170
|
+
},
|
|
171
|
+
webviewLoader: {
|
|
172
|
+
zIndex: 3,
|
|
173
|
+
backgroundColor: 'white',
|
|
174
|
+
alignItems: 'center',
|
|
175
|
+
justifyContent: 'center',
|
|
176
|
+
flex: 1,
|
|
177
|
+
width: '100%',
|
|
178
|
+
height: '100%',
|
|
179
|
+
position: 'absolute',
|
|
180
|
+
top: 0,
|
|
181
|
+
left: 0
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
var _default = OmnipayView;
|
|
185
|
+
exports.default = _default;
|
|
186
|
+
//# sourceMappingURL=OmnipayView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OmnipayView","color","env","publicKey","phoneNumber","view","onEnterFullScreen","onExitFullScreen","webviewRef","useRef","webviewStatus","setWebviewStatus","useState","webHost","getWebHost","webUrl","onWebviewMount","Platform","OS","postMessage","data","current","JSON","stringify","error","onWebviewMessage","e","nativeEvent","eventData","parse","dataKey","dataValue","contactDetails","getContact","Linking","openURL","isPermissionGranted","checkPermisionStatus","name","result","selectContactPhone","contact","selectedPhone","number","PermissionsAndroid","PERMISSIONS","READ_CONTACTS","granted","request","title","message","buttonNegative","buttonPositive","RESULTS","GRANTED","includes","length","styles","full","uri","webview","webviewLoader","StyleSheet","create","hide","display","flex","width","height","zIndex","backgroundColor","alignItems","justifyContent","position","top","left"],"sourceRoot":"../../src","sources":["OmnipayView.tsx"],"mappings":";;;;;;AAAA;AACA;AASA;AACA;AAAiE;AAAA;AAkBjE,MAAMA,WAAW,GAAG,QAQa;EAAA,IARZ;IACjBC,KAAK;IACLC,GAAG;IACHC,SAAS;IACTC,WAAW;IACXC,IAAI;IACJC,iBAAiB;IACjBC;EACU,CAAC;EACX,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAAU,IAAI,CAAC;EACxC,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAC,eAAQ,EAAS,SAAS,CAAC;EACrE,MAAMC,OAAO,GAAGC,UAAU,EAAE;EAC5B,MAAMC,MAAM,GAAI,GAAEF,OAAQ,UAASZ,KAAM,SAAQI,IAAK,cAAaF,SAAU,gBAAeC,WAAY,EAAC;EAEzG,SAASU,UAAU,GAAG;IAClB,IAAIZ,GAAG,KAAK,KAAK,EAAE;MACf,OAAO,oCAAoC;IAC/C;IACA,OAAO,yBAAyB;EACpC;EAEA,MAAMc,cAAc,GAAI;AAC5B,0BAA0BC,qBAAQ,CAACC,EAAG;AACtC;AACA,KAAK;EAED,SAASC,WAAW,CAACC,IAAiB,EAAE;IACpC,IAAI,CAACZ,UAAU,CAACa,OAAO,EAAE;MACrB;IACJ;IACA,IAAI;MACAb,UAAU,CAACa,OAAO,CAACF,WAAW,CAACG,IAAI,CAACC,SAAS,CAACH,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,OAAOI,KAAK,EAAE,CAAE;EACtB;EAEA,eAAeC,gBAAgB,CAACC,CAAsB,EAAE;IACpD,IAAI;MACA,IAAIA,CAAC,CAACC,WAAW,IAAID,CAAC,CAACC,WAAW,CAACP,IAAI,EAAE;QACrC,MAAMQ,SAAS,GAAGN,IAAI,CAACO,KAAK,CAACH,CAAC,CAACC,WAAW,CAACP,IAAI,CAAC;QAChD,MAAM;UAAEU,OAAO;UAAEC;QAAU,CAAC,GAAGH,SAAS;QACxC,IAAIE,OAAO,KAAK,eAAe,EAAE;UAC7B,MAAME,cAAc,GAAG,MAAMC,UAAU,EAAE;UACzCd,WAAW,CAAC;YACRW,OAAO,EAAE,iBAAiB;YAC1BC,SAAS,EAAEC;UACf,CAAC,CAAC;QACN;QACA,IAAIF,OAAO,KAAK,WAAW,EAAE;UACzB,IAAIxB,iBAAiB,EAAE;YACnBA,iBAAiB,EAAE;UACvB;QACJ;QACA,IAAIwB,OAAO,KAAK,aAAa,EAAE;UAC3B,IAAIvB,gBAAgB,EAAE;YAClBA,gBAAgB,EAAE;UACtB;QACJ;QACA,IAAIuB,OAAO,KAAK,UAAU,EAAE;UACxBI,oBAAO,CAACC,OAAO,CAACJ,SAAS,CAAC;QAC9B;MACJ;IACJ,CAAC,CAAC,OAAOP,KAAK,EAAE,CAAE;EACtB;EAEA,eAAeS,UAAU,GAAG;IACxB,IAAI;MACA,MAAMG,mBAAmB,GAAG,MAAMC,oBAAoB,EAAE;MACxD,IAAI,CAACD,mBAAmB,EAAE;QACtB,OAAO;UAAEE,IAAI,EAAE,EAAE;UAAElC,WAAW,EAAE;QAAG,CAAC;MACxC;MACA,MAAMmC,MAAM,GAAG,MAAM,IAAAC,4CAAkB,GAAE;MACzC,IAAI,CAACD,MAAM,EAAE;QACT,OAAO;UAAED,IAAI,EAAE,EAAE;UAAElC,WAAW,EAAE;QAAG,CAAC;MACxC;MACA,IAAI;QAAEqC,OAAO;QAAEC;MAAc,CAAC,GAAGH,MAAM;MACvC,OAAO;QAAED,IAAI,EAAEG,OAAO,CAACH,IAAI;QAAElC,WAAW,EAAEsC,aAAa,CAACC;MAAO,CAAC;IACpE,CAAC,CAAC,OAAOnB,KAAK,EAAE;MACZ,OAAO;QAAEc,IAAI,EAAE,EAAE;QAAElC,WAAW,EAAE;MAAG,CAAC;IACxC;EACJ;EAEA,eAAeiC,oBAAoB,GAAG;IAClC,IAAIpB,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;MACvB,OAAO,IAAI;IACf;IACA,IAAI0B,+BAAkB,CAACC,WAAW,CAACC,aAAa,EAAE;MAC9C,MAAMC,OAAO,GAAG,MAAMH,+BAAkB,CAACI,OAAO,CAC5CJ,+BAAkB,CAACC,WAAW,CAACC,aAAa,EAC5C;QACIG,KAAK,EAAE,mCAAmC;QAC1CC,OAAO,EACH,8FAA8F;QAClGC,cAAc,EAAE,QAAQ;QACxBC,cAAc,EAAE;MACpB,CAAC,CACJ;MACD,IAAIL,OAAO,KAAKH,+BAAkB,CAACS,OAAO,CAACC,OAAO,EAAE;QAChD,OAAO,IAAI;MACf;IACJ;IACA,OAAO,KAAK;EAChB;EAEA,IAAIjD,IAAI,KAAK,OAAO,EAAE;IAClB,oBAAO,6BAAC,iBAAI,uBAAoB;EACpC;EAEA,IAAI,CAACF,SAAS,CAACoD,QAAQ,CAAC,aAAa,CAAC,EAAE;IACpC,oBAAO,6BAAC,iBAAI,6BAA0B;EAC1C;EAEA,IAAInD,WAAW,CAACoD,MAAM,KAAK,EAAE,EAAE;IAC3B,oBAAO,6BAAC,iBAAI,+BAA4B;EAC5C;EAEA,IAAIvD,KAAK,CAACuD,MAAM,GAAG,CAAC,EAAE;IAClB,oBAAO,6BAAC,iBAAI,wBAAqB;EACrC;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAACD,QAAQ,CAACrD,GAAG,CAAC,EAAE;IAChC,oBAAO,6BAAC,iBAAI,8BAA2B;EAC3C;EAEA,oBACI,6BAAC,eAAQ,qBACL,6BAAC,iBAAI;IAAC,KAAK,EAAEuD,MAAM,CAACC;EAAK,gBACrB,6BAAC,2BAAO;IACJ,MAAM,EAAE;MACJC,GAAG,EAAE5C;IACT,CAAE;IACF,KAAK,EAAE0C,MAAM,CAACG,OAAQ;IACtB,qCAAqC,EAAE5C,cAAe;IACtD,SAAS,EAAES,gBAAiB;IAC5B,GAAG,EAAEjB,UAAW;IAChB,SAAS,EAAE,MAAMG,gBAAgB,CAAC,SAAS;EAAE,EAC/C,EACDD,aAAa,KAAK,SAAS,iBACxB,6BAAC,iBAAI;IAAC,KAAK,EAAE+C,MAAM,CAACI;EAAc,gBAC9B,6BAAC,8BAAiB;IAAC,IAAI,EAAC,OAAO;IAAC,KAAK,EAAE5D;EAAM,EAAG,CAEvD,CACE,CACA;AAEnB,CAAC;AAED,MAAMwD,MAAM,GAAGK,uBAAU,CAACC,MAAM,CAAC;EAC7BC,IAAI,EAAE;IACFC,OAAO,EAAE;EACb,CAAC;EACDP,IAAI,EAAE;IACFQ,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACZ,CAAC;EACDR,OAAO,EAAE;IACLM,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACZ,CAAC;EACDP,aAAa,EAAE;IACXQ,MAAM,EAAE,CAAC;IACTC,eAAe,EAAE,OAAO;IACxBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBN,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,MAAM;IACdK,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE;EACV;AACJ,CAAC,CAAC;AAAC,eAEY3E,WAAW;AAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useOmnipay = useOmnipay;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _OmnipayProvider = require("src/components/OmnipayProvider");
|
|
9
|
+
function useOmnipay() {
|
|
10
|
+
const {
|
|
11
|
+
initiateBills
|
|
12
|
+
} = (0, _react.useContext)(_OmnipayProvider.OmnipayContext);
|
|
13
|
+
return {
|
|
14
|
+
initiateBills: initiateBills
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
;
|
|
18
|
+
//# sourceMappingURL=useOmnipay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useOmnipay","initiateBills","useContext","OmnipayContext"],"sourceRoot":"../../src","sources":["useOmnipay.tsx"],"mappings":";;;;;;AAAA;AACA;AAEO,SAASA,UAAU,GAAG;EACzB,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,iBAAU,EAACC,+BAAc,CAAuB;EAC1E,OAAO;IACHF,aAAa,EAAEA;EACnB,CAAC;AACL;AAAC"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -3,184 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _reactNativeSelectContact = require("react-native-select-contact");
|
|
11
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
-
const Omnipay = _ref => {
|
|
14
|
-
let {
|
|
15
|
-
color,
|
|
16
|
-
env,
|
|
17
|
-
publicKey,
|
|
18
|
-
phoneNumber,
|
|
19
|
-
view,
|
|
20
|
-
onEnterFullScreen,
|
|
21
|
-
onExitFullScreen
|
|
22
|
-
} = _ref;
|
|
23
|
-
const webviewRef = (0, _react.useRef)(null);
|
|
24
|
-
const [webviewStatus, setWebviewStatus] = (0, _react.useState)('loading');
|
|
25
|
-
const webHost = getWebHost();
|
|
26
|
-
const webUrl = `${webHost}?theme=${color}&view=${view}&publicKey=${publicKey}&phoneNumber=${phoneNumber}`;
|
|
27
|
-
function getWebHost() {
|
|
28
|
-
if (env === 'dev') {
|
|
29
|
-
return 'https://omnipay-websdk.vercel.app/';
|
|
30
|
-
}
|
|
31
|
-
return 'https://sdk.omnipay.ng/';
|
|
6
|
+
Object.defineProperty(exports, "OmnipayProvider", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _OmnipayProvider.OmnipayProvider;
|
|
32
10
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (!webviewRef.current) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
webviewRef.current.postMessage(JSON.stringify(data));
|
|
43
|
-
} catch (error) {}
|
|
44
|
-
}
|
|
45
|
-
async function onWebviewMessage(e) {
|
|
46
|
-
try {
|
|
47
|
-
if (e.nativeEvent && e.nativeEvent.data) {
|
|
48
|
-
const eventData = JSON.parse(e.nativeEvent.data);
|
|
49
|
-
const {
|
|
50
|
-
dataKey,
|
|
51
|
-
dataValue
|
|
52
|
-
} = eventData;
|
|
53
|
-
if (dataKey === 'chooseContact') {
|
|
54
|
-
const contactDetails = await getContact();
|
|
55
|
-
postMessage({
|
|
56
|
-
dataKey: 'contactSelected',
|
|
57
|
-
dataValue: contactDetails
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
if (dataKey === 'modalOpen') {
|
|
61
|
-
if (onEnterFullScreen) {
|
|
62
|
-
onEnterFullScreen();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (dataKey === 'modalClosed') {
|
|
66
|
-
if (onExitFullScreen) {
|
|
67
|
-
onExitFullScreen();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (dataKey === 'openLink') {
|
|
71
|
-
_reactNative.Linking.openURL(dataValue);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
} catch (error) {}
|
|
75
|
-
}
|
|
76
|
-
async function getContact() {
|
|
77
|
-
try {
|
|
78
|
-
const isPermissionGranted = await checkPermisionStatus();
|
|
79
|
-
if (!isPermissionGranted) {
|
|
80
|
-
return {
|
|
81
|
-
name: '',
|
|
82
|
-
phoneNumber: ''
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
const result = await (0, _reactNativeSelectContact.selectContactPhone)();
|
|
86
|
-
if (!result) {
|
|
87
|
-
return {
|
|
88
|
-
name: '',
|
|
89
|
-
phoneNumber: ''
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
let {
|
|
93
|
-
contact,
|
|
94
|
-
selectedPhone
|
|
95
|
-
} = result;
|
|
96
|
-
return {
|
|
97
|
-
name: contact.name,
|
|
98
|
-
phoneNumber: selectedPhone.number
|
|
99
|
-
};
|
|
100
|
-
} catch (error) {
|
|
101
|
-
return {
|
|
102
|
-
name: '',
|
|
103
|
-
phoneNumber: ''
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
async function checkPermisionStatus() {
|
|
108
|
-
if (_reactNative.Platform.OS === 'ios') {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
if (_reactNative.PermissionsAndroid.PERMISSIONS.READ_CONTACTS) {
|
|
112
|
-
const granted = await _reactNative.PermissionsAndroid.request(_reactNative.PermissionsAndroid.PERMISSIONS.READ_CONTACTS, {
|
|
113
|
-
title: 'Allow us access your contact list',
|
|
114
|
-
message: 'This will enable you choose a phone number to buy airtime or data for from your contact list',
|
|
115
|
-
buttonNegative: 'Cancel',
|
|
116
|
-
buttonPositive: 'OK'
|
|
117
|
-
});
|
|
118
|
-
if (granted === _reactNative.PermissionsAndroid.RESULTS.GRANTED) {
|
|
119
|
-
return true;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return false;
|
|
123
|
-
}
|
|
124
|
-
if (view !== 'bills') {
|
|
125
|
-
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid view");
|
|
126
|
-
}
|
|
127
|
-
if (!publicKey.includes('OMNIPUBKEY_')) {
|
|
128
|
-
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid public key");
|
|
129
|
-
}
|
|
130
|
-
if (phoneNumber.length !== 11) {
|
|
131
|
-
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid phone number");
|
|
132
|
-
}
|
|
133
|
-
if (color.length < 3) {
|
|
134
|
-
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid color");
|
|
135
|
-
}
|
|
136
|
-
if (!['dev', 'prod'].includes(env)) {
|
|
137
|
-
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Invalid environment");
|
|
138
|
-
}
|
|
139
|
-
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
140
|
-
style: styles.full
|
|
141
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.WebView, {
|
|
142
|
-
source: {
|
|
143
|
-
uri: webUrl
|
|
144
|
-
},
|
|
145
|
-
style: styles.webview,
|
|
146
|
-
injectedJavaScriptBeforeContentLoaded: onWebviewMount,
|
|
147
|
-
onMessage: onWebviewMessage,
|
|
148
|
-
ref: webviewRef,
|
|
149
|
-
onLoadEnd: () => setWebviewStatus('success')
|
|
150
|
-
}), webviewStatus === 'loading' && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
151
|
-
style: styles.webviewLoader
|
|
152
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
|
|
153
|
-
size: "small",
|
|
154
|
-
color: color
|
|
155
|
-
}))));
|
|
156
|
-
};
|
|
157
|
-
const styles = _reactNative.StyleSheet.create({
|
|
158
|
-
hide: {
|
|
159
|
-
display: 'none'
|
|
160
|
-
},
|
|
161
|
-
full: {
|
|
162
|
-
flex: 1,
|
|
163
|
-
width: '100%',
|
|
164
|
-
height: '100%'
|
|
165
|
-
},
|
|
166
|
-
webview: {
|
|
167
|
-
flex: 1,
|
|
168
|
-
width: '100%',
|
|
169
|
-
height: '100%'
|
|
170
|
-
},
|
|
171
|
-
webviewLoader: {
|
|
172
|
-
zIndex: 3,
|
|
173
|
-
backgroundColor: 'white',
|
|
174
|
-
alignItems: 'center',
|
|
175
|
-
justifyContent: 'center',
|
|
176
|
-
flex: 1,
|
|
177
|
-
width: '100%',
|
|
178
|
-
height: '100%',
|
|
179
|
-
position: 'absolute',
|
|
180
|
-
top: 0,
|
|
181
|
-
left: 0
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "OmnipayView", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _OmnipayView.default;
|
|
182
16
|
}
|
|
183
17
|
});
|
|
184
|
-
var
|
|
185
|
-
|
|
18
|
+
var _OmnipayProvider = require("./components/OmnipayProvider");
|
|
19
|
+
var _OmnipayView = _interopRequireDefault(require("./components/OmnipayView"));
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
186
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AAAmD"}
|