react-native-srschat 0.1.42 → 0.1.44

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 +1 @@
1
- {"version":3,"names":["React","useContext","View","Text","Image","TouchableOpacity","ScrollView","StyleSheet","Ionicons","AppContext","WelcomeInput","ButtonComponent","Testing","CloudinaryImage","Welcome","panHandlers","setShowModal","uiConfig","onProductCardClick","onAddToCartClick","handleClick","showIcon","setToggleChat","createElement","contentContainerStyle","styles","container","style","parentContainer","topContainer","topHeader","cldImg","imageStyle","width","height","onPress","collapseButton","name","size","color","blueContainer","welcomeHeader","welcomeBody2","textBeta","bottomContainer","welcomeBody","create","flex","flexGrow","backgroundColor","paddingTop","paddingBottom","flexDirection","justifyContent","alignItems","paddingHorizontal","logo","padding","margin","borderRadius","fontSize","marginBottom","fontWeight","lineHeight","textAlign","marginTop"],"sourceRoot":"../../../src","sources":["layout/welcome.js"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useContext","View","Text","TouchableOpacity","ScrollView","StyleSheet","Ionicons","AppContext","WelcomeInput","ButtonComponent","CloudinaryImage","Welcome","panHandlers","setShowModal","uiConfig","onProductCardClick","onAddToCartClick","handleClick","showIcon","setToggleChat","createElement","style","styles","container","parentContainer","topContainer","topHeader","logoContainer","cldImg","imageStyle","width","height","onPress","collapseButton","name","size","color","blueContainer","welcomeHeader","welcomeBody2","textBeta","bottomContainer","welcomeBody","create","flex","flexGrow","backgroundColor","paddingTop","paddingBottom","flexDirection","alignItems","paddingHorizontal","justifyContent","position","left","top","padding","margin","borderRadius","fontSize","marginBottom","fontWeight","lineHeight","textAlign","marginTop"],"sourceRoot":"../../../src","sources":["layout/welcome.js"],"mappings":"AAAA;AACA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,IAAI,EAAEC,IAAI,EAAEC,gBAAgB,EAAEC,UAAU,EAAEC,UAAU,QAAQ,cAAc;AACnF,OAAOC,QAAQ,MAAM,oCAAoC;AACzD,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,YAAY,QAAQ,4BAA4B;AACzD,OAAOC,eAAe,MAAM,6BAA6B;AACzD,OAAOC,eAAe,MAAM,qBAAqB;AAEjD,OAAO,MAAMC,OAAO,GAAGA,CAAC;EAAEC;AAAY,CAAC,KAAK;EAC1C,MAAM;IAAEC,YAAY;IAAEC,QAAQ;IAAEC,kBAAkB;IAAEC;EAAiB,CAAC,GAAGhB,UAAU,CAACO,UAAU,CAAC;EAE/F,MAAMU,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAI,CAACH,QAAQ,CAACI,QAAQ,IAAI,IAAI,MAAM,IAAI,EAAE;MACxCL,YAAY,CAAC,KAAK,CAAC;IACrB,CAAC,MAAM;MACLA,YAAY,CAAC,MAAM,CAAC;IACtB;IAEA,IAAI,OAAOC,QAAQ,CAACK,aAAa,KAAK,UAAU,EAAE;MAChDL,QAAQ,CAACK,aAAa,CAAC,KAAK,CAAC;IAC/B;EACF,CAAC;EAED,oBACEpB,KAAA,CAAAqB,aAAA,CAACnB,IAAI;IAACoB,KAAK,EAAEC,MAAM,CAACC;EAAU,gBAC5BxB,KAAA,CAAAqB,aAAA,CAACnB,IAAI;IAACoB,KAAK,EAAEC,MAAM,CAACE;EAAgB,gBAElCzB,KAAA,CAAAqB,aAAA,CAACnB,IAAI;IAACoB,KAAK,EAAEC,MAAM,CAACG;EAAa,gBAC/B1B,KAAA,CAAAqB,aAAA,CAACnB,IAAI;IAACoB,KAAK,EAAEC,MAAM,CAACI;EAAU,gBAE5B3B,KAAA,CAAAqB,aAAA,CAACnB,IAAI;IAACoB,KAAK,EAAEC,MAAM,CAACK;EAAc,gBAChC5B,KAAA,CAAAqB,aAAA,CAACV,eAAe;IACdkB,MAAM,EAAC,SAAS;IAChBC,UAAU,EAAE;MAAEC,KAAK,EAAE,GAAG;MAAEC,MAAM,EAAE;IAAG;EAAE,CACxC,CACG,CAAC,eACPhC,KAAA,CAAAqB,aAAA,CAACjB,gBAAgB;IAAC6B,OAAO,EAAEf,WAAY;IAACI,KAAK,EAAEC,MAAM,CAACW;EAAe,gBACnElC,KAAA,CAAAqB,aAAA,CAACd,QAAQ;IAAC4B,IAAI,EAAC,OAAO;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAC;EAAO,CAAE,CAChC,CACd,CAAC,eAEPrC,KAAA,CAAAqB,aAAA,CAACnB,IAAI;IAACoB,KAAK,EAAEC,MAAM,CAACe;EAAc,gBAChCtC,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAACmB,KAAK,EAAEC,MAAM,CAACgB;EAAc,GAAC,iBAAW,CAAC,eAC/CvC,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAACmB,KAAK,EAAEC,MAAM,CAACiB;EAAa,GAAC,2HAE5B,CAAC,eACPxC,KAAA,CAAAqB,aAAA,CAACZ,YAAY,MAAE,CAAC,eAChBT,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAACmB,KAAK,EAAEC,MAAM,CAACkB;EAAS,GAAC,qCAAyC,CACnE,CACF,CAAC,eAGPzC,KAAA,CAAAqB,aAAA,CAAChB,UAAU;IAACiB,KAAK,EAAEC,MAAM,CAACmB;EAAgB,gBACxC1C,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAACmB,KAAK,EAAEC,MAAM,CAACoB;EAAY,GAAC,2BAA+B,CAAC,eACjE3C,KAAA,CAAAqB,aAAA,CAACX,eAAe,MAAE,CACR,CACR,CACF,CAAC;AAEX,CAAC;AAED,MAAMa,MAAM,GAAGjB,UAAU,CAACsC,MAAM,CAAC;EAC/BpB,SAAS,EAAE;IACTqB,IAAI,EAAE;EACR,CAAC;EACDpB,eAAe,EAAE;IACfqB,QAAQ,EAAE,CAAC;IACXC,eAAe,EAAE,SAAS;IAC1BC,UAAU,EAAE;EACd,CAAC;EACDtB,YAAY,EAAE;IACZqB,eAAe,EAAE,SAAS;IAC1BE,aAAa,EAAE;EACjB,CAAC;EACDtB,SAAS,EAAE;IACTuB,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,iBAAiB,EAAE,EAAE;IACrBJ,UAAU,EAAE,EAAE;IACdK,cAAc,EAAE,UAAU;IAC1BC,QAAQ,EAAE;EACZ,CAAC;EACD1B,aAAa,EAAE;IACb0B,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,EAAE;IACRC,GAAG,EAAE;IACL;IACA;IACA;EACF,CAAC;EACDtB,cAAc,EAAE;IACdkB,iBAAiB,EAAE,EAAE;IACrBC,cAAc,EAAE,QAAQ;IACxBF,UAAU,EAAE;EACd,CAAC;EACDb,aAAa,EAAE;IACbS,eAAe,EAAE,SAAS;IAC1BU,OAAO,EAAE,EAAE;IACXC,MAAM,EAAE,EAAE;IACVC,YAAY,EAAE;EAChB,CAAC;EACDpB,aAAa,EAAE;IACbqB,QAAQ,EAAE,EAAE;IACZC,YAAY,EAAE,EAAE;IAChBxB,KAAK,EAAE,SAAS;IAChByB,UAAU,EAAE;EACd,CAAC;EACDtB,YAAY,EAAE;IACZoB,QAAQ,EAAE,EAAE;IACZG,UAAU,EAAE,EAAE;IACd1B,KAAK,EAAE,SAAS;IAChByB,UAAU,EAAE,KAAK;IACjBD,YAAY,EAAE;EAChB,CAAC;EACDpB,QAAQ,EAAE;IACRuB,SAAS,EAAE,QAAQ;IACnBJ,QAAQ,EAAE,EAAE;IACZvB,KAAK,EAAE,SAAS;IAChByB,UAAU,EAAE,KAAK;IACjBG,SAAS,EAAE;EACb,CAAC;EACDvB,eAAe,EAAE;IACfU,iBAAiB,EAAE,EAAE;IACrBL,eAAe,EAAE,SAAS;IAC1BC,UAAU,EAAE;EACd,CAAC;EACDL,WAAW,EAAE;IACXiB,QAAQ,EAAE,EAAE;IACZC,YAAY,EAAE,EAAE;IAChBxB,KAAK,EAAE,SAAS;IAChByB,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF,eAAenD,OAAO","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  // audioRecorder.js
2
2
 
3
- import { Platform, PermissionsAndroid } from 'react-native';
4
- import Voice from '@react-native-community/voice';
3
+ import { Platform } from 'react-native';
4
+ import Voice from '@react-native-voice/voice';
5
5
  import { check, PERMISSIONS, request, RESULTS } from 'react-native-permissions';
6
6
  import useAsyncStorage from '../hooks/useAsyncStorage';
7
7
  let resultCallback = null;
@@ -28,6 +28,12 @@ export async function initVoice(onResult) {
28
28
  resultCallback = onResult;
29
29
  finalResult = '';
30
30
 
31
+ // Check if Voice module is available
32
+ if (!Voice) {
33
+ console.error('Voice module is not available');
34
+ return false;
35
+ }
36
+
31
37
  // First check if speech recognition is available
32
38
  const isAvailable = await Voice.isAvailable();
33
39
  if (!isAvailable) {
@@ -66,7 +72,8 @@ export async function initVoice(onResult) {
66
72
  };
67
73
  Voice.onSpeechError = async e => {
68
74
  var _e$error, _e$error2;
69
- console.error('onSpeechError: ', e);
75
+ // console.error('onSpeechError: ', e);
76
+
70
77
  if (silenceTimer) {
71
78
  clearTimeout(silenceTimer);
72
79
  silenceTimer = null;
@@ -77,14 +84,13 @@ export async function initVoice(onResult) {
77
84
  await cleanupVoiceSession();
78
85
 
79
86
  // Only send error to callback if it's not a "No speech detected" error
80
- if (!isNoSpeechError) {
81
- var _e$error3;
82
- resultCallback(null, ((_e$error3 = e.error) === null || _e$error3 === void 0 ? void 0 : _e$error3.message) || 'Speech recognition error');
83
- } else {
84
- console.log('No speech detected, ignoring error');
85
- // Optionally, call the callback with null parameters or a special indicator
86
- resultCallback(null, null); // This won't trigger an error alert in the component
87
- }
87
+ // if (!isNoSpeechError) {
88
+ // resultCallback(null, e.error?.message || 'Speech recognition error');
89
+ // } else {
90
+ // console.log('No speech detected, ignoring error');
91
+ // // Optionally, call the callback with null parameters or a special indicator
92
+ // resultCallback(null, null); // This won't trigger an error alert in the component
93
+ // }
88
94
  };
89
95
  Voice.onSpeechResults = e => {
90
96
  console.log('onSpeechResults: ', e);
@@ -143,6 +149,12 @@ const cleanupVoiceSession = async () => {
143
149
  silenceTimer = null;
144
150
  }
145
151
  try {
152
+ // Check if Voice module is available
153
+ if (!Voice) {
154
+ console.log('Voice module not available during cleanup');
155
+ return;
156
+ }
157
+
146
158
  // First try to stop if still recognizing
147
159
  const isRecognizing = await Voice.isRecognizing();
148
160
  if (isRecognizing) {
@@ -168,7 +180,9 @@ const cleanupVoiceSession = async () => {
168
180
  console.error('Error in cleanupVoiceSession:', error);
169
181
  // Final attempt to destroy on error
170
182
  try {
171
- await Voice.destroy();
183
+ if (Voice) {
184
+ await Voice.destroy();
185
+ }
172
186
  } catch (e) {
173
187
  console.error('Final destroy attempt failed:', e);
174
188
  }
@@ -177,6 +191,12 @@ const cleanupVoiceSession = async () => {
177
191
  };
178
192
  export async function startRecording() {
179
193
  try {
194
+ // Check if Voice module is available
195
+ if (!Voice) {
196
+ console.error('Voice module is not available');
197
+ return false;
198
+ }
199
+
180
200
  // Ensure cleanup of any existing session
181
201
  await cleanupVoiceSession();
182
202
  const hasPermission = await requestAudioPermission();
@@ -195,7 +215,7 @@ export async function startRecording() {
195
215
  }
196
216
  export async function stopRecording() {
197
217
  try {
198
- if (!isCurrentlyRecording) return;
218
+ if (!isCurrentlyRecording || !Voice) return;
199
219
 
200
220
  // Set this first to prevent race conditions
201
221
  isCurrentlyRecording = false;
@@ -231,6 +251,7 @@ export async function stopRecording() {
231
251
  }
232
252
  export async function cancelRecording() {
233
253
  try {
254
+ if (!Voice) return;
234
255
  await Voice.cancel();
235
256
  await cleanupVoiceSession();
236
257
  } catch (error) {
@@ -265,19 +286,20 @@ export async function requestAudioPermission() {
265
286
  }
266
287
  async function requestAndroidPermission() {
267
288
  try {
268
- // Check available speech recognition services on Android
289
+ // Request microphone permission
290
+ const micPermission = await request(PERMISSIONS.ANDROID.RECORD_AUDIO);
291
+ if (micPermission !== RESULTS.GRANTED) {
292
+ console.log('Microphone permission denied');
293
+ return false;
294
+ }
295
+
296
+ // Skip checking speech recognition services which is causing errors
269
297
  const services = await Voice.getSpeechRecognitionServices();
270
298
  if (!services || services.length === 0) {
271
299
  console.error('No speech recognition services available');
272
300
  return false;
273
301
  }
274
- const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.RECORD_AUDIO, {
275
- title: 'Microphone Permission',
276
- message: 'This app needs access to your microphone for voice recognition.',
277
- buttonPositive: 'OK',
278
- buttonNegative: 'Cancel'
279
- });
280
- return granted === PermissionsAndroid.RESULTS.GRANTED;
302
+ return true;
281
303
  } catch (error) {
282
304
  console.error('Error requesting Android permission:', error);
283
305
  return false;
@@ -312,13 +334,19 @@ export function resetStoredPermission() {
312
334
  return false;
313
335
  }
314
336
  export function cleanup() {
337
+ if (!Voice) {
338
+ console.log('Voice module not available during cleanup');
339
+ return;
340
+ }
315
341
  Voice.destroy().then(() => {
316
342
  Voice.removeAllListeners();
317
343
  cleanupVoiceSession();
318
344
  }).catch(error => {
319
345
  console.error('Error in cleanup:', error);
320
346
  // Try one more time
321
- Voice.destroy().catch(e => console.error('Final cleanup attempt failed:', e));
347
+ if (Voice) {
348
+ Voice.destroy().catch(e => console.error('Final cleanup attempt failed:', e));
349
+ }
322
350
  });
323
351
  }
324
352
  //# sourceMappingURL=audioRecorder.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","PermissionsAndroid","Voice","check","PERMISSIONS","request","RESULTS","useAsyncStorage","resultCallback","silenceTimer","isCurrentlyRecording","finalResult","SILENCE_DURATION","PERMISSION_STORAGE_KEY","permissionStatusGetter","permissionStatusSetter","setPermissionStatusHandlers","getter","setter","initVoice","onResult","isAvailable","console","error","onSpeechStart","e","log","clearTimeout","onSpeechRecognized","isFinal","handleFinalResult","onSpeechEnd","onSpeechError","_e$error","_e$error2","isNoSpeechError","code","message","includes","cleanupVoiceSession","_e$error3","onSpeechResults","value","length","handleSilenceDetection","onSpeechPartialResults","OS","onSpeechVolumeChanged","setTimeout","stopRecording","isRecognizing","stop","Promise","resolve","destroy","stillRecognizing","startRecording","hasPermission","requestAudioPermission","start","cancelRecording","cancel","storedPermission","permissionResult","requestAndroidPermission","requestIOSPermission","services","getSpeechRecognitionServices","granted","RECORD_AUDIO","title","buttonPositive","buttonNegative","GRANTED","micPermission","IOS","MICROPHONE","speechPermission","SPEECH_RECOGNITION","resetStoredPermission","cleanup","then","removeAllListeners","catch"],"sourceRoot":"../../../src","sources":["utils/audioRecorder.js"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","Voice","check","PERMISSIONS","request","RESULTS","useAsyncStorage","resultCallback","silenceTimer","isCurrentlyRecording","finalResult","SILENCE_DURATION","PERMISSION_STORAGE_KEY","permissionStatusGetter","permissionStatusSetter","setPermissionStatusHandlers","getter","setter","initVoice","onResult","console","error","isAvailable","onSpeechStart","e","log","clearTimeout","onSpeechRecognized","isFinal","handleFinalResult","onSpeechEnd","onSpeechError","_e$error","_e$error2","isNoSpeechError","code","message","includes","cleanupVoiceSession","onSpeechResults","value","length","handleSilenceDetection","onSpeechPartialResults","OS","onSpeechVolumeChanged","setTimeout","stopRecording","isRecognizing","stop","Promise","resolve","destroy","stillRecognizing","startRecording","hasPermission","requestAudioPermission","start","cancelRecording","cancel","storedPermission","permissionResult","requestAndroidPermission","requestIOSPermission","micPermission","ANDROID","RECORD_AUDIO","GRANTED","services","getSpeechRecognitionServices","IOS","MICROPHONE","speechPermission","SPEECH_RECOGNITION","resetStoredPermission","cleanup","then","removeAllListeners","catch"],"sourceRoot":"../../../src","sources":["utils/audioRecorder.js"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  export function EmailForm({ panHandlers }: {
2
2
  panHandlers: any;
3
3
  }): React.JSX.Element;
4
+ export default EmailForm;
4
5
  import React from "react";
5
6
  //# sourceMappingURL=email.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/components/email.js"],"names":[],"mappings":"AAOO;;sBAmHN;kBA1H2C,OAAO"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/components/email.js"],"names":[],"mappings":"AAiBO;;sBAmKN;;kBApLmD,OAAO"}
@@ -1,5 +1,6 @@
1
1
  export function Welcome({ panHandlers }: {
2
2
  panHandlers: any;
3
3
  }): React.JSX.Element;
4
+ export default Welcome;
4
5
  import React from 'react';
5
6
  //# sourceMappingURL=welcome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../../src/layout/welcome.js"],"names":[],"mappings":"AAWO;;sBAyDN;kBAnEiC,OAAO"}
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../../src/layout/welcome.js"],"names":[],"mappings":"AASO;;sBAmDN;;kBA3DiC,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"audioRecorder.d.ts","sourceRoot":"","sources":["../../../src/utils/audioRecorder.js"],"names":[],"mappings":"AAqBA,4EAGC;AAGD,2DAsGC;AAuED,mDAmBC;AAED,+CAoCC;AAED,iDASC;AAED,2DA2BC;AAmDD,iDAMC;AAED,gCASC"}
1
+ {"version":3,"file":"audioRecorder.d.ts","sourceRoot":"","sources":["../../../src/utils/audioRecorder.js"],"names":[],"mappings":"AAqBA,4EAGC;AAGD,2DA4GC;AA+ED,mDAyBC;AAED,+CAoCC;AAED,iDASC;AAED,2DA2BC;AAiDD,iDAMC;AAED,gCAgBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-srschat",
3
- "version": "0.1.42",
3
+ "version": "0.1.44",
4
4
  "private": false,
5
5
  "description": "A modern, sophisticated chat interface for React Native",
6
6
  "main": "lib/commonjs/index",
@@ -63,19 +63,19 @@
63
63
  "@react-native-async-storage/async-storage": "^2.1.1",
64
64
  "@react-native-community/audio-toolkit": "^2.0.3",
65
65
  "@react-native-community/cli": "^15.0.0",
66
- "@react-native-community/voice": "^1.1.9",
67
66
  "@react-native-picker/picker": "^2.11.0",
67
+ "@react-native-voice/voice": "^3.2.4",
68
68
  "axios": "^1.7.9",
69
+ "cloudinary-react-native": "^0.3.0",
69
70
  "react-native-audio-recorder-player": "^3.6.12",
71
+ "react-native-eject": "^1.0.2",
70
72
  "react-native-keyboard-aware-scroll-view": "^0.9.5",
71
73
  "react-native-markdown-display": "^7.0.2",
72
74
  "react-native-permissions": "^5.2.6",
73
- "react-native-eject": "^1.0.2",
74
75
  "react-native-uuid": "^2.0.3",
75
76
  "react-native-vector-icons": "^10.2.0",
76
77
  "react-native-video": "^6.10.2",
77
- "react-native-web": "~0.19.10",
78
- "cloudinary-react-native": "^0.3.0"
78
+ "react-native-web": "~0.19.10"
79
79
  },
80
80
  "react-native-builder-bob": {
81
81
  "source": "src",
@@ -1,23 +1,39 @@
1
- import React, { useState, useContext } from "react";
2
- import { View, Text, TextInput, TouchableOpacity, ActivityIndicator, Alert, StyleSheet, ScrollView } from "react-native";
1
+ import React, { useState, useContext, useRef } from "react";
2
+ import {
3
+ View,
4
+ Text,
5
+ TextInput,
6
+ TouchableOpacity,
7
+ ActivityIndicator,
8
+ StyleSheet,
9
+ Platform,
10
+ findNodeHandle
11
+ } from "react-native";
3
12
  import Ionicons from "react-native-vector-icons/Ionicons";
4
13
  import axios from "axios";
5
14
  import { AppContext } from "../contexts/AppContext";
6
15
  import { Header } from "./header";
16
+ import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view";
7
17
 
8
18
  export const EmailForm = ({ panHandlers }) => {
9
19
  const { data, BASE_URL, setShowModal, messages, formatChatHistory, conversationStartTime } = useContext(AppContext);
10
20
  const [subject, setSubject] = useState("");
11
21
  const [message, setMessage] = useState("");
12
22
  const [userEmail, setUserEmail] = useState("");
13
- const [branchEmail, setBranchEmail] = useState(data.branch_email || "");
23
+ const [branchEmail, setBranchEmail] = useState((data?.branch_email) || "");
14
24
  const [isLoading, setIsLoading] = useState(false);
15
25
  const [error, setError] = useState("");
16
26
  const [success, setSuccess] = useState(false);
17
27
  const [isComposing, setIsComposing] = useState(false);
18
28
 
29
+ // Refs for the scroll view and inputs
30
+ const scrollViewRef = useRef(null);
31
+ const subjectInputRef = useRef(null);
32
+ const messageInputRef = useRef(null);
33
+ const emailInputRef = useRef(null);
34
+
19
35
  const handleComposeEmail = async () => {
20
- setIsComposing(true);
36
+ setIsComposing(true);
21
37
  setError("");
22
38
 
23
39
  try {
@@ -25,7 +41,7 @@ export const EmailForm = ({ panHandlers }) => {
25
41
  const payload = {
26
42
  chat_history: chatHistory,
27
43
  conversation_start_time: conversationStartTime,
28
- customer_name: '',
44
+ customer_name: "",
29
45
  branch_email: branchEmail,
30
46
  };
31
47
 
@@ -60,7 +76,7 @@ export const EmailForm = ({ panHandlers }) => {
60
76
  message,
61
77
  chat_history: chatHistory,
62
78
  conversation_start_time: conversationStartTime,
63
- customer_name: '',
79
+ customer_name: "",
64
80
  branch_email: branchEmail,
65
81
  });
66
82
 
@@ -76,50 +92,92 @@ export const EmailForm = ({ panHandlers }) => {
76
92
  }
77
93
  };
78
94
 
79
- return (
80
- <View style={styles.container}>
81
- <View>
82
- <Header />
83
- </View>
95
+ return (
96
+ <View style={styles.container}>
97
+ <Header />
98
+ <KeyboardAwareScrollView
99
+ ref={scrollViewRef}
100
+ style={styles.content}
101
+ contentContainerStyle={{ flexGrow: 1, paddingBottom: 50 }}
102
+ keyboardShouldPersistTaps="handled"
103
+ showsVerticalScrollIndicator={true}
104
+ enableOnAndroid={true}
105
+ extraScrollHeight={40}
106
+ keyboardDismissMode="interactive"
107
+ bounces={false}
108
+ >
84
109
  <View style={styles.topBar}>
85
- <TouchableOpacity onPress={() => setShowModal("ChatWindow")} style={styles.backButton}>
110
+ <TouchableOpacity onPress={() => setShowModal("ChatWindow")} style={styles.backButton}>
86
111
  <Ionicons name="arrow-back" size={20} color="#000" />
87
- </TouchableOpacity>
88
- <Text style={styles.topBarTitle}>Contact Us</Text>
112
+ </TouchableOpacity>
113
+ <Text style={styles.topBarTitle}>Contact Us</Text>
89
114
  </View>
90
- <ScrollView
91
- style={styles.content}
92
- contentContainerStyle={{ paddingBottom: 100 }} // Add padding to bottom
93
- keyboardShouldPersistTaps="handled"
94
- showsVerticalScrollIndicator={true}
95
- >
96
-
97
- <Text style={styles.infoText}>
98
- Our AI assistant can help draft a professional email based on your chat conversation. The email will capture your main points and maintain a conversational tone. You can review and modify before sending.
99
- </Text>
100
-
101
- <TouchableOpacity style={styles.composeButton} onPress={handleComposeEmail} disabled={isComposing}>
102
- {isComposing ? (
103
- <ActivityIndicator size="small" color="#FFFFFF" />
104
- ) : (
105
- <Text style={styles.buttonText}>Draft My Email</Text>
106
- )}
107
- </TouchableOpacity>
108
-
109
- <TextInput style={styles.input} value={branchEmail} editable={false} placeholder="Branch Email" />
110
- <TextInput style={styles.input} value={userEmail} onChangeText={setUserEmail} placeholder="Your Email" />
111
- <TextInput style={styles.input} value={subject} onChangeText={setSubject} placeholder="Subject" />
112
- <TextInput style={styles.textArea} value={message} onChangeText={setMessage} placeholder="Message" multiline />
113
-
114
- {error ? <Text style={styles.errorText}>{error}</Text> : null}
115
- {success ? <Text style={styles.successText}>Email sent successfully!</Text> : null}
116
-
117
- <TouchableOpacity style={styles.sendButton} onPress={handleSubmit} disabled={isLoading}>
118
- {isLoading ? <ActivityIndicator size="small" color="#FFFFFF" /> : <Text style={styles.buttonText}>Send Email</Text>}
119
- </TouchableOpacity>
120
- </ScrollView>
121
- </View>
122
- );
115
+
116
+ <Text style={styles.infoText}>
117
+ Our AI assistant can help draft a professional email based on your chat conversation. The email will capture your main points and maintain a conversational tone. You can review and modify before sending.
118
+ </Text>
119
+
120
+ <TouchableOpacity style={styles.composeButton} onPress={handleComposeEmail} disabled={isComposing}>
121
+ {isComposing ? (
122
+ <ActivityIndicator size="small" color="#FFFFFF" />
123
+ ) : (
124
+ <Text style={styles.buttonText}>Draft My Email</Text>
125
+ )}
126
+ </TouchableOpacity>
127
+
128
+ <TextInput
129
+ style={styles.input}
130
+ value={branchEmail}
131
+ editable={false}
132
+ placeholder="Branch Email"
133
+ />
134
+ <TextInput
135
+ ref={emailInputRef}
136
+ style={styles.input}
137
+ value={userEmail}
138
+ onChangeText={setUserEmail}
139
+ placeholder="Your Email"
140
+ onFocus={() =>
141
+ scrollViewRef.current?.scrollToFocusedInput(
142
+ findNodeHandle(emailInputRef.current)
143
+ )
144
+ }
145
+ />
146
+ <TextInput
147
+ ref={subjectInputRef}
148
+ style={styles.input}
149
+ value={subject}
150
+ onChangeText={setSubject}
151
+ placeholder="Subject"
152
+ onFocus={() =>
153
+ scrollViewRef.current?.scrollToFocusedInput(
154
+ findNodeHandle(subjectInputRef.current)
155
+ )
156
+ }
157
+ />
158
+ <TextInput
159
+ ref={messageInputRef}
160
+ style={styles.textArea}
161
+ value={message}
162
+ onChangeText={setMessage}
163
+ placeholder="Message"
164
+ multiline
165
+ onFocus={() =>
166
+ scrollViewRef.current?.scrollToFocusedInput(
167
+ findNodeHandle(messageInputRef.current)
168
+ )
169
+ }
170
+ />
171
+
172
+ {error ? <Text style={styles.errorText}>{error}</Text> : null}
173
+ {success ? <Text style={styles.successText}>Email sent successfully!</Text> : null}
174
+
175
+ <TouchableOpacity style={styles.sendButton} onPress={handleSubmit} disabled={isLoading}>
176
+ {isLoading ? <ActivityIndicator size="small" color="#FFFFFF" /> : <Text style={styles.buttonText}>Send Email</Text>}
177
+ </TouchableOpacity>
178
+ </KeyboardAwareScrollView>
179
+ </View>
180
+ );
123
181
  };
124
182
 
125
183
  const styles = StyleSheet.create({
@@ -129,24 +187,22 @@ const styles = StyleSheet.create({
129
187
  content: {
130
188
  padding: 20,
131
189
  paddingTop: 5,
132
- paddingBottom: 40,
133
- marginBottom: 40
190
+ flex: 1,
134
191
  },
135
192
  topBar: {
136
- flexDirection: 'row',
137
- alignItems: 'center',
193
+ flexDirection: "row",
194
+ alignItems: "center",
138
195
  paddingVertical: 10,
139
- paddingHorizontal: 16,
140
- marginTop: 10
196
+ marginTop: 10,
141
197
  },
142
198
  backButton: {
143
199
  padding: 8,
144
200
  borderRadius: 20,
145
- backgroundColor: '#FFF',
201
+ backgroundColor: "#FFF",
146
202
  },
147
203
  topBarTitle: {
148
204
  fontSize: 18,
149
- fontWeight: 'medium',
205
+ fontWeight: "500",
150
206
  marginLeft: 12,
151
207
  },
152
208
  infoText: {
@@ -208,3 +264,5 @@ const styles = StyleSheet.create({
208
264
  marginTop: 10,
209
265
  },
210
266
  });
267
+
268
+ export default EmailForm;
@@ -24,7 +24,8 @@ export const ProductCard = ({ prod, onFocusQuantityInput }) => {
24
24
  const grossPrice = uomInfo.gross_price || 0;
25
25
  const netPrice = uomInfo.net_price || 0;
26
26
  const isOnSale = uomInfo.is_on_sale || false;
27
- const discounts = uomInfo.discounts || [];
27
+ const discounts = Array.isArray(uomInfo.discounts) ? uomInfo.discounts : [];
28
+
28
29
 
29
30
 
30
31
  const maxQuantity = Math.floor(prod.inventory_info?.info_by_uom?.EA?.quantity_available || 0);
@@ -201,7 +202,6 @@ export const ProductCard = ({ prod, onFocusQuantityInput }) => {
201
202
  disabled={!valid}
202
203
  >
203
204
  <Text style={styles.dropdownButtonText}>{selectedUom}</Text>
204
- <Ionicons name="close" size={26} color="rgba(0, 0, 0, 0.6)" />
205
205
  </TouchableOpacity>
206
206
  </View>
207
207
  ) : null}