@duffel/react-native-components-assistant 0.5.0 → 0.5.1-canary.1

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.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import React from 'react';
4
- import { Linking, Modal, Platform, StyleSheet, View } from 'react-native';
4
+ import { KeyboardAvoidingView, Linking, Modal, Platform, StyleSheet, View } from 'react-native';
5
5
  import { WebView } from 'react-native-webview';
6
6
  import { hasJsonWebTokenFormat } from "./lib/hasJsonWebTokenFormat.js";
7
7
  import { getClientKeyPayload } from "./lib/getClientKeyPayload.js";
@@ -78,13 +78,47 @@ export const DuffelAssistant = ({
78
78
  Linking.openURL(request.url).catch(() => {});
79
79
  return false;
80
80
  };
81
+ if (Platform.OS === 'android') {
82
+ return /*#__PURE__*/_jsx(Modal, {
83
+ visible: isOpen,
84
+ onRequestClose: () => onClose(),
85
+ animationType: "slide",
86
+ children: /*#__PURE__*/_jsx(KeyboardAvoidingView, {
87
+ behavior: 'padding',
88
+ enabled: true,
89
+ style: styles.keyboardAvoidingView,
90
+ children: /*#__PURE__*/_jsx(View, {
91
+ style: styles.androidContainer,
92
+ children: /*#__PURE__*/_jsx(WebView
93
+ // Required for Android
94
+ , {
95
+ injectedJavaScript: `
96
+ postMessage(
97
+ {
98
+ type: "duffel-assistant-open",
99
+ properties: ${JSON.stringify(properties)},
100
+ },
101
+ "*",
102
+ );
103
+ true;`,
104
+ source: {
105
+ uri: assistantIframeUrl
106
+ },
107
+ onMessage: handleMessage,
108
+ onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest,
109
+ style: styles.webView
110
+ })
111
+ })
112
+ })
113
+ });
114
+ }
81
115
  return /*#__PURE__*/_jsx(Modal, {
82
116
  visible: isOpen,
83
117
  onRequestClose: () => onClose(),
84
118
  animationType: "slide",
85
119
  children: /*#__PURE__*/_jsx(View, {
86
120
  style: styles.container,
87
- children: Platform.OS === 'ios' ? /*#__PURE__*/_jsx(WebView, {
121
+ children: /*#__PURE__*/_jsx(WebView, {
88
122
  injectedJavaScriptObject: properties
89
123
  // When you are running this in development iOS doesn't allow request from hosts with invalid https certificates.
90
124
  // If you try ngrok with the local esbuild server it will fail because ngrok requests in https and the dev server rejects http requests.
@@ -95,35 +129,32 @@ export const DuffelAssistant = ({
95
129
  uri: assistantIframeUrl
96
130
  },
97
131
  onMessage: handleMessage,
98
- onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest
99
- }) : /*#__PURE__*/_jsx(WebView
100
- // Required for Android
101
- , {
102
- injectedJavaScript: `
103
- postMessage(
104
- {
105
- type: "duffel-assistant-open",
106
- properties: ${JSON.stringify(properties)},
107
- },
108
- "*",
109
- );
110
- true;`,
111
- source: {
112
- uri: assistantIframeUrl
113
- },
114
- onMessage: handleMessage,
115
- onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest
132
+ onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest,
133
+ style: styles.webView
116
134
  })
117
135
  })
118
136
  });
119
137
  };
120
138
  const styles = StyleSheet.create({
139
+ keyboardAvoidingView: {
140
+ flex: 1
141
+ },
121
142
  container: {
122
- height: '100%',
143
+ flex: 1,
144
+ width: '100%',
145
+ paddingHorizontal: 12,
146
+ paddingTop: 50,
147
+ paddingBottom: 10
148
+ },
149
+ androidContainer: {
150
+ flex: 1,
123
151
  width: '100%',
124
152
  paddingHorizontal: 12,
125
153
  paddingTop: 50,
126
- paddingBottom: 30
154
+ paddingBottom: 10
155
+ },
156
+ webView: {
157
+ flex: 1
127
158
  }
128
159
  });
129
160
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Linking","Modal","Platform","StyleSheet","View","WebView","hasJsonWebTokenFormat","getClientKeyPayload","jsx","_jsx","assistantIframeUrl","isHttpUrl","url","test","isAssistantIframeUrl","parsedUrl","URL","origin","pathname","error","DuffelAssistant","isOpen","onClose","onNewMessage","properties","clientKey","Error","clientKeyPayload","clientKeyIncludesResource","order_id","undefined","booking_id","cars_booking_id","issueType","console","warn","context","supportChannels","chat","showMinimiseButton","onMinimise","handleMessage","event","nativeEvent","data","parsedData","JSON","parse","type","userId","resourceId","handleShouldStartLoadWithRequest","request","OS","navigationType","openURL","catch","visible","onRequestClose","animationType","children","style","styles","container","injectedJavaScriptObject","source","uri","onMessage","onShouldStartLoadWithRequest","injectedJavaScript","stringify","create","height","width","paddingHorizontal","paddingTop","paddingBottom"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","KeyboardAvoidingView","Linking","Modal","Platform","StyleSheet","View","WebView","hasJsonWebTokenFormat","getClientKeyPayload","jsx","_jsx","assistantIframeUrl","isHttpUrl","url","test","isAssistantIframeUrl","parsedUrl","URL","origin","pathname","error","DuffelAssistant","isOpen","onClose","onNewMessage","properties","clientKey","Error","clientKeyPayload","clientKeyIncludesResource","order_id","undefined","booking_id","cars_booking_id","issueType","console","warn","context","supportChannels","chat","showMinimiseButton","onMinimise","handleMessage","event","nativeEvent","data","parsedData","JSON","parse","type","userId","resourceId","handleShouldStartLoadWithRequest","request","OS","navigationType","openURL","catch","visible","onRequestClose","animationType","children","behavior","enabled","style","styles","keyboardAvoidingView","androidContainer","injectedJavaScript","stringify","source","uri","onMessage","onShouldStartLoadWithRequest","webView","container","injectedJavaScriptObject","create","flex","width","paddingHorizontal","paddingTop","paddingBottom"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,KAAK,oBAAoB,IAAI,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAInG,MAAM,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AA2BhE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAyJ1D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EAAE,KAAK,oBAAoB,IAAI,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAInG,MAAM,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AA2BhE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA2K1D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duffel/react-native-components-assistant",
3
- "version": "0.5.0",
3
+ "version": "0.5.1-canary.1",
4
4
  "description": "Duffel Assistant component in React Native",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
package/src/index.tsx CHANGED
@@ -1,5 +1,12 @@
1
1
  import React from 'react';
2
- import { Linking, Modal, Platform, StyleSheet, View } from 'react-native';
2
+ import {
3
+ KeyboardAvoidingView,
4
+ Linking,
5
+ Modal,
6
+ Platform,
7
+ StyleSheet,
8
+ View,
9
+ } from 'react-native';
3
10
  import { WebView } from 'react-native-webview';
4
11
  import { type DuffelAssistantProps as DuffelAssistantPropsImported } from './DuffelAssistantProps';
5
12
  import { hasJsonWebTokenFormat } from './lib/hasJsonWebTokenFormat';
@@ -147,6 +154,41 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
147
154
  return false;
148
155
  };
149
156
 
157
+ if (Platform.OS === 'android') {
158
+ return (
159
+ <Modal
160
+ visible={isOpen}
161
+ onRequestClose={() => onClose()}
162
+ animationType="slide"
163
+ >
164
+ <KeyboardAvoidingView
165
+ behavior={'padding'}
166
+ enabled={true}
167
+ style={styles.keyboardAvoidingView}
168
+ >
169
+ <View style={styles.androidContainer}>
170
+ <WebView
171
+ // Required for Android
172
+ injectedJavaScript={`
173
+ postMessage(
174
+ {
175
+ type: "duffel-assistant-open",
176
+ properties: ${JSON.stringify(properties)},
177
+ },
178
+ "*",
179
+ );
180
+ true;`}
181
+ source={{ uri: assistantIframeUrl }}
182
+ onMessage={handleMessage}
183
+ onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
184
+ style={styles.webView}
185
+ />
186
+ </View>
187
+ </KeyboardAvoidingView>
188
+ </Modal>
189
+ );
190
+ }
191
+
150
192
  return (
151
193
  <Modal
152
194
  visible={isOpen}
@@ -154,45 +196,41 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
154
196
  animationType="slide"
155
197
  >
156
198
  <View style={styles.container}>
157
- {Platform.OS === 'ios' ? (
158
- <WebView
159
- injectedJavaScriptObject={properties}
160
- // When you are running this in development iOS doesn't allow request from hosts with invalid https certificates.
161
- // If you try ngrok with the local esbuild server it will fail because ngrok requests in https and the dev server rejects http requests.
162
- // Easiest solution is to use the production URL with test data.
163
- // If that's not possible, you can also upload the assistant built assets to a different folder in assets.duffel and work with that.
164
- source={{ uri: assistantIframeUrl }}
165
- onMessage={handleMessage}
166
- onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
167
- />
168
- ) : (
169
- <WebView
170
- // Required for Android
171
- injectedJavaScript={`
172
- postMessage(
173
- {
174
- type: "duffel-assistant-open",
175
- properties: ${JSON.stringify(properties)},
176
- },
177
- "*",
178
- );
179
- true;`}
180
- source={{ uri: assistantIframeUrl }}
181
- onMessage={handleMessage}
182
- onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
183
- />
184
- )}
199
+ <WebView
200
+ injectedJavaScriptObject={properties}
201
+ // When you are running this in development iOS doesn't allow request from hosts with invalid https certificates.
202
+ // If you try ngrok with the local esbuild server it will fail because ngrok requests in https and the dev server rejects http requests.
203
+ // Easiest solution is to use the production URL with test data.
204
+ // If that's not possible, you can also upload the assistant built assets to a different folder in assets.duffel and work with that.
205
+ source={{ uri: assistantIframeUrl }}
206
+ onMessage={handleMessage}
207
+ onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
208
+ style={styles.webView}
209
+ />
185
210
  </View>
186
211
  </Modal>
187
212
  );
188
213
  };
189
214
 
190
215
  const styles = StyleSheet.create({
216
+ keyboardAvoidingView: {
217
+ flex: 1,
218
+ },
191
219
  container: {
192
- height: '100%',
220
+ flex: 1,
193
221
  width: '100%',
194
222
  paddingHorizontal: 12,
195
223
  paddingTop: 50,
196
- paddingBottom: 30,
224
+ paddingBottom: 10,
225
+ },
226
+ androidContainer: {
227
+ flex: 1,
228
+ width: '100%',
229
+ paddingHorizontal: 12,
230
+ paddingTop: 50,
231
+ paddingBottom: 10,
232
+ },
233
+ webView: {
234
+ flex: 1,
197
235
  },
198
236
  });