omnipay-reactnative-sdk 0.0.7 → 0.0.9
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/lib/commonjs/index.js +61 -11
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +62 -12
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +54 -12
package/lib/commonjs/index.js
CHANGED
|
@@ -18,26 +18,73 @@ const Omnipay = _ref => {
|
|
|
18
18
|
phoneNumber,
|
|
19
19
|
view
|
|
20
20
|
} = _ref;
|
|
21
|
+
const webviewRef = (0, _react.useRef)(null);
|
|
22
|
+
const webHost = getWebHost();
|
|
23
|
+
const webUrl = `${webHost}?theme=${color}&view=${view}&publicKey=${publicKey}&phoneNumber=${phoneNumber}`;
|
|
21
24
|
function getWebHost() {
|
|
22
25
|
if (env === 'dev') {
|
|
23
26
|
return 'https://omnipaysdk.vercel.app/';
|
|
24
27
|
}
|
|
25
28
|
return 'https://sdk.omnipay.ng/';
|
|
26
29
|
}
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
const onWebviewMount = `
|
|
31
|
+
window.isNativeApp = true;
|
|
32
|
+
true;
|
|
33
|
+
`;
|
|
34
|
+
function postMessage(data) {
|
|
35
|
+
if (!webviewRef.current) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
webviewRef.current.postMessage(JSON.stringify(data));
|
|
40
|
+
} catch (error) {}
|
|
41
|
+
}
|
|
42
|
+
function onWebviewMessage(e) {
|
|
43
|
+
try {
|
|
44
|
+
if (e.nativeEvent && e.nativeEvent.data) {
|
|
45
|
+
const eventData = JSON.parse(e.nativeEvent.data);
|
|
46
|
+
const {
|
|
47
|
+
dataKey
|
|
48
|
+
} = eventData;
|
|
49
|
+
if (dataKey === 'chooseContact') {
|
|
50
|
+
const contactDetails = getContact();
|
|
51
|
+
postMessage({
|
|
52
|
+
dataKey: 'contactSelected',
|
|
53
|
+
dataValue: contactDetails
|
|
54
|
+
});
|
|
55
|
+
}
|
|
33
56
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
57
|
+
} catch (error) {}
|
|
58
|
+
}
|
|
59
|
+
function getContact() {
|
|
60
|
+
try {
|
|
61
|
+
return (0, _reactNativeSelectContact.selectContactPhone)().then(selection => {
|
|
62
|
+
if (!selection) {
|
|
63
|
+
return {
|
|
64
|
+
name: '',
|
|
65
|
+
phoneNumber: ''
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
let {
|
|
69
|
+
contact,
|
|
70
|
+
selectedPhone
|
|
71
|
+
} = selection;
|
|
72
|
+
return {
|
|
73
|
+
name: contact.name,
|
|
74
|
+
phoneNumber: selectedPhone.number
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
} catch (error) {
|
|
78
|
+
return {
|
|
79
|
+
name: '',
|
|
80
|
+
phoneNumber: ''
|
|
81
|
+
};
|
|
82
|
+
}
|
|
37
83
|
}
|
|
38
84
|
(0, _react.useEffect)(() => {
|
|
39
85
|
setTimeout(() => {
|
|
40
|
-
getContact();
|
|
86
|
+
const res = getContact();
|
|
87
|
+
console.log(res);
|
|
41
88
|
}, 5000);
|
|
42
89
|
}, []);
|
|
43
90
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, webUrl), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
@@ -46,7 +93,10 @@ const Omnipay = _ref => {
|
|
|
46
93
|
source: {
|
|
47
94
|
uri: 'https://omnipaydashboarddev.z6.web.core.windows.net/app/dashboard'
|
|
48
95
|
},
|
|
49
|
-
style: styles.full
|
|
96
|
+
style: styles.full,
|
|
97
|
+
injectedJavaScriptBeforeContentLoaded: onWebviewMount,
|
|
98
|
+
onMessage: onWebviewMessage,
|
|
99
|
+
ref: webviewRef
|
|
50
100
|
})));
|
|
51
101
|
};
|
|
52
102
|
const styles = _reactNative.StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Omnipay","color","env","publicKey","phoneNumber","view","
|
|
1
|
+
{"version":3,"names":["Omnipay","color","env","publicKey","phoneNumber","view","webviewRef","useRef","webHost","getWebHost","webUrl","onWebviewMount","postMessage","data","current","JSON","stringify","error","onWebviewMessage","e","nativeEvent","eventData","parse","dataKey","contactDetails","getContact","dataValue","selectContactPhone","then","selection","name","contact","selectedPhone","number","useEffect","setTimeout","res","console","log","styles","full","uri","StyleSheet","create","flex","width","height"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
|
package/lib/module/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { Fragment, useEffect } from 'react';
|
|
1
|
+
import React, { Fragment, useEffect, useRef } from 'react';
|
|
2
2
|
import { StyleSheet, Text, View } from 'react-native';
|
|
3
3
|
import { WebView } from 'react-native-webview';
|
|
4
4
|
import { selectContactPhone } from 'react-native-select-contact';
|
|
@@ -10,26 +10,73 @@ const Omnipay = _ref => {
|
|
|
10
10
|
phoneNumber,
|
|
11
11
|
view
|
|
12
12
|
} = _ref;
|
|
13
|
+
const webviewRef = useRef(null);
|
|
14
|
+
const webHost = getWebHost();
|
|
15
|
+
const webUrl = `${webHost}?theme=${color}&view=${view}&publicKey=${publicKey}&phoneNumber=${phoneNumber}`;
|
|
13
16
|
function getWebHost() {
|
|
14
17
|
if (env === 'dev') {
|
|
15
18
|
return 'https://omnipaysdk.vercel.app/';
|
|
16
19
|
}
|
|
17
20
|
return 'https://sdk.omnipay.ng/';
|
|
18
21
|
}
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
const onWebviewMount = `
|
|
23
|
+
window.isNativeApp = true;
|
|
24
|
+
true;
|
|
25
|
+
`;
|
|
26
|
+
function postMessage(data) {
|
|
27
|
+
if (!webviewRef.current) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
webviewRef.current.postMessage(JSON.stringify(data));
|
|
32
|
+
} catch (error) {}
|
|
33
|
+
}
|
|
34
|
+
function onWebviewMessage(e) {
|
|
35
|
+
try {
|
|
36
|
+
if (e.nativeEvent && e.nativeEvent.data) {
|
|
37
|
+
const eventData = JSON.parse(e.nativeEvent.data);
|
|
38
|
+
const {
|
|
39
|
+
dataKey
|
|
40
|
+
} = eventData;
|
|
41
|
+
if (dataKey === 'chooseContact') {
|
|
42
|
+
const contactDetails = getContact();
|
|
43
|
+
postMessage({
|
|
44
|
+
dataKey: 'contactSelected',
|
|
45
|
+
dataValue: contactDetails
|
|
46
|
+
});
|
|
47
|
+
}
|
|
25
48
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
49
|
+
} catch (error) {}
|
|
50
|
+
}
|
|
51
|
+
function getContact() {
|
|
52
|
+
try {
|
|
53
|
+
return selectContactPhone().then(selection => {
|
|
54
|
+
if (!selection) {
|
|
55
|
+
return {
|
|
56
|
+
name: '',
|
|
57
|
+
phoneNumber: ''
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
let {
|
|
61
|
+
contact,
|
|
62
|
+
selectedPhone
|
|
63
|
+
} = selection;
|
|
64
|
+
return {
|
|
65
|
+
name: contact.name,
|
|
66
|
+
phoneNumber: selectedPhone.number
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
} catch (error) {
|
|
70
|
+
return {
|
|
71
|
+
name: '',
|
|
72
|
+
phoneNumber: ''
|
|
73
|
+
};
|
|
74
|
+
}
|
|
29
75
|
}
|
|
30
76
|
useEffect(() => {
|
|
31
77
|
setTimeout(() => {
|
|
32
|
-
getContact();
|
|
78
|
+
const res = getContact();
|
|
79
|
+
console.log(res);
|
|
33
80
|
}, 5000);
|
|
34
81
|
}, []);
|
|
35
82
|
return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Text, null, webUrl), /*#__PURE__*/React.createElement(View, {
|
|
@@ -38,7 +85,10 @@ const Omnipay = _ref => {
|
|
|
38
85
|
source: {
|
|
39
86
|
uri: 'https://omnipaydashboarddev.z6.web.core.windows.net/app/dashboard'
|
|
40
87
|
},
|
|
41
|
-
style: styles.full
|
|
88
|
+
style: styles.full,
|
|
89
|
+
injectedJavaScriptBeforeContentLoaded: onWebviewMount,
|
|
90
|
+
onMessage: onWebviewMessage,
|
|
91
|
+
ref: webviewRef
|
|
42
92
|
})));
|
|
43
93
|
};
|
|
44
94
|
const styles = StyleSheet.create({
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Fragment","useEffect","StyleSheet","Text","View","WebView","selectContactPhone","Omnipay","color","env","publicKey","phoneNumber","view","
|
|
1
|
+
{"version":3,"names":["React","Fragment","useEffect","useRef","StyleSheet","Text","View","WebView","selectContactPhone","Omnipay","color","env","publicKey","phoneNumber","view","webviewRef","webHost","getWebHost","webUrl","onWebviewMount","postMessage","data","current","JSON","stringify","error","onWebviewMessage","e","nativeEvent","eventData","parse","dataKey","contactDetails","getContact","dataValue","then","selection","name","contact","selectedPhone","number","setTimeout","res","console","log","styles","full","uri","create","flex","width","height"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAKA,aAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAKA,aAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAMF,QAAA,MAAM,OAAO,kDAMV,YAAY,KAAG,WA+EjB,CAAC;AAUF,eAAe,OAAO,CAAC"}
|
package/package.json
CHANGED
package/src/index.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React, { Fragment, useEffect } from 'react';
|
|
1
|
+
import React, { Fragment, useEffect, useRef } from 'react';
|
|
2
2
|
import { StyleSheet, Text, View } from 'react-native';
|
|
3
|
-
import { WebView } from 'react-native-webview';
|
|
3
|
+
import { WebView, WebViewMessageEvent } from 'react-native-webview';
|
|
4
4
|
import { selectContactPhone } from 'react-native-select-contact';
|
|
5
5
|
|
|
6
6
|
type OmnipayProps = {
|
|
@@ -11,6 +11,10 @@ type OmnipayProps = {
|
|
|
11
11
|
view: 'bills';
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
+
type PostMessage = {
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
};
|
|
17
|
+
|
|
14
18
|
const Omnipay = ({
|
|
15
19
|
color,
|
|
16
20
|
env,
|
|
@@ -18,6 +22,10 @@ const Omnipay = ({
|
|
|
18
22
|
phoneNumber,
|
|
19
23
|
view,
|
|
20
24
|
}: OmnipayProps): JSX.Element => {
|
|
25
|
+
const webviewRef = useRef<WebView>(null);
|
|
26
|
+
const webHost = getWebHost();
|
|
27
|
+
const webUrl = `${webHost}?theme=${color}&view=${view}&publicKey=${publicKey}&phoneNumber=${phoneNumber}`;
|
|
28
|
+
|
|
21
29
|
function getWebHost() {
|
|
22
30
|
if (env === 'dev') {
|
|
23
31
|
return 'https://omnipaysdk.vercel.app/';
|
|
@@ -25,23 +33,54 @@ const Omnipay = ({
|
|
|
25
33
|
return 'https://sdk.omnipay.ng/';
|
|
26
34
|
}
|
|
27
35
|
|
|
28
|
-
const
|
|
29
|
-
|
|
36
|
+
const onWebviewMount = `
|
|
37
|
+
window.isNativeApp = true;
|
|
38
|
+
true;
|
|
39
|
+
`;
|
|
30
40
|
|
|
31
|
-
function
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
41
|
+
function postMessage(data: PostMessage) {
|
|
42
|
+
if (!webviewRef.current) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
webviewRef.current.postMessage(JSON.stringify(data));
|
|
47
|
+
} catch (error) {}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function onWebviewMessage(e: WebViewMessageEvent) {
|
|
51
|
+
try {
|
|
52
|
+
if (e.nativeEvent && e.nativeEvent.data) {
|
|
53
|
+
const eventData = JSON.parse(e.nativeEvent.data);
|
|
54
|
+
const { dataKey } = eventData;
|
|
55
|
+
if (dataKey === 'chooseContact') {
|
|
56
|
+
const contactDetails = getContact();
|
|
57
|
+
postMessage({
|
|
58
|
+
dataKey: 'contactSelected',
|
|
59
|
+
dataValue: contactDetails,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
35
62
|
}
|
|
63
|
+
} catch (error) {}
|
|
64
|
+
}
|
|
36
65
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
66
|
+
function getContact() {
|
|
67
|
+
try {
|
|
68
|
+
return selectContactPhone().then((selection) => {
|
|
69
|
+
if (!selection) {
|
|
70
|
+
return { name: '', phoneNumber: '' };
|
|
71
|
+
}
|
|
72
|
+
let { contact, selectedPhone } = selection;
|
|
73
|
+
return { name: contact.name, phoneNumber: selectedPhone.number };
|
|
74
|
+
});
|
|
75
|
+
} catch (error) {
|
|
76
|
+
return { name: '', phoneNumber: '' };
|
|
77
|
+
}
|
|
40
78
|
}
|
|
41
79
|
|
|
42
80
|
useEffect(() => {
|
|
43
81
|
setTimeout(() => {
|
|
44
|
-
getContact();
|
|
82
|
+
const res = getContact();
|
|
83
|
+
console.log(res);
|
|
45
84
|
}, 5000);
|
|
46
85
|
}, []);
|
|
47
86
|
|
|
@@ -54,6 +93,9 @@ const Omnipay = ({
|
|
|
54
93
|
uri: 'https://omnipaydashboarddev.z6.web.core.windows.net/app/dashboard',
|
|
55
94
|
}}
|
|
56
95
|
style={styles.full}
|
|
96
|
+
injectedJavaScriptBeforeContentLoaded={onWebviewMount}
|
|
97
|
+
onMessage={onWebviewMessage}
|
|
98
|
+
ref={webviewRef}
|
|
57
99
|
/>
|
|
58
100
|
</View>
|
|
59
101
|
</Fragment>
|