@duffel/react-native-components-assistant 0.5.1-canary.3 → 0.5.1-canary.5

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 from 'react';
4
- import { KeyboardAvoidingView, Linking, Modal, Platform, StyleSheet, View } from 'react-native';
3
+ import React, { useEffect, useState } from 'react';
4
+ import { Keyboard, 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,6 +22,26 @@ 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]);
25
45
  if (!hasJsonWebTokenFormat(properties.clientKey)) {
26
46
  throw new Error('Duffel Assistant client key format must be a valid JWT.');
27
47
  }
@@ -83,15 +103,14 @@ export const DuffelAssistant = ({
83
103
  visible: isOpen,
84
104
  onRequestClose: () => onClose(),
85
105
  animationType: "slide",
86
- children: /*#__PURE__*/_jsx(KeyboardAvoidingView, {
87
- enabled: true,
88
- style: styles.keyboardAvoidingView,
89
- children: /*#__PURE__*/_jsx(View, {
90
- style: styles.androidContainer,
91
- children: /*#__PURE__*/_jsx(WebView
92
- // Required for Android
93
- , {
94
- injectedJavaScript: `
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: `
95
114
  postMessage(
96
115
  {
97
116
  type: "duffel-assistant-open",
@@ -100,13 +119,12 @@ export const DuffelAssistant = ({
100
119
  "*",
101
120
  );
102
121
  true;`,
103
- source: {
104
- uri: assistantIframeUrl
105
- },
106
- onMessage: handleMessage,
107
- onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest,
108
- style: styles.webView
109
- })
122
+ source: {
123
+ uri: assistantIframeUrl
124
+ },
125
+ onMessage: handleMessage,
126
+ onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest,
127
+ style: styles.webView
110
128
  })
111
129
  })
112
130
  });
@@ -135,9 +153,6 @@ export const DuffelAssistant = ({
135
153
  });
136
154
  };
137
155
  const styles = StyleSheet.create({
138
- keyboardAvoidingView: {
139
- flex: 1
140
- },
141
156
  container: {
142
157
  flex: 1,
143
158
  width: '100%',
@@ -149,7 +164,7 @@ const styles = StyleSheet.create({
149
164
  flex: 1,
150
165
  width: '100%',
151
166
  paddingTop: 45,
152
- paddingBottom: 10
167
+ paddingBottom: 15
153
168
  },
154
169
  webView: {
155
170
  flex: 1
@@ -1 +1 @@
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","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
+ {"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 +1 @@
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,CA0K1D,CAAC"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duffel/react-native-components-assistant",
3
- "version": "0.5.1-canary.3",
3
+ "version": "0.5.1-canary.5",
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,6 +1,6 @@
1
- import React from 'react';
1
+ import React, { useEffect, useState } from 'react';
2
2
  import {
3
- KeyboardAvoidingView,
3
+ Keyboard,
4
4
  Linking,
5
5
  Modal,
6
6
  Platform,
@@ -45,6 +45,37 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
45
45
  onNewMessage,
46
46
  ...properties
47
47
  }) => {
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
+
48
79
  if (!hasJsonWebTokenFormat(properties.clientKey)) {
49
80
  throw new Error('Duffel Assistant client key format must be a valid JWT.');
50
81
  }
@@ -161,14 +192,15 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
161
192
  onRequestClose={() => onClose()}
162
193
  animationType="slide"
163
194
  >
164
- <KeyboardAvoidingView
165
- enabled={true}
166
- style={styles.keyboardAvoidingView}
195
+ <View
196
+ style={[
197
+ styles.androidContainer,
198
+ { paddingBottom: 15 + androidKeyboardHeight },
199
+ ]}
167
200
  >
168
- <View style={styles.androidContainer}>
169
- <WebView
170
- // Required for Android
171
- injectedJavaScript={`
201
+ <WebView
202
+ // Required for Android
203
+ injectedJavaScript={`
172
204
  postMessage(
173
205
  {
174
206
  type: "duffel-assistant-open",
@@ -177,13 +209,12 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
177
209
  "*",
178
210
  );
179
211
  true;`}
180
- source={{ uri: assistantIframeUrl }}
181
- onMessage={handleMessage}
182
- onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
183
- style={styles.webView}
184
- />
185
- </View>
186
- </KeyboardAvoidingView>
212
+ source={{ uri: assistantIframeUrl }}
213
+ onMessage={handleMessage}
214
+ onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
215
+ style={styles.webView}
216
+ />
217
+ </View>
187
218
  </Modal>
188
219
  );
189
220
  }
@@ -212,9 +243,6 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
212
243
  };
213
244
 
214
245
  const styles = StyleSheet.create({
215
- keyboardAvoidingView: {
216
- flex: 1,
217
- },
218
246
  container: {
219
247
  flex: 1,
220
248
  width: '100%',
@@ -226,7 +254,7 @@ const styles = StyleSheet.create({
226
254
  flex: 1,
227
255
  width: '100%',
228
256
  paddingTop: 45,
229
- paddingBottom: 10,
257
+ paddingBottom: 15,
230
258
  },
231
259
  webView: {
232
260
  flex: 1,