react-native-srschat 0.1.59 → 0.1.60
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/lib/commonjs/components/input.js +28 -1
- package/lib/commonjs/components/input.js.map +1 -1
- package/lib/commonjs/components/voice.js +23 -3
- package/lib/commonjs/components/voice.js.map +1 -1
- package/lib/commonjs/components/welcomeInput.js +29 -2
- package/lib/commonjs/components/welcomeInput.js.map +1 -1
- package/lib/commonjs/utils/audioRecorder.js +129 -38
- package/lib/commonjs/utils/audioRecorder.js.map +1 -1
- package/lib/module/components/input.js +28 -1
- package/lib/module/components/input.js.map +1 -1
- package/lib/module/components/voice.js +23 -3
- package/lib/module/components/voice.js.map +1 -1
- package/lib/module/components/welcomeInput.js +29 -2
- package/lib/module/components/welcomeInput.js.map +1 -1
- package/lib/module/utils/audioRecorder.js +129 -38
- package/lib/module/utils/audioRecorder.js.map +1 -1
- package/lib/typescript/components/input.d.ts.map +1 -1
- package/lib/typescript/components/voice.d.ts +3 -1
- package/lib/typescript/components/voice.d.ts.map +1 -1
- package/lib/typescript/components/welcomeInput.d.ts.map +1 -1
- package/lib/typescript/utils/audioRecorder.d.ts +1 -1
- package/lib/typescript/utils/audioRecorder.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/input.js +26 -1
- package/src/components/voice.js +33 -14
- package/src/components/welcomeInput.js +26 -1
- package/src/utils/audioRecorder.js +131 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","useContext","useRef","Text","StyleSheet","View","TextInput","TouchableOpacity","Platform","KeyboardAvoidingView","Keyboard","Header","AppContext","Ionicons","VoiceButton","ChatInput","onProductCardClick","onAddToCartClick","handleSend","input","setInput","showModal","data","handleKeyPress","nativeEvent","key","shiftKey","preventDefault","onSubmitEditing","trim","createElement","Fragment","style","styles","textBeta","allowFontScaling","inputWrapper","inputContainer","value","onChangeText","placeholder","placeholderTextColor","multiline","returnKeyType","enablesReturnKeyAutomatically","onKeyPress","blurOnSubmit","sendButton","onPress","name","size","color","create","backgroundColor","paddingHorizontal","paddingVertical","borderTopWidth","borderTopColor","flexDirection","alignItems","borderRadius","margin","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","flex","fontSize","inputButton","padding","marginLeft","disabledButton","opacity","textAlign","fontWeight","marginTop","marginBottom","textBreakStrategy","lineHeight"],"sourceRoot":"../../../src","sources":["components/input.js"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AACtE,SACEC,IAAI,EACJC,UAAU,EACVC,IAAI,EACJC,SAAS,EACTC,gBAAgB,EAChBC,QAAQ,EACRC,oBAAoB,EACpBC,QAAQ,QACH,cAAc;AACrB,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,UAAU,QAAQ,wBAAwB;AACnD,OAAOC,QAAQ,MAAM,oCAAoC;AACzD,SAASC,WAAW,QAAQ,SAAS;AAErC,OAAO,MAAMC,SAAS,GAAGA,CAAC;EAAEC,kBAAkB;EAAEC;AAAiB,CAAC,KAAK;EACrE,MAAM;IAAEC,UAAU;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAK,CAAC,GAAGrB,UAAU,CAACW,UAAU,CAAC;
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","useContext","useRef","Text","StyleSheet","View","TextInput","TouchableOpacity","Platform","KeyboardAvoidingView","Keyboard","Header","AppContext","Ionicons","VoiceButton","ChatInput","onProductCardClick","onAddToCartClick","handleSend","input","setInput","showModal","data","inputRef","handleKeyPress","nativeEvent","key","shiftKey","preventDefault","onSubmitEditing","trim","createElement","Fragment","style","styles","textBeta","allowFontScaling","inputWrapper","inputContainer","ref","value","onChangeText","placeholder","placeholderTextColor","multiline","returnKeyType","enablesReturnKeyAutomatically","onKeyPress","selection","undefined","blurOnSubmit","text","current","blur","setTimeout","focus","OS","setSelection","length","sendButton","onPress","name","size","color","create","backgroundColor","paddingHorizontal","paddingVertical","borderTopWidth","borderTopColor","flexDirection","alignItems","borderRadius","margin","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","flex","fontSize","inputButton","padding","marginLeft","disabledButton","opacity","textAlign","fontWeight","marginTop","marginBottom","textBreakStrategy","lineHeight"],"sourceRoot":"../../../src","sources":["components/input.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,9 @@ import useAsyncStorage from '../hooks/useAsyncStorage';
|
|
|
7
7
|
import { startRecording, stopRecording, cancelRecording, requestAudioPermission, cleanup, initVoice, resetStoredPermission, setPermissionStatusHandlers } from '../utils/audioRecorder';
|
|
8
8
|
import { AppContext } from '../contexts/AppContext';
|
|
9
9
|
const PERMISSION_STORAGE_KEY = '@voice_permission_status';
|
|
10
|
-
export const VoiceButton = (
|
|
10
|
+
export const VoiceButton = ({
|
|
11
|
+
setInput
|
|
12
|
+
}) => {
|
|
11
13
|
const {
|
|
12
14
|
handleVoiceSend
|
|
13
15
|
} = useContext(AppContext);
|
|
@@ -35,7 +37,10 @@ export const VoiceButton = () => {
|
|
|
35
37
|
const permissionResult = await requestAudioPermission();
|
|
36
38
|
setHasPermission(permissionResult);
|
|
37
39
|
if (permissionResult) {
|
|
38
|
-
const initialized = await initVoice(
|
|
40
|
+
const initialized = await initVoice(
|
|
41
|
+
// Final result callback - just update input, don't send
|
|
42
|
+
(result, error) => {
|
|
43
|
+
console.log('Voice final result:', result, 'Error:', error);
|
|
39
44
|
if (error) {
|
|
40
45
|
// Don't show alert for permission errors since we handle that elsewhere
|
|
41
46
|
if (!error.includes('permission')) {
|
|
@@ -46,11 +51,26 @@ export const VoiceButton = () => {
|
|
|
46
51
|
return;
|
|
47
52
|
}
|
|
48
53
|
if (result) {
|
|
49
|
-
|
|
54
|
+
if (setInput) {
|
|
55
|
+
// Just update the input field, don't send
|
|
56
|
+
setInput(result);
|
|
57
|
+
} else {
|
|
58
|
+
console.warn('VoiceButton: setInput prop is not provided');
|
|
59
|
+
}
|
|
50
60
|
}
|
|
51
61
|
// Always reset states when the recognition ends
|
|
52
62
|
setIsListening(false);
|
|
53
63
|
setLoading(false);
|
|
64
|
+
},
|
|
65
|
+
// Partial result callback for live transcription
|
|
66
|
+
partialResult => {
|
|
67
|
+
if (partialResult) {
|
|
68
|
+
if (setInput) {
|
|
69
|
+
setInput(partialResult);
|
|
70
|
+
} else {
|
|
71
|
+
console.warn('VoiceButton: setInput prop is not provided for partial results');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
54
74
|
});
|
|
55
75
|
if (!initialized) {
|
|
56
76
|
// Only show this alert once per session
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useContext","useEffect","TouchableOpacity","ActivityIndicator","StyleSheet","Alert","Linking","Platform","Ionicons","useAsyncStorage","startRecording","stopRecording","cancelRecording","requestAudioPermission","cleanup","initVoice","resetStoredPermission","setPermissionStatusHandlers","AppContext","PERMISSION_STORAGE_KEY","VoiceButton","handleVoiceSend","isListening","setIsListening","loading","setLoading","permissionChecked","setPermissionChecked","hasPermission","setHasPermission","permissionStatus","setPermissionStatus","setupVoice","permissionResult","initialized","result","error","includes","alert","
|
|
1
|
+
{"version":3,"names":["React","useState","useContext","useEffect","TouchableOpacity","ActivityIndicator","StyleSheet","Alert","Linking","Platform","Ionicons","useAsyncStorage","startRecording","stopRecording","cancelRecording","requestAudioPermission","cleanup","initVoice","resetStoredPermission","setPermissionStatusHandlers","AppContext","PERMISSION_STORAGE_KEY","VoiceButton","setInput","handleVoiceSend","isListening","setIsListening","loading","setLoading","permissionChecked","setPermissionChecked","hasPermission","setHasPermission","permissionStatus","setPermissionStatus","setupVoice","permissionResult","initialized","result","error","console","log","includes","alert","warn","partialResult","toggleRecording","text","style","onPress","openAppSettings","checkPermission","started","OS","openURL","openSettings","createElement","styles","button","disabled","size","color","name","create","justifyContent","alignItems"],"sourceRoot":"../../../src","sources":["components/voice.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,6 +16,7 @@ export const WelcomeInput = ({
|
|
|
16
16
|
showModal,
|
|
17
17
|
theme
|
|
18
18
|
} = useContext(AppContext);
|
|
19
|
+
const inputRef = useRef(null);
|
|
19
20
|
const handleKeyPress = ({
|
|
20
21
|
nativeEvent
|
|
21
22
|
}) => {
|
|
@@ -33,6 +34,7 @@ export const WelcomeInput = ({
|
|
|
33
34
|
return /*#__PURE__*/React.createElement(View, {
|
|
34
35
|
style: styles.inputContainer
|
|
35
36
|
}, /*#__PURE__*/React.createElement(TextInput, {
|
|
37
|
+
ref: inputRef,
|
|
36
38
|
style: styles.input,
|
|
37
39
|
value: input,
|
|
38
40
|
onChangeText: setInput,
|
|
@@ -42,9 +44,34 @@ export const WelcomeInput = ({
|
|
|
42
44
|
returnKeyType: "send",
|
|
43
45
|
enablesReturnKeyAutomatically: true,
|
|
44
46
|
onKeyPress: handleKeyPress,
|
|
45
|
-
onSubmitEditing: onSubmitEditing
|
|
47
|
+
onSubmitEditing: onSubmitEditing,
|
|
48
|
+
selection: undefined
|
|
46
49
|
// blurOnSubmit={false}
|
|
47
|
-
}), /*#__PURE__*/React.createElement(VoiceButton,
|
|
50
|
+
}), /*#__PURE__*/React.createElement(VoiceButton, {
|
|
51
|
+
setInput: text => {
|
|
52
|
+
setInput(text);
|
|
53
|
+
// Auto-scroll to end
|
|
54
|
+
if (inputRef.current) {
|
|
55
|
+
// For iOS and Android, blur and refocus to ensure scroll
|
|
56
|
+
inputRef.current.blur();
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
if (inputRef.current) {
|
|
59
|
+
inputRef.current.focus();
|
|
60
|
+
// Set selection to end - Android sometimes needs a slight delay
|
|
61
|
+
if (Platform.OS === 'android') {
|
|
62
|
+
setTimeout(() => {
|
|
63
|
+
if (inputRef.current) {
|
|
64
|
+
inputRef.current.setSelection(text.length, text.length);
|
|
65
|
+
}
|
|
66
|
+
}, 10);
|
|
67
|
+
} else {
|
|
68
|
+
inputRef.current.setSelection(text.length, text.length);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}, 50);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
48
75
|
style: styles.sendButton,
|
|
49
76
|
onPress: () => handleSend(input),
|
|
50
77
|
disabled: !input.trim()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","useContext","useRef","Text","StyleSheet","View","TextInput","TouchableOpacity","Platform","KeyboardAvoidingView","Keyboard","Header","AppContext","Ionicons","VoiceButton","WelcomeInput","onProductCardClick","onAddToCartClick","data","handleSend","input","setInput","showModal","theme","handleKeyPress","nativeEvent","key","shiftKey","preventDefault","onSubmitEditing","trim","createElement","style","styles","inputContainer","value","onChangeText","placeholder","placeholderTextColor","multiline","returnKeyType","enablesReturnKeyAutomatically","onKeyPress","sendButton","onPress","disabled","name","size","color","primaryColor","create","flexDirection","alignItems","paddingHorizontal","paddingVertical","backgroundColor","borderRadius","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","flex","fontSize","inputButton","padding","marginLeft","disabledButton","opacity"],"sourceRoot":"../../../src","sources":["components/welcomeInput.js"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AACtE,SACEC,IAAI,EACJC,UAAU,EACVC,IAAI,EACJC,SAAS,EACTC,gBAAgB,EAChBC,QAAQ,EACRC,oBAAoB,EACpBC,QAAQ,QACH,cAAc;AACrB,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,UAAU,QAAQ,wBAAwB;AACnD,OAAOC,QAAQ,MAAM,oCAAoC;AACzD,SAASC,WAAW,QAAQ,SAAS;AAErC,OAAO,MAAMC,YAAY,GAAGA,CAAC;EAAEC,kBAAkB;EAAEC;AAAiB,CAAC,KAAK;EAExE,MAAM;IAAEC,IAAI;IAAEC,UAAU;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGtB,UAAU,CAACW,UAAU,CAAC;
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","useContext","useRef","Text","StyleSheet","View","TextInput","TouchableOpacity","Platform","KeyboardAvoidingView","Keyboard","Header","AppContext","Ionicons","VoiceButton","WelcomeInput","onProductCardClick","onAddToCartClick","data","handleSend","input","setInput","showModal","theme","inputRef","handleKeyPress","nativeEvent","key","shiftKey","preventDefault","onSubmitEditing","trim","createElement","style","styles","inputContainer","ref","value","onChangeText","placeholder","placeholderTextColor","multiline","returnKeyType","enablesReturnKeyAutomatically","onKeyPress","selection","undefined","text","current","blur","setTimeout","focus","OS","setSelection","length","sendButton","onPress","disabled","name","size","color","primaryColor","create","flexDirection","alignItems","paddingHorizontal","paddingVertical","backgroundColor","borderRadius","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","flex","fontSize","inputButton","padding","marginLeft","disabledButton","opacity"],"sourceRoot":"../../../src","sources":["components/welcomeInput.js"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AACtE,SACEC,IAAI,EACJC,UAAU,EACVC,IAAI,EACJC,SAAS,EACTC,gBAAgB,EAChBC,QAAQ,EACRC,oBAAoB,EACpBC,QAAQ,QACH,cAAc;AACrB,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,UAAU,QAAQ,wBAAwB;AACnD,OAAOC,QAAQ,MAAM,oCAAoC;AACzD,SAASC,WAAW,QAAQ,SAAS;AAErC,OAAO,MAAMC,YAAY,GAAGA,CAAC;EAAEC,kBAAkB;EAAEC;AAAiB,CAAC,KAAK;EAExE,MAAM;IAAEC,IAAI;IAAEC,UAAU;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGtB,UAAU,CAACW,UAAU,CAAC;EACtF,MAAMY,QAAQ,GAAGtB,MAAM,CAAC,IAAI,CAAC;EAE7B,MAAMuB,cAAc,GAAGA,CAAC;IAAEC;EAAY,CAAC,KAAK;IAC1C,IAAIA,WAAW,CAACC,GAAG,KAAK,QAAQ,IAAI,CAACD,WAAW,CAACE,QAAQ,EAAE;MACzDF,WAAW,CAACG,cAAc,IAAIH,WAAW,CAACG,cAAc,CAAC,CAAC;MAC1DV,UAAU,CAACC,KAAK,CAAC;MACjB;IACF;EACF,CAAC;EAED,MAAMU,eAAe,GAAGA,CAAA,KAAM;IAC5B,IAAIV,KAAK,CAACW,IAAI,CAAC,CAAC,EAAE;MAChBZ,UAAU,CAACC,KAAK,CAAC;IACnB;EACF,CAAC;EAED,oBACMtB,KAAA,CAAAkC,aAAA,CAAC3B,IAAI;IAAC4B,KAAK,EAAEC,MAAM,CAACC;EAAe,gBACnCrC,KAAA,CAAAkC,aAAA,CAAC1B,SAAS;IACN8B,GAAG,EAAEZ,QAAS;IACdS,KAAK,EAAEC,MAAM,CAACd,KAAM;IACpBiB,KAAK,EAAEjB,KAAM;IACbkB,YAAY,EAAEjB,QAAS;IACvBkB,WAAW,EAAC,mBAAmB;IAC/BC,oBAAoB,EAAC,MAAM;IAC3BC,SAAS,EAAE,KAAM;IACjBC,aAAa,EAAC,MAAM;IACpBC,6BAA6B,EAAE,IAAK;IACpCC,UAAU,EAAEnB,cAAe;IAC3BK,eAAe,EAAEA,eAAgB;IACjCe,SAAS,EAAEC;IACX;EAAA,CACH,CAAC,eACFhD,KAAA,CAAAkC,aAAA,CAAClB,WAAW;IAACO,QAAQ,EAAG0B,IAAI,IAAK;MAC/B1B,QAAQ,CAAC0B,IAAI,CAAC;MACd;MACA,IAAIvB,QAAQ,CAACwB,OAAO,EAAE;QACpB;QACAxB,QAAQ,CAACwB,OAAO,CAACC,IAAI,CAAC,CAAC;QACvBC,UAAU,CAAC,MAAM;UACf,IAAI1B,QAAQ,CAACwB,OAAO,EAAE;YACpBxB,QAAQ,CAACwB,OAAO,CAACG,KAAK,CAAC,CAAC;YACxB;YACA,IAAI3C,QAAQ,CAAC4C,EAAE,KAAK,SAAS,EAAE;cAC7BF,UAAU,CAAC,MAAM;gBACf,IAAI1B,QAAQ,CAACwB,OAAO,EAAE;kBACpBxB,QAAQ,CAACwB,OAAO,CAACK,YAAY,CAACN,IAAI,CAACO,MAAM,EAAEP,IAAI,CAACO,MAAM,CAAC;gBACzD;cACF,CAAC,EAAE,EAAE,CAAC;YACR,CAAC,MAAM;cACL9B,QAAQ,CAACwB,OAAO,CAACK,YAAY,CAACN,IAAI,CAACO,MAAM,EAAEP,IAAI,CAACO,MAAM,CAAC;YACzD;UACF;QACF,CAAC,EAAE,EAAE,CAAC;MACR;IACF;EAAE,CAAC,CAAC,eACJxD,KAAA,CAAAkC,aAAA,CAACzB,gBAAgB;IACb0B,KAAK,EAAEC,MAAM,CAACqB,UAAW;IACzBC,OAAO,EAAEA,CAAA,KAAMrC,UAAU,CAACC,KAAK,CAAE;IACjCqC,QAAQ,EAAE,CAACrC,KAAK,CAACW,IAAI,CAAC;EAAE,gBAExBjC,KAAA,CAAAkC,aAAA,CAACnB,QAAQ;IACT6C,IAAI,EAAC,qBAAqB;IAC1BC,IAAI,EAAE,EAAG;IACTC,KAAK,EAAExC,KAAK,CAACW,IAAI,CAAC,CAAC,GAAGR,KAAK,CAACsC,YAAY,GAAG;EAAU,CACpD,CACa,CACZ,CAAC;AAEf,CAAC;AAED,MAAM3B,MAAM,GAAG9B,UAAU,CAAC0D,MAAM,CAAC;EAC/B3B,cAAc,EAAE;IACd4B,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE,CAAC;IAClBC,eAAe,EAAE,SAAS;IAC1BC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE;MACZC,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE;IACV,CAAC;IACDC,aAAa,EAAE,GAAG;IAClBC,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb,CAAC;EACDvD,KAAK,EAAE;IACLwD,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,EAAE;IACZX,eAAe,EAAE,CAAC;IAClBD,iBAAiB,EAAE,EAAE;IACrBL,KAAK,EAAE;EACT,CAAC;EACDkB,WAAW,EAAE;IACXC,OAAO,EAAE;EACX,CAAC;EACDxB,UAAU,EAAE;IACVwB,OAAO,EAAE,CAAC;IACVC,UAAU,EAAE;EACd,CAAC;EACDC,cAAc,EAAE;IACdC,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -5,10 +5,13 @@ 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;
|
|
8
|
+
let partialResultCallback = null;
|
|
8
9
|
let silenceTimer = null;
|
|
9
10
|
let isCurrentlyRecording = false;
|
|
10
11
|
let finalResult = '';
|
|
12
|
+
let lastPartialResultTime = 0;
|
|
11
13
|
const SILENCE_DURATION = 1500; // 1.5 seconds of silence before stopping
|
|
14
|
+
const PARTIAL_RESULT_THROTTLE = 100; // Throttle partial results to every 100ms
|
|
12
15
|
|
|
13
16
|
// Add this constant for AsyncStorage key
|
|
14
17
|
const PERMISSION_STORAGE_KEY = '@voice_permission_status';
|
|
@@ -23,9 +26,10 @@ export function setPermissionStatusHandlers(getter, setter) {
|
|
|
23
26
|
}
|
|
24
27
|
|
|
25
28
|
// Initialize Voice handlers
|
|
26
|
-
export async function initVoice(onResult) {
|
|
29
|
+
export async function initVoice(onResult, onPartialResult = null) {
|
|
27
30
|
try {
|
|
28
31
|
resultCallback = onResult;
|
|
32
|
+
partialResultCallback = onPartialResult;
|
|
29
33
|
finalResult = '';
|
|
30
34
|
|
|
31
35
|
// Check if Voice module is available
|
|
@@ -41,6 +45,18 @@ export async function initVoice(onResult) {
|
|
|
41
45
|
return false;
|
|
42
46
|
}
|
|
43
47
|
|
|
48
|
+
// Check if another recognition session is active
|
|
49
|
+
try {
|
|
50
|
+
const isRecognizing = await Voice.isRecognizing();
|
|
51
|
+
if (isRecognizing) {
|
|
52
|
+
console.log('Another recognition session is active, cleaning up...');
|
|
53
|
+
await Voice.destroy();
|
|
54
|
+
await new Promise(resolve => setTimeout(resolve, 300));
|
|
55
|
+
}
|
|
56
|
+
} catch (e) {
|
|
57
|
+
// Ignore errors checking recognition state
|
|
58
|
+
}
|
|
59
|
+
|
|
44
60
|
// Set up all event listeners
|
|
45
61
|
Voice.onSpeechStart = e => {
|
|
46
62
|
console.log('onSpeechStart: ', e);
|
|
@@ -50,6 +66,9 @@ export async function initVoice(onResult) {
|
|
|
50
66
|
clearTimeout(silenceTimer);
|
|
51
67
|
silenceTimer = null;
|
|
52
68
|
}
|
|
69
|
+
|
|
70
|
+
// Start initial silence detection
|
|
71
|
+
handleSilenceDetection();
|
|
53
72
|
};
|
|
54
73
|
Voice.onSpeechRecognized = e => {
|
|
55
74
|
console.log('onSpeechRecognized: ', e);
|
|
@@ -65,37 +84,49 @@ export async function initVoice(onResult) {
|
|
|
65
84
|
silenceTimer = null;
|
|
66
85
|
}
|
|
67
86
|
|
|
68
|
-
//
|
|
69
|
-
if (isCurrentlyRecording) {
|
|
70
|
-
|
|
87
|
+
// On iOS, onSpeechEnd can fire multiple times, so check if we're still recording
|
|
88
|
+
if (isCurrentlyRecording && finalResult) {
|
|
89
|
+
// Don't call handleFinalResult here on iOS as it causes the error
|
|
90
|
+
// Instead, just mark that speech ended and let silence detection handle it
|
|
91
|
+
if (Platform.OS === 'ios') {
|
|
92
|
+
console.log('iOS: Speech ended, waiting for silence detection to handle cleanup');
|
|
93
|
+
} else {
|
|
94
|
+
await handleFinalResult();
|
|
95
|
+
}
|
|
71
96
|
}
|
|
72
97
|
};
|
|
73
98
|
Voice.onSpeechError = async e => {
|
|
74
|
-
var _e$error, _e$error2;
|
|
75
|
-
|
|
76
|
-
|
|
99
|
+
var _e$error, _e$error2, _e$error3, _e$error4;
|
|
100
|
+
console.error('onSpeechError: ', e);
|
|
77
101
|
if (silenceTimer) {
|
|
78
102
|
clearTimeout(silenceTimer);
|
|
79
103
|
silenceTimer = null;
|
|
80
104
|
}
|
|
81
105
|
|
|
82
|
-
// Check for
|
|
106
|
+
// Check for specific error types
|
|
83
107
|
const isNoSpeechError = ((_e$error = e.error) === null || _e$error === void 0 ? void 0 : _e$error.code) === "recognition_fail" && ((_e$error2 = e.error) === null || _e$error2 === void 0 || (_e$error2 = _e$error2.message) === null || _e$error2 === void 0 ? void 0 : _e$error2.includes("No speech detected"));
|
|
108
|
+
|
|
109
|
+
// iOS error 1101 is often transient and related to service availability
|
|
110
|
+
const isTransientIOSError = Platform.OS === 'ios' && (((_e$error3 = e.error) === null || _e$error3 === void 0 ? void 0 : _e$error3.code) === "1101" || ((_e$error4 = e.error) === null || _e$error4 === void 0 || (_e$error4 = _e$error4.message) === null || _e$error4 === void 0 ? void 0 : _e$error4.includes("kAFAssistantErrorDomain")));
|
|
84
111
|
await cleanupVoiceSession();
|
|
85
112
|
|
|
86
|
-
// Only send error to callback
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
113
|
+
// Only send error to callback for non-transient errors
|
|
114
|
+
if (!isNoSpeechError && !isTransientIOSError && resultCallback) {
|
|
115
|
+
var _e$error5;
|
|
116
|
+
resultCallback(null, ((_e$error5 = e.error) === null || _e$error5 === void 0 ? void 0 : _e$error5.message) || 'Speech recognition error');
|
|
117
|
+
} else if (isTransientIOSError) {
|
|
118
|
+
console.log('Transient iOS speech recognition error, attempting to recover');
|
|
119
|
+
// Send the final result if we have one
|
|
120
|
+
if (finalResult && resultCallback) {
|
|
121
|
+
resultCallback(finalResult);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
94
124
|
};
|
|
95
125
|
Voice.onSpeechResults = e => {
|
|
96
126
|
console.log('onSpeechResults: ', e);
|
|
97
127
|
if (e.value && e.value.length > 0) {
|
|
98
128
|
finalResult = e.value[0];
|
|
129
|
+
// Also trigger silence detection for final results
|
|
99
130
|
handleSilenceDetection();
|
|
100
131
|
}
|
|
101
132
|
};
|
|
@@ -106,6 +137,13 @@ export async function initVoice(onResult) {
|
|
|
106
137
|
}
|
|
107
138
|
if (e.value && e.value.length > 0) {
|
|
108
139
|
finalResult = e.value[0];
|
|
140
|
+
|
|
141
|
+
// Throttle partial results to prevent overwhelming the UI and speech service
|
|
142
|
+
const now = Date.now();
|
|
143
|
+
if (partialResultCallback && now - lastPartialResultTime > PARTIAL_RESULT_THROTTLE) {
|
|
144
|
+
partialResultCallback(e.value[0]);
|
|
145
|
+
lastPartialResultTime = now;
|
|
146
|
+
}
|
|
109
147
|
handleSilenceDetection();
|
|
110
148
|
}
|
|
111
149
|
};
|
|
@@ -125,22 +163,36 @@ const handleSilenceDetection = () => {
|
|
|
125
163
|
clearTimeout(silenceTimer);
|
|
126
164
|
}
|
|
127
165
|
silenceTimer = setTimeout(async () => {
|
|
128
|
-
|
|
166
|
+
console.log('Silence detected, stopping recording...');
|
|
167
|
+
if (isCurrentlyRecording && finalResult) {
|
|
129
168
|
await handleFinalResult();
|
|
130
169
|
}
|
|
131
170
|
}, SILENCE_DURATION);
|
|
132
171
|
};
|
|
133
172
|
const handleFinalResult = async () => {
|
|
134
173
|
if (!isCurrentlyRecording) return;
|
|
135
|
-
|
|
174
|
+
|
|
175
|
+
// Set flag immediately to prevent race conditions
|
|
176
|
+
isCurrentlyRecording = false;
|
|
177
|
+
|
|
178
|
+
// Clear silence timer first
|
|
179
|
+
if (silenceTimer) {
|
|
180
|
+
clearTimeout(silenceTimer);
|
|
181
|
+
silenceTimer = null;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Send result if we have one
|
|
185
|
+
if (finalResult && resultCallback) {
|
|
136
186
|
resultCallback(finalResult);
|
|
137
187
|
}
|
|
138
188
|
|
|
139
|
-
//
|
|
140
|
-
|
|
189
|
+
// Give iOS time to finish processing before cleanup
|
|
190
|
+
if (Platform.OS === 'ios') {
|
|
191
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
192
|
+
}
|
|
141
193
|
|
|
142
|
-
//
|
|
143
|
-
await
|
|
194
|
+
// Stop recording with proper sequence
|
|
195
|
+
await stopRecording();
|
|
144
196
|
};
|
|
145
197
|
const cleanupVoiceSession = async () => {
|
|
146
198
|
isCurrentlyRecording = false;
|
|
@@ -204,6 +256,9 @@ export async function startRecording() {
|
|
|
204
256
|
console.error('No permission to record audio');
|
|
205
257
|
return false;
|
|
206
258
|
}
|
|
259
|
+
|
|
260
|
+
// Reset throttle timer
|
|
261
|
+
lastPartialResultTime = 0;
|
|
207
262
|
await Voice.start('en-US');
|
|
208
263
|
isCurrentlyRecording = true;
|
|
209
264
|
return true;
|
|
@@ -215,7 +270,21 @@ export async function startRecording() {
|
|
|
215
270
|
}
|
|
216
271
|
export async function stopRecording() {
|
|
217
272
|
try {
|
|
218
|
-
if (!
|
|
273
|
+
if (!Voice) return;
|
|
274
|
+
|
|
275
|
+
// Already stopped
|
|
276
|
+
if (!isCurrentlyRecording) {
|
|
277
|
+
// Still try to clean up any lingering session
|
|
278
|
+
try {
|
|
279
|
+
const isRecognizing = await Voice.isRecognizing();
|
|
280
|
+
if (isRecognizing) {
|
|
281
|
+
await Voice.stop();
|
|
282
|
+
}
|
|
283
|
+
} catch (e) {
|
|
284
|
+
// Ignore errors checking recognition state
|
|
285
|
+
}
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
219
288
|
|
|
220
289
|
// Set this first to prevent race conditions
|
|
221
290
|
isCurrentlyRecording = false;
|
|
@@ -224,21 +293,43 @@ export async function stopRecording() {
|
|
|
224
293
|
silenceTimer = null;
|
|
225
294
|
}
|
|
226
295
|
|
|
227
|
-
//
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
296
|
+
// For iOS, use a more careful approach
|
|
297
|
+
if (Platform.OS === 'ios') {
|
|
298
|
+
try {
|
|
299
|
+
// First cancel any ongoing recognition
|
|
300
|
+
await Voice.cancel();
|
|
301
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
302
|
+
} catch (error) {
|
|
303
|
+
// Ignore cancel errors
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
// Then stop
|
|
307
|
+
await Voice.stop();
|
|
308
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
309
|
+
} catch (error) {
|
|
310
|
+
console.log('Error stopping Voice (expected on iOS):', error);
|
|
311
|
+
}
|
|
312
|
+
try {
|
|
313
|
+
// Finally destroy
|
|
314
|
+
await Voice.destroy();
|
|
315
|
+
await new Promise(resolve => setTimeout(resolve, 200));
|
|
316
|
+
} catch (error) {
|
|
317
|
+
console.log('Error destroying Voice (expected on iOS):', error);
|
|
318
|
+
}
|
|
319
|
+
} else {
|
|
320
|
+
// Android can handle the normal sequence
|
|
321
|
+
try {
|
|
322
|
+
await Voice.stop();
|
|
323
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
324
|
+
} catch (error) {
|
|
325
|
+
console.error('Error stopping Voice:', error);
|
|
326
|
+
}
|
|
327
|
+
try {
|
|
328
|
+
await Voice.destroy();
|
|
329
|
+
await new Promise(resolve => setTimeout(resolve, 300));
|
|
330
|
+
} catch (error) {
|
|
331
|
+
console.error('Error destroying Voice:', error);
|
|
332
|
+
}
|
|
242
333
|
}
|
|
243
334
|
|
|
244
335
|
// Final cleanup
|
|
@@ -1 +1 @@
|
|
|
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
|
+
{"version":3,"names":["Platform","Voice","check","PERMISSIONS","request","RESULTS","useAsyncStorage","resultCallback","partialResultCallback","silenceTimer","isCurrentlyRecording","finalResult","lastPartialResultTime","SILENCE_DURATION","PARTIAL_RESULT_THROTTLE","PERMISSION_STORAGE_KEY","permissionStatusGetter","permissionStatusSetter","setPermissionStatusHandlers","getter","setter","initVoice","onResult","onPartialResult","console","error","isAvailable","isRecognizing","log","destroy","Promise","resolve","setTimeout","e","onSpeechStart","clearTimeout","handleSilenceDetection","onSpeechRecognized","isFinal","handleFinalResult","onSpeechEnd","OS","onSpeechError","_e$error","_e$error2","_e$error3","_e$error4","isNoSpeechError","code","message","includes","isTransientIOSError","cleanupVoiceSession","_e$error5","onSpeechResults","value","length","onSpeechPartialResults","now","Date","onSpeechVolumeChanged","stopRecording","stop","stillRecognizing","startRecording","hasPermission","requestAudioPermission","start","cancel","cancelRecording","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/input.js"],"names":[],"mappings":"AAgBO;;;
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/input.js"],"names":[],"mappings":"AAgBO;;;sBAoEN;kBApF8D,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../../src/components/voice.js"],"names":[],"mappings":"AAqBO
|
|
1
|
+
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../../src/components/voice.js"],"names":[],"mappings":"AAqBO;;sBAwLN;kBA3MsD,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"welcomeInput.d.ts","sourceRoot":"","sources":["../../../src/components/welcomeInput.js"],"names":[],"mappings":"AAgBO;;;
|
|
1
|
+
{"version":3,"file":"welcomeInput.d.ts","sourceRoot":"","sources":["../../../src/components/welcomeInput.js"],"names":[],"mappings":"AAgBO;;;sBAwEN;kBAxF8D,OAAO"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export function setPermissionStatusHandlers(getter: any, setter: any): void;
|
|
2
|
-
export function initVoice(onResult: any): Promise<boolean>;
|
|
2
|
+
export function initVoice(onResult: any, onPartialResult?: null): Promise<boolean>;
|
|
3
3
|
export function startRecording(): Promise<boolean>;
|
|
4
4
|
export function stopRecording(): Promise<void>;
|
|
5
5
|
export function cancelRecording(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audioRecorder.d.ts","sourceRoot":"","sources":["../../../src/utils/audioRecorder.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audioRecorder.d.ts","sourceRoot":"","sources":["../../../src/utils/audioRecorder.js"],"names":[],"mappings":"AAwBA,4EAGC;AAGD,mFAkJC;AA4FD,mDA4BC;AAED,+CA2EC;AAED,iDASC;AAED,2DA2BC;AAiDD,iDAMC;AAED,gCAgBC"}
|
package/package.json
CHANGED
package/src/components/input.js
CHANGED
|
@@ -16,6 +16,7 @@ import { VoiceButton } from './voice';
|
|
|
16
16
|
|
|
17
17
|
export const ChatInput = ({ onProductCardClick, onAddToCartClick }) => {
|
|
18
18
|
const { handleSend, input, setInput, showModal, data } = useContext(AppContext);
|
|
19
|
+
const inputRef = useRef(null);
|
|
19
20
|
|
|
20
21
|
const handleKeyPress = ({ nativeEvent }) => {
|
|
21
22
|
if (nativeEvent.key === 'return' && !nativeEvent.shiftKey) {
|
|
@@ -37,6 +38,7 @@ export const ChatInput = ({ onProductCardClick, onAddToCartClick }) => {
|
|
|
37
38
|
<View style={styles.inputWrapper}>
|
|
38
39
|
<View style={styles.inputContainer}>
|
|
39
40
|
<TextInput
|
|
41
|
+
ref={inputRef}
|
|
40
42
|
style={styles.input}
|
|
41
43
|
value={input}
|
|
42
44
|
onChangeText={setInput}
|
|
@@ -47,9 +49,32 @@ export const ChatInput = ({ onProductCardClick, onAddToCartClick }) => {
|
|
|
47
49
|
enablesReturnKeyAutomatically={true}
|
|
48
50
|
onKeyPress={handleKeyPress}
|
|
49
51
|
onSubmitEditing={onSubmitEditing}
|
|
52
|
+
selection={undefined}
|
|
50
53
|
blurOnSubmit={false}
|
|
51
54
|
/>
|
|
52
|
-
<VoiceButton
|
|
55
|
+
<VoiceButton setInput={(text) => {
|
|
56
|
+
setInput(text);
|
|
57
|
+
// Auto-scroll to end
|
|
58
|
+
if (inputRef.current) {
|
|
59
|
+
// For iOS and Android, blur and refocus to ensure scroll
|
|
60
|
+
inputRef.current.blur();
|
|
61
|
+
setTimeout(() => {
|
|
62
|
+
if (inputRef.current) {
|
|
63
|
+
inputRef.current.focus();
|
|
64
|
+
// Set selection to end - Android sometimes needs a slight delay
|
|
65
|
+
if (Platform.OS === 'android') {
|
|
66
|
+
setTimeout(() => {
|
|
67
|
+
if (inputRef.current) {
|
|
68
|
+
inputRef.current.setSelection(text.length, text.length);
|
|
69
|
+
}
|
|
70
|
+
}, 10);
|
|
71
|
+
} else {
|
|
72
|
+
inputRef.current.setSelection(text.length, text.length);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}, 50);
|
|
76
|
+
}
|
|
77
|
+
}}/>
|
|
53
78
|
<TouchableOpacity style={styles.sendButton} onPress={() => handleSend(input)} >
|
|
54
79
|
<Ionicons name="paper-plane-outline" size={24} color='#8E8E93' />
|
|
55
80
|
</TouchableOpacity>
|