@duffel/react-native-components-assistant 0.5.1-canary.5 → 0.5.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
- import React, { useEffect, useState } from 'react';
4
- import { Keyboard, Linking, Modal, Platform, StyleSheet, View } from 'react-native';
3
+ import React from 'react';
4
+ import { 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";
@@ -22,26 +22,6 @@ export const DuffelAssistant = ({
22
22
  onNewMessage,
23
23
  ...properties
24
24
  }) => {
25
- const [androidKeyboardHeight, setAndroidKeyboardHeight] = useState(0);
26
- useEffect(() => {
27
- if (Platform.OS !== 'android') {
28
- return;
29
- }
30
- if (!isOpen) {
31
- setAndroidKeyboardHeight(0);
32
- return;
33
- }
34
- const keyboardDidShowSubscription = Keyboard.addListener('keyboardDidShow', event => {
35
- setAndroidKeyboardHeight(event.endCoordinates?.height ?? 0);
36
- });
37
- const keyboardDidHideSubscription = Keyboard.addListener('keyboardDidHide', () => {
38
- setAndroidKeyboardHeight(0);
39
- });
40
- return () => {
41
- keyboardDidShowSubscription.remove();
42
- keyboardDidHideSubscription.remove();
43
- };
44
- }, [isOpen]);
45
25
  if (!hasJsonWebTokenFormat(properties.clientKey)) {
46
26
  throw new Error('Duffel Assistant client key format must be a valid JWT.');
47
27
  }
@@ -98,44 +78,13 @@ export const DuffelAssistant = ({
98
78
  Linking.openURL(request.url).catch(() => {});
99
79
  return false;
100
80
  };
101
- if (Platform.OS === 'android') {
102
- return /*#__PURE__*/_jsx(Modal, {
103
- visible: isOpen,
104
- onRequestClose: () => onClose(),
105
- animationType: "slide",
106
- children: /*#__PURE__*/_jsx(View, {
107
- style: [styles.androidContainer, {
108
- paddingBottom: 15 + androidKeyboardHeight
109
- }],
110
- children: /*#__PURE__*/_jsx(WebView
111
- // Required for Android
112
- , {
113
- injectedJavaScript: `
114
- postMessage(
115
- {
116
- type: "duffel-assistant-open",
117
- properties: ${JSON.stringify(properties)},
118
- },
119
- "*",
120
- );
121
- true;`,
122
- source: {
123
- uri: assistantIframeUrl
124
- },
125
- onMessage: handleMessage,
126
- onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest,
127
- style: styles.webView
128
- })
129
- })
130
- });
131
- }
132
81
  return /*#__PURE__*/_jsx(Modal, {
133
82
  visible: isOpen,
134
83
  onRequestClose: () => onClose(),
135
84
  animationType: "slide",
136
85
  children: /*#__PURE__*/_jsx(View, {
137
86
  style: styles.container,
138
- children: /*#__PURE__*/_jsx(WebView, {
87
+ children: Platform.OS === 'ios' ? /*#__PURE__*/_jsx(WebView, {
139
88
  injectedJavaScriptObject: properties
140
89
  // When you are running this in development iOS doesn't allow request from hosts with invalid https certificates.
141
90
  // If you try ngrok with the local esbuild server it will fail because ngrok requests in https and the dev server rejects http requests.
@@ -146,28 +95,46 @@ export const DuffelAssistant = ({
146
95
  uri: assistantIframeUrl
147
96
  },
148
97
  onMessage: handleMessage,
149
- onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest,
150
- style: styles.webView
98
+ onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest
99
+ // Always fetch the latest assistant bundle. The iframe.html shell
100
+ // references `./iframe-app.js` by a stable path, so without this
101
+ // the system WebView can serve a stale bundle for a long time.
102
+ ,
103
+ cacheEnabled: false
104
+ }) : /*#__PURE__*/_jsx(WebView
105
+ // Required for Android
106
+ , {
107
+ injectedJavaScript: `
108
+ postMessage(
109
+ {
110
+ type: "duffel-assistant-open",
111
+ properties: ${JSON.stringify(properties)},
112
+ },
113
+ "*",
114
+ );
115
+ true;`,
116
+ source: {
117
+ uri: assistantIframeUrl
118
+ },
119
+ onMessage: handleMessage,
120
+ onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest
121
+ // Always fetch the latest assistant bundle. The iframe.html shell
122
+ // references `./iframe-app.js` by a stable path, so without this
123
+ // the system WebView can serve a stale bundle for a long time.
124
+ ,
125
+ cacheEnabled: false,
126
+ cacheMode: "LOAD_NO_CACHE"
151
127
  })
152
128
  })
153
129
  });
154
130
  };
155
131
  const styles = StyleSheet.create({
156
132
  container: {
157
- flex: 1,
133
+ height: '100%',
158
134
  width: '100%',
159
135
  paddingHorizontal: 12,
160
136
  paddingTop: 50,
161
137
  paddingBottom: 30
162
- },
163
- androidContainer: {
164
- flex: 1,
165
- width: '100%',
166
- paddingTop: 45,
167
- paddingBottom: 15
168
- },
169
- webView: {
170
- flex: 1
171
138
  }
172
139
  });
173
140
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useState","Keyboard","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","androidKeyboardHeight","setAndroidKeyboardHeight","OS","keyboardDidShowSubscription","addListener","event","endCoordinates","height","keyboardDidHideSubscription","remove","clientKey","Error","clientKeyPayload","clientKeyIncludesResource","order_id","undefined","booking_id","cars_booking_id","issueType","console","warn","context","supportChannels","chat","showMinimiseButton","onMinimise","handleMessage","nativeEvent","data","parsedData","JSON","parse","type","userId","resourceId","handleShouldStartLoadWithRequest","request","navigationType","openURL","catch","visible","onRequestClose","animationType","children","style","styles","androidContainer","paddingBottom","injectedJavaScript","stringify","source","uri","onMessage","onShouldStartLoadWithRequest","webView","container","injectedJavaScriptObject","create","flex","width","paddingHorizontal","paddingTop"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
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","cacheEnabled","injectedJavaScript","stringify","cacheMode","create","height","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,KAA8B,MAAM,OAAO,CAAC;AAUnD,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,CAyM1D,CAAC"}
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,CAkK1D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duffel/react-native-components-assistant",
3
- "version": "0.5.1-canary.5",
3
+ "version": "0.5.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,12 +1,5 @@
1
- import React, { useEffect, useState } from 'react';
2
- import {
3
- Keyboard,
4
- Linking,
5
- Modal,
6
- Platform,
7
- StyleSheet,
8
- View,
9
- } from 'react-native';
1
+ import React from 'react';
2
+ import { Linking, Modal, Platform, StyleSheet, View } from 'react-native';
10
3
  import { WebView } from 'react-native-webview';
11
4
  import { type DuffelAssistantProps as DuffelAssistantPropsImported } from './DuffelAssistantProps';
12
5
  import { hasJsonWebTokenFormat } from './lib/hasJsonWebTokenFormat';
@@ -45,37 +38,6 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
45
38
  onNewMessage,
46
39
  ...properties
47
40
  }) => {
48
- const [androidKeyboardHeight, setAndroidKeyboardHeight] = useState(0);
49
-
50
- useEffect(() => {
51
- if (Platform.OS !== 'android') {
52
- return;
53
- }
54
-
55
- if (!isOpen) {
56
- setAndroidKeyboardHeight(0);
57
- return;
58
- }
59
-
60
- const keyboardDidShowSubscription = Keyboard.addListener(
61
- 'keyboardDidShow',
62
- (event) => {
63
- setAndroidKeyboardHeight(event.endCoordinates?.height ?? 0);
64
- }
65
- );
66
- const keyboardDidHideSubscription = Keyboard.addListener(
67
- 'keyboardDidHide',
68
- () => {
69
- setAndroidKeyboardHeight(0);
70
- }
71
- );
72
-
73
- return () => {
74
- keyboardDidShowSubscription.remove();
75
- keyboardDidHideSubscription.remove();
76
- };
77
- }, [isOpen]);
78
-
79
41
  if (!hasJsonWebTokenFormat(properties.clientKey)) {
80
42
  throw new Error('Duffel Assistant client key format must be a valid JWT.');
81
43
  }
@@ -185,40 +147,6 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
185
147
  return false;
186
148
  };
187
149
 
188
- if (Platform.OS === 'android') {
189
- return (
190
- <Modal
191
- visible={isOpen}
192
- onRequestClose={() => onClose()}
193
- animationType="slide"
194
- >
195
- <View
196
- style={[
197
- styles.androidContainer,
198
- { paddingBottom: 15 + androidKeyboardHeight },
199
- ]}
200
- >
201
- <WebView
202
- // Required for Android
203
- injectedJavaScript={`
204
- postMessage(
205
- {
206
- type: "duffel-assistant-open",
207
- properties: ${JSON.stringify(properties)},
208
- },
209
- "*",
210
- );
211
- true;`}
212
- source={{ uri: assistantIframeUrl }}
213
- onMessage={handleMessage}
214
- onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
215
- style={styles.webView}
216
- />
217
- </View>
218
- </Modal>
219
- );
220
- }
221
-
222
150
  return (
223
151
  <Modal
224
152
  visible={isOpen}
@@ -226,17 +154,43 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
226
154
  animationType="slide"
227
155
  >
228
156
  <View style={styles.container}>
229
- <WebView
230
- injectedJavaScriptObject={properties}
231
- // When you are running this in development iOS doesn't allow request from hosts with invalid https certificates.
232
- // If you try ngrok with the local esbuild server it will fail because ngrok requests in https and the dev server rejects http requests.
233
- // Easiest solution is to use the production URL with test data.
234
- // If that's not possible, you can also upload the assistant built assets to a different folder in assets.duffel and work with that.
235
- source={{ uri: assistantIframeUrl }}
236
- onMessage={handleMessage}
237
- onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
238
- style={styles.webView}
239
- />
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
+ // Always fetch the latest assistant bundle. The iframe.html shell
168
+ // references `./iframe-app.js` by a stable path, so without this
169
+ // the system WebView can serve a stale bundle for a long time.
170
+ cacheEnabled={false}
171
+ />
172
+ ) : (
173
+ <WebView
174
+ // Required for Android
175
+ injectedJavaScript={`
176
+ postMessage(
177
+ {
178
+ type: "duffel-assistant-open",
179
+ properties: ${JSON.stringify(properties)},
180
+ },
181
+ "*",
182
+ );
183
+ true;`}
184
+ source={{ uri: assistantIframeUrl }}
185
+ onMessage={handleMessage}
186
+ onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
187
+ // Always fetch the latest assistant bundle. The iframe.html shell
188
+ // references `./iframe-app.js` by a stable path, so without this
189
+ // the system WebView can serve a stale bundle for a long time.
190
+ cacheEnabled={false}
191
+ cacheMode="LOAD_NO_CACHE"
192
+ />
193
+ )}
240
194
  </View>
241
195
  </Modal>
242
196
  );
@@ -244,19 +198,10 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
244
198
 
245
199
  const styles = StyleSheet.create({
246
200
  container: {
247
- flex: 1,
201
+ height: '100%',
248
202
  width: '100%',
249
203
  paddingHorizontal: 12,
250
204
  paddingTop: 50,
251
205
  paddingBottom: 30,
252
206
  },
253
- androidContainer: {
254
- flex: 1,
255
- width: '100%',
256
- paddingTop: 45,
257
- paddingBottom: 15,
258
- },
259
- webView: {
260
- flex: 1,
261
- },
262
207
  });