react-native-srschat 0.1.17 → 0.1.19
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.
- package/README.md +1 -0
- package/lib/commonjs/components/email.js +5 -4
- package/lib/commonjs/components/email.js.map +1 -1
- package/lib/commonjs/components/header.js +11 -20
- package/lib/commonjs/components/header.js.map +1 -1
- package/lib/commonjs/components/input.js +3 -2
- package/lib/commonjs/components/input.js.map +1 -1
- package/lib/commonjs/components/productCard.js +5 -1
- package/lib/commonjs/components/productCard.js.map +1 -1
- package/lib/commonjs/components/progressCircle.js +99 -0
- package/lib/commonjs/components/progressCircle.js.map +1 -0
- package/lib/commonjs/components/voice.js +87 -0
- package/lib/commonjs/components/voice.js.map +1 -0
- package/lib/commonjs/components/welcomeInput.js +3 -2
- package/lib/commonjs/components/welcomeInput.js.map +1 -1
- package/lib/commonjs/hooks/stream.js +9 -9
- package/lib/commonjs/hooks/stream.js.map +1 -1
- package/lib/commonjs/layout/layout.js +3 -3
- package/lib/commonjs/layout/layout.js.map +1 -1
- package/lib/commonjs/layout/window.js +111 -5
- package/lib/commonjs/layout/window.js.map +1 -1
- package/lib/commonjs/utils/audioRecorder.js +97 -0
- package/lib/commonjs/utils/audioRecorder.js.map +1 -0
- package/lib/commonjs/utils/textToSpeech.js +45 -0
- package/lib/commonjs/utils/textToSpeech.js.map +1 -0
- package/lib/module/components/email.js +5 -4
- package/lib/module/components/email.js.map +1 -1
- package/lib/module/components/header.js +11 -20
- package/lib/module/components/header.js.map +1 -1
- package/lib/module/components/input.js +3 -2
- package/lib/module/components/input.js.map +1 -1
- package/lib/module/components/productCard.js +4 -1
- package/lib/module/components/productCard.js.map +1 -1
- package/lib/module/components/progressCircle.js +90 -0
- package/lib/module/components/progressCircle.js.map +1 -0
- package/lib/module/components/voice.js +76 -0
- package/lib/module/components/voice.js.map +1 -0
- package/lib/module/components/welcomeInput.js +3 -2
- package/lib/module/components/welcomeInput.js.map +1 -1
- package/lib/module/hooks/stream.js +9 -9
- package/lib/module/hooks/stream.js.map +1 -1
- package/lib/module/layout/layout.js +3 -3
- package/lib/module/layout/layout.js.map +1 -1
- package/lib/module/layout/window.js +112 -6
- package/lib/module/layout/window.js.map +1 -1
- package/lib/module/utils/audioRecorder.js +88 -0
- package/lib/module/utils/audioRecorder.js.map +1 -0
- package/lib/module/utils/textToSpeech.js +34 -0
- package/lib/module/utils/textToSpeech.js.map +1 -0
- package/lib/typescript/components/input.d.ts.map +1 -1
- package/lib/typescript/components/productCard.d.ts.map +1 -1
- package/lib/typescript/components/progressCircle.d.ts +3 -0
- package/lib/typescript/components/progressCircle.d.ts.map +1 -0
- package/lib/typescript/components/voice.d.ts +3 -0
- package/lib/typescript/components/voice.d.ts.map +1 -0
- package/lib/typescript/components/welcomeInput.d.ts.map +1 -1
- package/lib/typescript/layout/window.d.ts.map +1 -1
- package/lib/typescript/utils/audioRecorder.d.ts +4 -0
- package/lib/typescript/utils/audioRecorder.d.ts.map +1 -0
- package/lib/typescript/utils/textToSpeech.d.ts +2 -0
- package/lib/typescript/utils/textToSpeech.d.ts.map +1 -0
- package/package.json +4 -3
- package/src/components/email.js +6 -6
- package/src/components/header.js +11 -10
- package/src/components/input.js +3 -1
- package/src/components/productCard.js +3 -0
- package/src/components/progressCircle.js +86 -0
- package/src/components/voice.js +84 -0
- package/src/components/welcomeInput.js +3 -1
- package/src/hooks/stream.js +2 -2
- package/src/layout/layout.js +3 -3
- package/src/layout/window.js +89 -4
- package/src/utils/audioRecorder.js +99 -0
- package/src/utils/textToSpeech.js +38 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState, useEffect, useContext, useRef } from 'react';
|
|
2
|
-
import { Text, StyleSheet, View, TextInput, TouchableOpacity, Platform, KeyboardAvoidingView, Keyboard, Animated } from 'react-native';
|
|
2
|
+
import { Text, StyleSheet, View, TextInput, TouchableOpacity, Platform, KeyboardAvoidingView, Keyboard, Animated, Linking, Button } from 'react-native';
|
|
3
3
|
import { Header } from '../components/header';
|
|
4
4
|
import { AppContext } from '../contexts/AppContext';
|
|
5
5
|
import Ionicons from 'react-native-vector-icons/Ionicons';
|
|
@@ -10,6 +10,7 @@ import { useWebSocketMessage } from '../hooks/stream';
|
|
|
10
10
|
import { ProductCard } from '../components/productCard';
|
|
11
11
|
import Markdown from 'react-native-markdown-display';
|
|
12
12
|
import { Feedback } from '../components/feedback';
|
|
13
|
+
import { ProgressCircle } from '../components/progressCircle';
|
|
13
14
|
export const ChatWindow = ({
|
|
14
15
|
panHandlers
|
|
15
16
|
}) => {
|
|
@@ -22,7 +23,9 @@ export const ChatWindow = ({
|
|
|
22
23
|
handleButtonClick,
|
|
23
24
|
onProductCardClick,
|
|
24
25
|
onAddToCartClick,
|
|
25
|
-
uiConfig
|
|
26
|
+
uiConfig,
|
|
27
|
+
ghostCard,
|
|
28
|
+
typingIndicator
|
|
26
29
|
} = useContext(AppContext);
|
|
27
30
|
const scrollViewRef = useRef(null);
|
|
28
31
|
const fadeAnim = useRef(new Animated.Value(0.6)).current;
|
|
@@ -49,6 +52,9 @@ export const ChatWindow = ({
|
|
|
49
52
|
}
|
|
50
53
|
}, [ghostMessage]);
|
|
51
54
|
useWebSocketMessage();
|
|
55
|
+
const openLink = url => {
|
|
56
|
+
Linking.openURL(url);
|
|
57
|
+
};
|
|
52
58
|
return /*#__PURE__*/React.createElement(View, {
|
|
53
59
|
style: styles.container
|
|
54
60
|
}, /*#__PURE__*/React.createElement(View, panHandlers, /*#__PURE__*/React.createElement(Header, null)), /*#__PURE__*/React.createElement(KeyboardAwareScrollView, {
|
|
@@ -85,12 +91,38 @@ export const ChatWindow = ({
|
|
|
85
91
|
}, msg.text), msg.type == 'ai' && i != 0 && msg.message_id && /*#__PURE__*/React.createElement(Feedback, {
|
|
86
92
|
message: msg,
|
|
87
93
|
messageId: msg.message_id
|
|
88
|
-
})), msg.
|
|
94
|
+
})), msg.type == "middle" && /*#__PURE__*/React.createElement(View, {
|
|
95
|
+
style: [styles.middleMessageBubble, styles.middleMessage]
|
|
96
|
+
}, /*#__PURE__*/React.createElement(Ionicons, {
|
|
97
|
+
name: "sparkles-outline",
|
|
98
|
+
size: 20,
|
|
99
|
+
style: {
|
|
100
|
+
marginRight: 10
|
|
101
|
+
}
|
|
102
|
+
}), /*#__PURE__*/React.createElement(Markdown, {
|
|
103
|
+
style: {
|
|
104
|
+
body: {
|
|
105
|
+
color: msg.type === "user" ? "#ffffff" : "#161616",
|
|
106
|
+
fontSize: 16,
|
|
107
|
+
lineHeight: 22
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}, msg.text)), msg.products && msg.products.length > 0 && msg.products.map((prod, index) => /*#__PURE__*/React.createElement(View, {
|
|
89
111
|
key: index,
|
|
90
112
|
style: styles.productCardWrapper
|
|
91
113
|
}, /*#__PURE__*/React.createElement(ProductCard, {
|
|
92
114
|
prod: prod
|
|
93
|
-
}))), msg.
|
|
115
|
+
}))), msg.resource && msg.resource.length > 0 && msg.resource_type == "video" && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
116
|
+
style: styles.resourceButton,
|
|
117
|
+
onPress: () => openLink(msg.resource)
|
|
118
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
119
|
+
style: styles.resourceText
|
|
120
|
+
}, "Watch Video"), /*#__PURE__*/React.createElement(Ionicons, {
|
|
121
|
+
name: "link",
|
|
122
|
+
size: 20,
|
|
123
|
+
color: "white",
|
|
124
|
+
style: styles.icon
|
|
125
|
+
})), msg.suggested_questions && Array.isArray(msg.questions) && msg.questions.map((question, index) => /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
94
126
|
key: index,
|
|
95
127
|
style: styles.suggestedQuestionButton,
|
|
96
128
|
onPress: () => handleButtonClick(question)
|
|
@@ -110,13 +142,31 @@ export const ChatWindow = ({
|
|
|
110
142
|
style: [styles.ghostBar, styles.ghostBarMedium, {
|
|
111
143
|
opacity: fadeAnim
|
|
112
144
|
}]
|
|
113
|
-
}))
|
|
145
|
+
})), ghostCard && i === messages.length - 1 && /*#__PURE__*/React.createElement(View, {
|
|
146
|
+
style: styles.ghostCardContainer
|
|
147
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
148
|
+
style: styles.ghostSquare
|
|
149
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
150
|
+
style: styles.ghostBarsContainer
|
|
151
|
+
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
152
|
+
style: [styles.ghostBar, styles.ghostBarShort, {
|
|
153
|
+
opacity: fadeAnim
|
|
154
|
+
}]
|
|
155
|
+
}), /*#__PURE__*/React.createElement(Animated.View, {
|
|
156
|
+
style: [styles.ghostBar, styles.ghostBarLong, {
|
|
157
|
+
opacity: fadeAnim
|
|
158
|
+
}]
|
|
159
|
+
}), /*#__PURE__*/React.createElement(Animated.View, {
|
|
160
|
+
style: [styles.ghostBar, styles.ghostBarMedium, {
|
|
161
|
+
opacity: fadeAnim
|
|
162
|
+
}]
|
|
163
|
+
})))))), /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
|
|
114
164
|
behavior: Platform.OS === 'ios' ? 'padding' : undefined,
|
|
115
165
|
keyboardVerticalOffset: Platform.OS === 'ios' ? 120 : 60
|
|
116
166
|
}, uiConfig.testButtons && /*#__PURE__*/React.createElement(Testing, {
|
|
117
167
|
onProductCardClick: onProductCardClick,
|
|
118
168
|
onAddToCartClick: onAddToCartClick
|
|
119
|
-
}), /*#__PURE__*/React.createElement(ChatInput, null)));
|
|
169
|
+
}), !typingIndicator ? /*#__PURE__*/React.createElement(ChatInput, null) : /*#__PURE__*/React.createElement(ProgressCircle, null)));
|
|
120
170
|
};
|
|
121
171
|
const styles = StyleSheet.create({
|
|
122
172
|
container: {
|
|
@@ -186,6 +236,62 @@ const styles = StyleSheet.create({
|
|
|
186
236
|
},
|
|
187
237
|
ghostBarLong: {
|
|
188
238
|
width: "100%"
|
|
239
|
+
},
|
|
240
|
+
ghostCardContainer: {
|
|
241
|
+
flexDirection: "row",
|
|
242
|
+
// Arrange elements in a row
|
|
243
|
+
alignItems: "center",
|
|
244
|
+
// Vertically align items
|
|
245
|
+
width: "100%",
|
|
246
|
+
backgroundColor: "#FFFFFF",
|
|
247
|
+
borderRadius: 10,
|
|
248
|
+
borderTopLeftRadius: 0,
|
|
249
|
+
padding: 14,
|
|
250
|
+
marginVertical: 5
|
|
251
|
+
},
|
|
252
|
+
ghostSquare: {
|
|
253
|
+
width: "25%",
|
|
254
|
+
// Takes up 25% of the container
|
|
255
|
+
aspectRatio: 1,
|
|
256
|
+
// Makes it a square
|
|
257
|
+
backgroundColor: "#ebebeb",
|
|
258
|
+
// Adjust color if needed
|
|
259
|
+
borderRadius: 8
|
|
260
|
+
},
|
|
261
|
+
ghostBarsContainer: {
|
|
262
|
+
width: "75%",
|
|
263
|
+
// Takes up 75% of the container
|
|
264
|
+
paddingLeft: 10 // Adds some spacing from the square
|
|
265
|
+
},
|
|
266
|
+
resourceButton: {
|
|
267
|
+
flexDirection: 'row',
|
|
268
|
+
alignItems: 'center',
|
|
269
|
+
backgroundColor: '#367CB6',
|
|
270
|
+
paddingVertical: 10,
|
|
271
|
+
paddingHorizontal: 15,
|
|
272
|
+
marginBottom: 5,
|
|
273
|
+
borderRadius: 5,
|
|
274
|
+
alignSelf: 'flex-start'
|
|
275
|
+
},
|
|
276
|
+
resourceText: {
|
|
277
|
+
color: 'white',
|
|
278
|
+
fontSize: 16,
|
|
279
|
+
marginRight: 8
|
|
280
|
+
},
|
|
281
|
+
middleMessageBubble: {
|
|
282
|
+
padding: 6,
|
|
283
|
+
paddingHorizontal: 16,
|
|
284
|
+
borderRadius: 12,
|
|
285
|
+
marginBottom: 5,
|
|
286
|
+
flexDirection: 'row',
|
|
287
|
+
alignItems: 'center'
|
|
288
|
+
},
|
|
289
|
+
middleMessage: {
|
|
290
|
+
color: '#161616',
|
|
291
|
+
alignSelf: 'flex-start',
|
|
292
|
+
backgroundColor: '#e0f4fc',
|
|
293
|
+
//'#e0f4fc',
|
|
294
|
+
width: '100%'
|
|
189
295
|
}
|
|
190
296
|
});
|
|
191
297
|
{/* <Testing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","useContext","useRef","Text","StyleSheet","View","TextInput","TouchableOpacity","Platform","KeyboardAvoidingView","Keyboard","Animated","Header","AppContext","Ionicons","KeyboardAwareScrollView","Testing","ChatInput","useWebSocketMessage","ProductCard","Markdown","Feedback","ChatWindow","panHandlers","handleSend","messages","input","setInput","ghostMessage","handleButtonClick","onProductCardClick","onAddToCartClick","uiConfig","scrollViewRef","fadeAnim","Value","current","setTimeout","scrollToEnd","animated","loop","sequence","timing","toValue","duration","useNativeDriver","start","createElement","style","styles","container","ref","contentContainerStyle","messagesContent","enableOnAndroid","contentInsetAdjustmentBehavior","automaticallyAdjustContentInsets","contentInset","bottom","keyboardShouldPersistTaps","showsVerticalScrollIndicator","extraScrollHeight","onContentSizeChange","_scrollViewRef$curren","map","msg","i","key","messageWrapper","type","messageBubble","userMessage","aiMessage","body","color","fontSize","lineHeight","text","message_id","message","messageId","products","length","prod","index","productCardWrapper","suggested_questions","Array","isArray","questions","question","suggestedQuestionButton","onPress","suggestedQuestionText","ghostMessageContainer","ghostBar","ghostBarShort","opacity","ghostBarLong","ghostBarMedium","behavior","OS","undefined","keyboardVerticalOffset","testButtons","create","flex","padding","justifyContent","marginBottom","paddingHorizontal","borderRadius","alignSelf","backgroundColor","width","marginTop","borderWidth","borderColor","paddingVertical","textAlign","borderTopLeftRadius","marginVertical","height"],"sourceRoot":"../../../src","sources":["layout/window.js"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","useContext","useRef","Text","StyleSheet","View","TextInput","TouchableOpacity","Platform","KeyboardAvoidingView","Keyboard","Animated","Linking","Button","Header","AppContext","Ionicons","KeyboardAwareScrollView","Testing","ChatInput","useWebSocketMessage","ProductCard","Markdown","Feedback","ProgressCircle","ChatWindow","panHandlers","handleSend","messages","input","setInput","ghostMessage","handleButtonClick","onProductCardClick","onAddToCartClick","uiConfig","ghostCard","typingIndicator","scrollViewRef","fadeAnim","Value","current","setTimeout","scrollToEnd","animated","loop","sequence","timing","toValue","duration","useNativeDriver","start","openLink","url","openURL","createElement","style","styles","container","ref","contentContainerStyle","messagesContent","enableOnAndroid","contentInsetAdjustmentBehavior","automaticallyAdjustContentInsets","contentInset","bottom","keyboardShouldPersistTaps","showsVerticalScrollIndicator","extraScrollHeight","onContentSizeChange","_scrollViewRef$curren","map","msg","i","key","messageWrapper","type","messageBubble","userMessage","aiMessage","body","color","fontSize","lineHeight","text","message_id","message","messageId","middleMessageBubble","middleMessage","name","size","marginRight","products","length","prod","index","productCardWrapper","resource","resource_type","resourceButton","onPress","resourceText","icon","suggested_questions","Array","isArray","questions","question","suggestedQuestionButton","suggestedQuestionText","ghostMessageContainer","ghostBar","ghostBarShort","opacity","ghostBarLong","ghostBarMedium","ghostCardContainer","ghostSquare","ghostBarsContainer","behavior","OS","undefined","keyboardVerticalOffset","testButtons","create","flex","padding","justifyContent","marginBottom","paddingHorizontal","borderRadius","alignSelf","backgroundColor","width","marginTop","borderWidth","borderColor","paddingVertical","textAlign","borderTopLeftRadius","marginVertical","height","flexDirection","alignItems","aspectRatio","paddingLeft"],"sourceRoot":"../../../src","sources":["layout/window.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// audioRecorder.js
|
|
2
|
+
import AudioRecorderPlayer from 'react-native-audio-recorder-player';
|
|
3
|
+
import { Platform, PermissionsAndroid } from 'react-native';
|
|
4
|
+
import { NativeModules } from 'react-native';
|
|
5
|
+
const audioRecorderPlayer = new AudioRecorderPlayer();
|
|
6
|
+
let silenceTimer = null;
|
|
7
|
+
let rmsValues = [];
|
|
8
|
+
const SILENCE_RMS_THRESHOLD = 0.02;
|
|
9
|
+
const SILENCE_LENGTH_MS = 2000;
|
|
10
|
+
export async function startRecording(handleStopRecording) {
|
|
11
|
+
audioRecorderPlayer = new AudioRecorderPlayer();
|
|
12
|
+
rmsValues = [];
|
|
13
|
+
audioRecorderPlayer.startRecorder();
|
|
14
|
+
audioRecorderPlayer.addRecordBackListener(e => {
|
|
15
|
+
const rms = Math.sqrt(e.currentMetering.reduce((sum, value) => sum + Math.pow(value / 100, 2), 0) / e.currentMetering.length);
|
|
16
|
+
rmsValues.push(rms);
|
|
17
|
+
|
|
18
|
+
// Detect silence
|
|
19
|
+
if (rms > SILENCE_RMS_THRESHOLD) {
|
|
20
|
+
if (silenceTimer) {
|
|
21
|
+
clearTimeout(silenceTimer);
|
|
22
|
+
silenceTimer = null;
|
|
23
|
+
}
|
|
24
|
+
} else if (!silenceTimer) {
|
|
25
|
+
silenceTimer = setTimeout(() => {
|
|
26
|
+
handleStopRecording();
|
|
27
|
+
}, SILENCE_LENGTH_MS);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
console.log('Recording started...');
|
|
31
|
+
}
|
|
32
|
+
export async function stopRecording() {
|
|
33
|
+
if (!audioRecorderPlayer) {
|
|
34
|
+
console.error('AudioRecorderPlayer instance is null');
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
if (silenceTimer) {
|
|
38
|
+
clearTimeout(silenceTimer);
|
|
39
|
+
}
|
|
40
|
+
const result = await audioRecorderPlayer.stopRecorder();
|
|
41
|
+
console.log('Recording stopped:', result);
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
export async function requestAudioPermission() {
|
|
45
|
+
if (Platform.OS === 'android') {
|
|
46
|
+
return await requestAndroidPermission();
|
|
47
|
+
} else if (Platform.OS === 'ios') {
|
|
48
|
+
return await requestIOSPermission();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ✅ Android: Request Microphone Permission
|
|
53
|
+
async function requestAndroidPermission() {
|
|
54
|
+
try {
|
|
55
|
+
const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.RECORD_AUDIO, {
|
|
56
|
+
title: 'Microphone Permission',
|
|
57
|
+
message: 'This app needs access to your microphone to record audio.',
|
|
58
|
+
buttonPositive: 'OK',
|
|
59
|
+
buttonNegative: 'Cancel'
|
|
60
|
+
});
|
|
61
|
+
return granted === PermissionsAndroid.RESULTS.GRANTED;
|
|
62
|
+
} catch (error) {
|
|
63
|
+
console.error('Error requesting microphone permission:', error);
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ✅ iOS: Request Microphone Permission
|
|
69
|
+
async function requestIOSPermission() {
|
|
70
|
+
try {
|
|
71
|
+
const {
|
|
72
|
+
AVAudioSession
|
|
73
|
+
} = NativeModules;
|
|
74
|
+
if (AVAudioSession) {
|
|
75
|
+
await AVAudioSession.requestRecordPermission(granted => {
|
|
76
|
+
console.log('iOS Microphone Permission:', granted);
|
|
77
|
+
return granted;
|
|
78
|
+
});
|
|
79
|
+
} else {
|
|
80
|
+
console.warn('AVAudioSession not available');
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
} catch (error) {
|
|
84
|
+
console.error('Error requesting microphone permission on iOS:', error);
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=audioRecorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AudioRecorderPlayer","Platform","PermissionsAndroid","NativeModules","audioRecorderPlayer","silenceTimer","rmsValues","SILENCE_RMS_THRESHOLD","SILENCE_LENGTH_MS","startRecording","handleStopRecording","startRecorder","addRecordBackListener","e","rms","Math","sqrt","currentMetering","reduce","sum","value","pow","length","push","clearTimeout","setTimeout","console","log","stopRecording","error","result","stopRecorder","requestAudioPermission","OS","requestAndroidPermission","requestIOSPermission","granted","request","PERMISSIONS","RECORD_AUDIO","title","message","buttonPositive","buttonNegative","RESULTS","GRANTED","AVAudioSession","requestRecordPermission","warn"],"sourceRoot":"../../../src","sources":["utils/audioRecorder.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// textToSpeech.js
|
|
2
|
+
import React, { useState, useContext } from 'react';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import Sound from 'react-native-sound';
|
|
5
|
+
import { AppContext } from '../contexts/AppContext';
|
|
6
|
+
export const TextToSpeech = async inputText => {
|
|
7
|
+
const {
|
|
8
|
+
data
|
|
9
|
+
} = useContext(AppContext);
|
|
10
|
+
try {
|
|
11
|
+
const response = await axios.post('https://api.openai.com/v1/audio/speech', {
|
|
12
|
+
model: 'tts-1',
|
|
13
|
+
voice: 'alloy',
|
|
14
|
+
input: inputText
|
|
15
|
+
}, {
|
|
16
|
+
headers: {
|
|
17
|
+
Authorization: `Bearer ${data.openai_key}`,
|
|
18
|
+
'Content-Type': 'application/json'
|
|
19
|
+
},
|
|
20
|
+
responseType: 'arraybuffer'
|
|
21
|
+
});
|
|
22
|
+
const audioFile = `data:audio/mp3;base64,${Buffer.from(response.data).toString('base64')}`;
|
|
23
|
+
const sound = new Sound(audioFile, null, error => {
|
|
24
|
+
if (error) {
|
|
25
|
+
console.error('Error playing sound:', error);
|
|
26
|
+
} else {
|
|
27
|
+
sound.play();
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
} catch (error) {
|
|
31
|
+
console.error('Error generating TTS:', error);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=textToSpeech.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","useContext","axios","Sound","AppContext","TextToSpeech","inputText","data","response","post","model","voice","input","headers","Authorization","openai_key","responseType","audioFile","Buffer","from","toString","sound","error","console","play"],"sourceRoot":"../../../src","sources":["utils/textToSpeech.js"],"mappings":"AAAA;AACA,OAAOA,KAAK,IAAGC,QAAQ,EAAEC,UAAU,QAAO,OAAO;AACjD,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,KAAK,MAAM,oBAAoB;AACtC,SAASC,UAAU,QAAQ,wBAAwB;AAEnD,OAAO,MAAMC,YAAY,GAAG,MAAOC,SAAS,IAAK;EAC/C,MAAM;IAAEC;EAAK,CAAC,GAAGN,UAAU,CAACG,UAAU,CAAC;EACvC,IAAI;IACF,MAAMI,QAAQ,GAAG,MAAMN,KAAK,CAACO,IAAI,CAC/B,wCAAwC,EACxC;MACEC,KAAK,EAAE,OAAO;MACdC,KAAK,EAAE,OAAO;MACdC,KAAK,EAAEN;IACT,CAAC,EACD;MACEO,OAAO,EAAE;QACPC,aAAa,EAAE,UAAUP,IAAI,CAACQ,UAAU,EAAE;QAC1C,cAAc,EAAE;MAClB,CAAC;MACDC,YAAY,EAAE;IAChB,CACF,CAAC;IAED,MAAMC,SAAS,GAAG,yBAAyBC,MAAM,CAACC,IAAI,CAACX,QAAQ,CAACD,IAAI,CAAC,CAACa,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAE1F,MAAMC,KAAK,GAAG,IAAIlB,KAAK,CAACc,SAAS,EAAE,IAAI,EAAGK,KAAK,IAAK;MAClD,IAAIA,KAAK,EAAE;QACTC,OAAO,CAACD,KAAK,CAAC,sBAAsB,EAAEA,KAAK,CAAC;MAC9C,CAAC,MAAM;QACLD,KAAK,CAACG,IAAI,CAAC,CAAC;MACd;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOF,KAAK,EAAE;IACdC,OAAO,CAACD,KAAK,CAAC,uBAAuB,EAAEA,KAAK,CAAC;EAC/C;AACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/input.js"],"names":[],"mappings":"AAeO;;;
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/input.js"],"names":[],"mappings":"AAeO;;;sBA4BN;kBA3C8D,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"productCard.d.ts","sourceRoot":"","sources":["../../../src/components/productCard.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"productCard.d.ts","sourceRoot":"","sources":["../../../src/components/productCard.js"],"names":[],"mappings":"AAKO;;sBA+GN;kBApH2C,OAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressCircle.d.ts","sourceRoot":"","sources":["../../../src/components/progressCircle.js"],"names":[],"mappings":"AAIO,oDAiCN;kBArCoD,OAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../../src/components/voice.js"],"names":[],"mappings":"AASO,iDAkEN;kBA1E2C,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"welcomeInput.d.ts","sourceRoot":"","sources":["../../../src/components/welcomeInput.js"],"names":[],"mappings":"AAeO;;;
|
|
1
|
+
{"version":3,"file":"welcomeInput.d.ts","sourceRoot":"","sources":["../../../src/components/welcomeInput.js"],"names":[],"mappings":"AAeO;;;sBA+BN;kBA9C8D,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/layout/window.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/layout/window.js"],"names":[],"mappings":"AAeO;;sBA0IN;kBAzJ8D,OAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioRecorder.d.ts","sourceRoot":"","sources":["../../../src/utils/audioRecorder.js"],"names":[],"mappings":"AAYA,wEA0BC;AAED,wDAWC;AAED,uEAMC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textToSpeech.d.ts","sourceRoot":"","sources":["../../../src/utils/textToSpeech.js"],"names":[],"mappings":"AAMO,4DA+BN"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-srschat",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.19",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A modern, sophisticated chat interface for React Native",
|
|
6
6
|
"main": "lib/commonjs/index",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"eslint-plugin-react-native": "^4.0.0",
|
|
47
47
|
"metro-react-native-babel-preset": "^0.77.0",
|
|
48
48
|
"react": "18.2.0",
|
|
49
|
-
"react-native": "0.73.6",
|
|
49
|
+
"react-native": "^0.73.6",
|
|
50
50
|
"react-native-builder-bob": "^0.20.0",
|
|
51
51
|
"typescript": "^5.0.0"
|
|
52
52
|
},
|
|
@@ -66,7 +66,8 @@
|
|
|
66
66
|
"react-native-keyboard-aware-scroll-view": "^0.9.5",
|
|
67
67
|
"react-native-markdown-display": "^7.0.2",
|
|
68
68
|
"react-native-uuid": "^2.0.3",
|
|
69
|
-
"react-native-vector-icons": "^10.2.0"
|
|
69
|
+
"react-native-vector-icons": "^10.2.0",
|
|
70
|
+
"react-native-video": "^6.10.2"
|
|
70
71
|
},
|
|
71
72
|
"react-native-builder-bob": {
|
|
72
73
|
"source": "src",
|
package/src/components/email.js
CHANGED
|
@@ -6,18 +6,18 @@ import { AppContext } from "../contexts/AppContext";
|
|
|
6
6
|
import { Header } from "./header";
|
|
7
7
|
|
|
8
8
|
export const EmailForm = ({ panHandlers }) => {
|
|
9
|
-
const { BASE_URL, setShowModal, messages, formatChatHistory, conversationStartTime } = useContext(AppContext);
|
|
9
|
+
const { data, BASE_URL, setShowModal, messages, formatChatHistory, conversationStartTime } = useContext(AppContext);
|
|
10
10
|
const [subject, setSubject] = useState("");
|
|
11
11
|
const [message, setMessage] = useState("");
|
|
12
12
|
const [userEmail, setUserEmail] = useState("");
|
|
13
|
-
const [branchEmail, setBranchEmail] = useState("");
|
|
13
|
+
const [branchEmail, setBranchEmail] = useState(data.branch_email || "");
|
|
14
14
|
const [isLoading, setIsLoading] = useState(false);
|
|
15
15
|
const [error, setError] = useState("");
|
|
16
16
|
const [success, setSuccess] = useState(false);
|
|
17
17
|
const [isComposing, setIsComposing] = useState(false);
|
|
18
18
|
|
|
19
19
|
const handleComposeEmail = async () => {
|
|
20
|
-
setIsComposing(true);
|
|
20
|
+
setIsComposing(true);
|
|
21
21
|
setError("");
|
|
22
22
|
|
|
23
23
|
try {
|
|
@@ -26,7 +26,7 @@ export const EmailForm = ({ panHandlers }) => {
|
|
|
26
26
|
chat_history: chatHistory,
|
|
27
27
|
conversation_start_time: conversationStartTime,
|
|
28
28
|
customer_name: '',
|
|
29
|
-
branch_email:
|
|
29
|
+
branch_email: branchEmail,
|
|
30
30
|
};
|
|
31
31
|
|
|
32
32
|
const response = await axios.post(`https://${BASE_URL}/compose-email`, payload);
|
|
@@ -55,13 +55,13 @@ export const EmailForm = ({ panHandlers }) => {
|
|
|
55
55
|
try {
|
|
56
56
|
const chatHistory = formatChatHistory();
|
|
57
57
|
await axios.post(`https://${BASE_URL}/send-email`, {
|
|
58
|
-
user_email:
|
|
58
|
+
user_email: userEmail,
|
|
59
59
|
subject,
|
|
60
60
|
message,
|
|
61
61
|
chat_history: chatHistory,
|
|
62
62
|
conversation_start_time: conversationStartTime,
|
|
63
63
|
customer_name: '',
|
|
64
|
-
branch_email:
|
|
64
|
+
branch_email: branchEmail,
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
setSuccess(true);
|
package/src/components/header.js
CHANGED
|
@@ -18,33 +18,33 @@ export const Header = () => {
|
|
|
18
18
|
<View style={styles.header}>
|
|
19
19
|
{/* Logo on the left */}
|
|
20
20
|
<View style={styles.section}>
|
|
21
|
-
<Image source={require('../assets/heritage.png')} style={styles.logo}
|
|
21
|
+
<Image source={require('../assets/heritage.png')} style={[styles.logo, { tintColor: "white" }]} />
|
|
22
22
|
</View>
|
|
23
23
|
|
|
24
24
|
{/* Title in the center */}
|
|
25
|
-
<View style={[styles.section, styles.titleContainer]}>
|
|
25
|
+
{/* <View style={[styles.section, styles.titleContainer]}>
|
|
26
26
|
<View style={styles.titleWrapper}>
|
|
27
27
|
<Text style={styles.title}>
|
|
28
28
|
Poseidon
|
|
29
29
|
</Text>
|
|
30
30
|
<Text style={styles.betaText}><Ionicons name="sparkles-outline" size={10} color="#007AFF" />beta</Text>
|
|
31
31
|
</View>
|
|
32
|
-
</View>
|
|
32
|
+
</View> */}
|
|
33
33
|
|
|
34
34
|
{/* Close button on the right */}
|
|
35
35
|
<View style={styles.iconsSection}>
|
|
36
36
|
{showModal !== "Form" && showModal !== "Email" &&
|
|
37
37
|
<>
|
|
38
38
|
<TouchableOpacity onPress={() => setShowModal("Email")}>
|
|
39
|
-
<Ionicons name="mail" size={24} color="
|
|
39
|
+
<Ionicons name="mail" size={24} color="white" />
|
|
40
40
|
</TouchableOpacity>
|
|
41
41
|
<TouchableOpacity onPress={() => handleClearState()}>
|
|
42
|
-
<Ionicons name="trash" size={24} color="
|
|
42
|
+
<Ionicons name="trash" size={24} color="white" />
|
|
43
43
|
</TouchableOpacity>
|
|
44
44
|
</>
|
|
45
45
|
}
|
|
46
46
|
<TouchableOpacity onPress={() => handleClick()}>
|
|
47
|
-
<Ionicons name="chevron-down" size={24} color="
|
|
47
|
+
<Ionicons name="chevron-down" size={24} color="white" />
|
|
48
48
|
</TouchableOpacity>
|
|
49
49
|
</View>
|
|
50
50
|
</View>
|
|
@@ -55,14 +55,15 @@ const styles = StyleSheet.create({
|
|
|
55
55
|
header: {
|
|
56
56
|
flexDirection: 'row',
|
|
57
57
|
alignItems: 'center',
|
|
58
|
-
backgroundColor: '#
|
|
58
|
+
backgroundColor: '#186494',
|
|
59
59
|
padding: 16,
|
|
60
60
|
borderBottomWidth: 1,
|
|
61
61
|
borderBottomColor: '#ddd',
|
|
62
|
+
justifyContent: 'space-between'
|
|
62
63
|
},
|
|
63
64
|
section: {
|
|
64
65
|
flex: 1,
|
|
65
|
-
alignItems: '
|
|
66
|
+
alignItems: 'flex-start'
|
|
66
67
|
},
|
|
67
68
|
iconsSection: {
|
|
68
69
|
flex: 1,
|
|
@@ -71,13 +72,13 @@ const styles = StyleSheet.create({
|
|
|
71
72
|
alignItems: 'center',
|
|
72
73
|
justifyContent: 'flex-end',
|
|
73
74
|
marginRight: 10,
|
|
74
|
-
gap:
|
|
75
|
+
gap: 8,
|
|
75
76
|
},
|
|
76
77
|
logo: {
|
|
77
78
|
width: 110,
|
|
78
79
|
height: 40,
|
|
79
80
|
marginLeft: 10,
|
|
80
|
-
resizeMode: 'contain'
|
|
81
|
+
resizeMode: 'contain'
|
|
81
82
|
},
|
|
82
83
|
titleContainer: {
|
|
83
84
|
flex: 2, // Slightly larger space for the title
|
package/src/components/input.js
CHANGED
|
@@ -14,7 +14,7 @@ import { AppContext } from '../contexts/AppContext';
|
|
|
14
14
|
import Ionicons from 'react-native-vector-icons/Ionicons';
|
|
15
15
|
|
|
16
16
|
export const ChatInput = ({ onProductCardClick, onAddToCartClick }) => {
|
|
17
|
-
const { handleSend, input, setInput, showModal } = useContext(AppContext);
|
|
17
|
+
const { handleSend, input, setInput, showModal, data } = useContext(AppContext);
|
|
18
18
|
|
|
19
19
|
return (
|
|
20
20
|
<>
|
|
@@ -29,9 +29,11 @@ export const ChatInput = ({ onProductCardClick, onAddToCartClick }) => {
|
|
|
29
29
|
placeholderTextColor="#999"
|
|
30
30
|
multiline
|
|
31
31
|
/>
|
|
32
|
+
{data.openai_key &&
|
|
32
33
|
<TouchableOpacity style={styles.inputButton}>
|
|
33
34
|
<Ionicons name="mic-outline" size={24} color="#8E8E93" />
|
|
34
35
|
</TouchableOpacity>
|
|
36
|
+
}
|
|
35
37
|
<TouchableOpacity style={styles.sendButton} onPress={() => handleSend(input)} >
|
|
36
38
|
<Ionicons name="paper-plane-outline" size={24} color='#8E8E93' />
|
|
37
39
|
</TouchableOpacity>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useState, useContext } from "react";
|
|
2
2
|
import { View, Text, Image, TouchableOpacity, TextInput, StyleSheet, Platform } from "react-native";
|
|
3
3
|
import { AppContext } from "../contexts/AppContext";
|
|
4
|
+
import Ionicons from 'react-native-vector-icons/Ionicons';
|
|
4
5
|
|
|
5
6
|
export const ProductCard = ({ prod }) => {
|
|
6
7
|
const { onProductCardClick, onAddToCartClick } = useContext(AppContext);
|
|
@@ -188,6 +189,8 @@ const styles = StyleSheet.create({
|
|
|
188
189
|
fontWeight: "medium",
|
|
189
190
|
color: "#161616",
|
|
190
191
|
marginBottom: 5,
|
|
192
|
+
textDecorationLine: "underline",
|
|
193
|
+
textDecorationColor: "#367CB6"
|
|
191
194
|
},
|
|
192
195
|
details: {
|
|
193
196
|
fontSize: 13,
|