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.
@@ -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 webHost = getWebHost();
28
- const webUrl = `${webHost}?theme=${color}&view=${view}&publicKey=${publicKey}&phoneNumber=${phoneNumber}`;
29
- function getContact() {
30
- return (0, _reactNativeSelectContact.selectContactPhone)().then(selection => {
31
- if (!selection) {
32
- return null;
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
- console.log(selection);
35
- return selection;
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","getWebHost","webHost","webUrl","getContact","selectContactPhone","then","selection","console","log","useEffect","setTimeout","styles","full","uri","StyleSheet","create","flex","width","height"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAAiE;AAAA;AAUjE,MAAMA,OAAO,GAAG,QAMiB;EAAA,IANhB;IACfC,KAAK;IACLC,GAAG;IACHC,SAAS;IACTC,WAAW;IACXC;EACY,CAAC;EACb,SAASC,UAAU,GAAG;IACpB,IAAIJ,GAAG,KAAK,KAAK,EAAE;MACjB,OAAO,gCAAgC;IACzC;IACA,OAAO,yBAAyB;EAClC;EAEA,MAAMK,OAAO,GAAGD,UAAU,EAAE;EAC5B,MAAME,MAAM,GAAI,GAAED,OAAQ,UAASN,KAAM,SAAQI,IAAK,cAAaF,SAAU,gBAAeC,WAAY,EAAC;EAEzG,SAASK,UAAU,GAAG;IACpB,OAAO,IAAAC,4CAAkB,GAAE,CAACC,IAAI,CAAEC,SAAS,IAAK;MAC9C,IAAI,CAACA,SAAS,EAAE;QACd,OAAO,IAAI;MACb;MAEAC,OAAO,CAACC,GAAG,CAACF,SAAS,CAAC;MACtB,OAAOA,SAAS;IAClB,CAAC,CAAC;EACJ;EAEA,IAAAG,gBAAS,EAAC,MAAM;IACdC,UAAU,CAAC,MAAM;MACfP,UAAU,EAAE;IACd,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE,6BAAC,eAAQ,qBACP,6BAAC,iBAAI,QAAED,MAAM,CAAQ,eACrB,6BAAC,iBAAI;IAAC,KAAK,EAAES,MAAM,CAACC;EAAK,gBACvB,6BAAC,2BAAO;IACN,MAAM,EAAE;MACNC,GAAG,EAAE;IACP,CAAE;IACF,KAAK,EAAEF,MAAM,CAACC;EAAK,EACnB,CACG,CACE;AAEf,CAAC;AAED,MAAMD,MAAM,GAAGG,uBAAU,CAACC,MAAM,CAAC;EAC/BH,IAAI,EAAE;IACJI,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AAAC,eAEYxB,OAAO;AAAA"}
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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"}
@@ -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 webHost = getWebHost();
20
- const webUrl = `${webHost}?theme=${color}&view=${view}&publicKey=${publicKey}&phoneNumber=${phoneNumber}`;
21
- function getContact() {
22
- return selectContactPhone().then(selection => {
23
- if (!selection) {
24
- return null;
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
- console.log(selection);
27
- return selection;
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({
@@ -1 +1 @@
1
- {"version":3,"names":["React","Fragment","useEffect","StyleSheet","Text","View","WebView","selectContactPhone","Omnipay","color","env","publicKey","phoneNumber","view","getWebHost","webHost","webUrl","getContact","then","selection","console","log","setTimeout","styles","full","uri","create","flex","width","height"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,SAASC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,kBAAkB,QAAQ,6BAA6B;AAUhE,MAAMC,OAAO,GAAG,QAMiB;EAAA,IANhB;IACfC,KAAK;IACLC,GAAG;IACHC,SAAS;IACTC,WAAW;IACXC;EACY,CAAC;EACb,SAASC,UAAU,GAAG;IACpB,IAAIJ,GAAG,KAAK,KAAK,EAAE;MACjB,OAAO,gCAAgC;IACzC;IACA,OAAO,yBAAyB;EAClC;EAEA,MAAMK,OAAO,GAAGD,UAAU,EAAE;EAC5B,MAAME,MAAM,GAAI,GAAED,OAAQ,UAASN,KAAM,SAAQI,IAAK,cAAaF,SAAU,gBAAeC,WAAY,EAAC;EAEzG,SAASK,UAAU,GAAG;IACpB,OAAOV,kBAAkB,EAAE,CAACW,IAAI,CAAEC,SAAS,IAAK;MAC9C,IAAI,CAACA,SAAS,EAAE;QACd,OAAO,IAAI;MACb;MAEAC,OAAO,CAACC,GAAG,CAACF,SAAS,CAAC;MACtB,OAAOA,SAAS;IAClB,CAAC,CAAC;EACJ;EAEAjB,SAAS,CAAC,MAAM;IACdoB,UAAU,CAAC,MAAM;MACfL,UAAU,EAAE;IACd,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE,oBAAC,QAAQ,qBACP,oBAAC,IAAI,QAAED,MAAM,CAAQ,eACrB,oBAAC,IAAI;IAAC,KAAK,EAAEO,MAAM,CAACC;EAAK,gBACvB,oBAAC,OAAO;IACN,MAAM,EAAE;MACNC,GAAG,EAAE;IACP,CAAE;IACF,KAAK,EAAEF,MAAM,CAACC;EAAK,EACnB,CACG,CACE;AAEf,CAAC;AAED,MAAMD,MAAM,GAAGpB,UAAU,CAACuB,MAAM,CAAC;EAC/BF,IAAI,EAAE;IACJG,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AAEF,eAAerB,OAAO"}
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;AAEF,QAAA,MAAM,OAAO,kDAMV,YAAY,KAAG,WAyCjB,CAAC;AAUF,eAAe,OAAO,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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnipay-reactnative-sdk",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "Omnipay react native sdk",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
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 webHost = getWebHost();
29
- const webUrl = `${webHost}?theme=${color}&view=${view}&publicKey=${publicKey}&phoneNumber=${phoneNumber}`;
36
+ const onWebviewMount = `
37
+ window.isNativeApp = true;
38
+ true;
39
+ `;
30
40
 
31
- function getContact() {
32
- return selectContactPhone().then((selection) => {
33
- if (!selection) {
34
- return null;
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
- console.log(selection);
38
- return selection;
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>