react-native-srschat 0.1.60 → 0.1.62
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/productCard.js +1 -1
- package/lib/commonjs/components/productCard.js.map +1 -1
- package/lib/commonjs/components/voice.js +14 -17
- package/lib/commonjs/components/voice.js.map +1 -1
- package/lib/commonjs/utils/audioRecorder.js +182 -244
- package/lib/commonjs/utils/audioRecorder.js.map +1 -1
- package/lib/module/components/productCard.js +1 -1
- package/lib/module/components/productCard.js.map +1 -1
- package/lib/module/components/voice.js +14 -17
- package/lib/module/components/voice.js.map +1 -1
- package/lib/module/utils/audioRecorder.js +181 -243
- package/lib/module/utils/audioRecorder.js.map +1 -1
- package/lib/typescript/components/voice.d.ts.map +1 -1
- package/lib/typescript/utils/audioRecorder.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/productCard.js +1 -1
- package/src/components/voice.js +16 -17
- package/src/utils/audioRecorder.js +187 -264
|
@@ -14,18 +14,21 @@ exports.stopRecording = stopRecording;
|
|
|
14
14
|
var _reactNative = require("react-native");
|
|
15
15
|
var _voice = _interopRequireDefault(require("@react-native-voice/voice"));
|
|
16
16
|
var _reactNativePermissions = require("react-native-permissions");
|
|
17
|
-
var _useAsyncStorage = _interopRequireDefault(require("../hooks/useAsyncStorage"));
|
|
18
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
18
|
// audioRecorder.js
|
|
20
19
|
|
|
21
20
|
let resultCallback = null;
|
|
22
21
|
let partialResultCallback = null;
|
|
23
22
|
let silenceTimer = null;
|
|
24
|
-
let isCurrentlyRecording = false;
|
|
25
23
|
let finalResult = '';
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
24
|
+
const SILENCE_DURATION = 1500;
|
|
25
|
+
const State = {
|
|
26
|
+
IDLE: 'IDLE',
|
|
27
|
+
LISTENING: 'LISTENING',
|
|
28
|
+
FINALIZING: 'FINALIZING'
|
|
29
|
+
};
|
|
30
|
+
let state = State.IDLE;
|
|
31
|
+
let listenersBound = false;
|
|
29
32
|
|
|
30
33
|
// Add this constant for AsyncStorage key
|
|
31
34
|
const PERMISSION_STORAGE_KEY = '@voice_permission_status';
|
|
@@ -39,12 +42,13 @@ function setPermissionStatusHandlers(getter, setter) {
|
|
|
39
42
|
permissionStatusSetter = setter;
|
|
40
43
|
}
|
|
41
44
|
|
|
42
|
-
// Initialize Voice handlers
|
|
45
|
+
// Initialize Voice handlers - modified to support live transcription
|
|
43
46
|
async function initVoice(onResult, onPartialResult = null) {
|
|
44
47
|
try {
|
|
45
48
|
resultCallback = onResult;
|
|
46
|
-
partialResultCallback = onPartialResult;
|
|
49
|
+
partialResultCallback = onPartialResult; // Store partial callback
|
|
47
50
|
finalResult = '';
|
|
51
|
+
if (listenersBound) return true;
|
|
48
52
|
|
|
49
53
|
// Check if Voice module is available
|
|
50
54
|
if (!_voice.default) {
|
|
@@ -58,114 +62,103 @@ async function initVoice(onResult, onPartialResult = null) {
|
|
|
58
62
|
console.error('Speech recognition is not available on this device');
|
|
59
63
|
return false;
|
|
60
64
|
}
|
|
61
|
-
|
|
62
|
-
// Check if another recognition session is active
|
|
63
|
-
try {
|
|
64
|
-
const isRecognizing = await _voice.default.isRecognizing();
|
|
65
|
-
if (isRecognizing) {
|
|
66
|
-
console.log('Another recognition session is active, cleaning up...');
|
|
67
|
-
await _voice.default.destroy();
|
|
68
|
-
await new Promise(resolve => setTimeout(resolve, 300));
|
|
69
|
-
}
|
|
70
|
-
} catch (e) {
|
|
71
|
-
// Ignore errors checking recognition state
|
|
72
|
-
}
|
|
65
|
+
_voice.default.removeAllListeners();
|
|
73
66
|
|
|
74
67
|
// Set up all event listeners
|
|
75
|
-
_voice.default.onSpeechStart =
|
|
76
|
-
console.log('onSpeechStart
|
|
77
|
-
|
|
68
|
+
_voice.default.onSpeechStart = () => {
|
|
69
|
+
console.log('[onSpeechStart] Setting state to LISTENING');
|
|
70
|
+
state = State.LISTENING;
|
|
78
71
|
finalResult = '';
|
|
79
|
-
|
|
80
|
-
clearTimeout(silenceTimer);
|
|
81
|
-
silenceTimer = null;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// Start initial silence detection
|
|
85
|
-
handleSilenceDetection();
|
|
72
|
+
clearSilenceTimer();
|
|
86
73
|
};
|
|
87
|
-
_voice.default.onSpeechRecognized = e => {
|
|
88
|
-
console.log('onSpeechRecognized: ', e);
|
|
89
|
-
if (e.isFinal) {
|
|
90
|
-
console.log('Speech recognition final');
|
|
91
|
-
handleFinalResult();
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
_voice.default.onSpeechEnd = async e => {
|
|
95
|
-
console.log('onSpeechEnd: ', e);
|
|
96
|
-
if (silenceTimer) {
|
|
97
|
-
clearTimeout(silenceTimer);
|
|
98
|
-
silenceTimer = null;
|
|
99
|
-
}
|
|
100
74
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
75
|
+
// Optional: ignore onSpeechRecognized or just log
|
|
76
|
+
_voice.default.onSpeechRecognized = () => {};
|
|
77
|
+
_voice.default.onSpeechEnd = () => {
|
|
78
|
+
console.log('[onSpeechEnd] Speech ended, current state:', state);
|
|
79
|
+
clearSilenceTimer();
|
|
80
|
+
// Always reset to IDLE when speech ends (sessions should be considered over)
|
|
81
|
+
console.log('[onSpeechEnd] Scheduling IDLE reset');
|
|
82
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
83
|
+
setTimeout(() => {
|
|
84
|
+
console.log('[onSpeechEnd] Android timeout - setting state to IDLE');
|
|
85
|
+
state = State.IDLE;
|
|
86
|
+
}, 800); // Increased delay
|
|
87
|
+
} else {
|
|
88
|
+
console.log('[onSpeechEnd] iOS - setting state to IDLE immediately');
|
|
89
|
+
state = State.IDLE;
|
|
110
90
|
}
|
|
111
91
|
};
|
|
112
|
-
_voice.default.onSpeechError =
|
|
113
|
-
var _e$error, _e$error2
|
|
114
|
-
console.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
92
|
+
_voice.default.onSpeechError = e => {
|
|
93
|
+
var _e$error, _e$error2;
|
|
94
|
+
console.log('[onSpeechError] Error occurred, current state:', state, 'error:', e);
|
|
95
|
+
clearSilenceTimer();
|
|
96
|
+
const code = (_e$error = e.error) === null || _e$error === void 0 || (_e$error = _e$error.code) === null || _e$error === void 0 ? void 0 : _e$error.toString();
|
|
97
|
+
const msg = ((_e$error2 = e.error) === null || _e$error2 === void 0 ? void 0 : _e$error2.message) || '';
|
|
98
|
+
|
|
99
|
+
// Handle callback first
|
|
100
|
+
if (_reactNative.Platform.OS === 'android' && (code === '7' || code === '5')) {
|
|
101
|
+
if (finalResult && resultCallback) resultCallback(finalResult, null);else if (resultCallback) resultCallback(null, null);
|
|
102
|
+
} else if (!msg.includes('No speech detected') && resultCallback) {
|
|
103
|
+
resultCallback(null, msg);
|
|
104
|
+
} else if (resultCallback) {
|
|
105
|
+
resultCallback(null, null);
|
|
118
106
|
}
|
|
119
107
|
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
resultCallback(null, ((_e$error5 = e.error) === null || _e$error5 === void 0 ? void 0 : _e$error5.message) || 'Speech recognition error');
|
|
131
|
-
} else if (isTransientIOSError) {
|
|
132
|
-
console.log('Transient iOS speech recognition error, attempting to recover');
|
|
133
|
-
// Send the final result if we have one
|
|
134
|
-
if (finalResult && resultCallback) {
|
|
135
|
-
resultCallback(finalResult);
|
|
136
|
-
}
|
|
108
|
+
// Errors end the session immediately, reset to IDLE with delay
|
|
109
|
+
console.log('[onSpeechError] Scheduling IDLE reset');
|
|
110
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
111
|
+
setTimeout(() => {
|
|
112
|
+
console.log('[onSpeechError] Android timeout - setting state to IDLE');
|
|
113
|
+
state = State.IDLE;
|
|
114
|
+
}, 800); // Increased delay to match onSpeechEnd
|
|
115
|
+
} else {
|
|
116
|
+
console.log('[onSpeechError] iOS - setting state to IDLE immediately');
|
|
117
|
+
state = State.IDLE;
|
|
137
118
|
}
|
|
138
119
|
};
|
|
139
120
|
_voice.default.onSpeechResults = e => {
|
|
140
|
-
console.log('onSpeechResults: ', e);
|
|
121
|
+
console.log('[onSpeechResults] Results received, current state:', state, 'results:', e);
|
|
122
|
+
clearSilenceTimer();
|
|
141
123
|
if (e.value && e.value.length > 0) {
|
|
142
124
|
finalResult = e.value[0];
|
|
143
|
-
|
|
144
|
-
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Only call callback if we haven't already (avoid double-calling)
|
|
128
|
+
if (state === State.LISTENING && resultCallback) {
|
|
129
|
+
console.log('[onSpeechResults] Calling callback with results');
|
|
130
|
+
resultCallback(finalResult, null);
|
|
131
|
+
} else {
|
|
132
|
+
console.log('[onSpeechResults] Not calling callback - state:', state);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// On Android, we must explicitly stop to avoid session corruption
|
|
136
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
137
|
+
console.log('[onSpeechResults] Android: Explicitly calling stopRecording()');
|
|
138
|
+
stopRecording();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Results end the session, reset to IDLE with delay
|
|
142
|
+
console.log('[onSpeechResults] Scheduling IDLE reset');
|
|
143
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
144
|
+
setTimeout(() => {
|
|
145
|
+
console.log('[onSpeechResults] Android timeout - setting state to IDLE');
|
|
146
|
+
state = State.IDLE;
|
|
147
|
+
}, 800); // Increased delay
|
|
148
|
+
} else {
|
|
149
|
+
console.log('[onSpeechResults] iOS - setting state to IDLE immediately');
|
|
150
|
+
state = State.IDLE;
|
|
145
151
|
}
|
|
146
152
|
};
|
|
147
153
|
_voice.default.onSpeechPartialResults = e => {
|
|
148
|
-
console.log('onSpeechPartialResults: ', e);
|
|
149
|
-
if (silenceTimer) {
|
|
150
|
-
clearTimeout(silenceTimer);
|
|
151
|
-
}
|
|
152
154
|
if (e.value && e.value.length > 0) {
|
|
153
155
|
finalResult = e.value[0];
|
|
154
|
-
|
|
155
|
-
// Throttle partial results to prevent overwhelming the UI and speech service
|
|
156
|
-
const now = Date.now();
|
|
157
|
-
if (partialResultCallback && now - lastPartialResultTime > PARTIAL_RESULT_THROTTLE) {
|
|
158
|
-
partialResultCallback(e.value[0]);
|
|
159
|
-
lastPartialResultTime = now;
|
|
160
|
-
}
|
|
156
|
+
if (partialResultCallback) partialResultCallback(finalResult);
|
|
161
157
|
handleSilenceDetection();
|
|
162
158
|
}
|
|
163
159
|
};
|
|
164
|
-
if (_reactNative.Platform.OS === 'android') {
|
|
165
|
-
|
|
166
|
-
console.log('onSpeechVolumeChanged: ', e);
|
|
167
|
-
};
|
|
168
|
-
}
|
|
160
|
+
if (_reactNative.Platform.OS === 'android') _voice.default.onSpeechVolumeChanged = () => {};
|
|
161
|
+
listenersBound = true;
|
|
169
162
|
return true;
|
|
170
163
|
} catch (error) {
|
|
171
164
|
console.error('Error initializing Voice:', error);
|
|
@@ -177,191 +170,144 @@ const handleSilenceDetection = () => {
|
|
|
177
170
|
clearTimeout(silenceTimer);
|
|
178
171
|
}
|
|
179
172
|
silenceTimer = setTimeout(async () => {
|
|
180
|
-
|
|
181
|
-
if (isCurrentlyRecording && finalResult) {
|
|
173
|
+
if (state === State.LISTENING) {
|
|
182
174
|
await handleFinalResult();
|
|
183
175
|
}
|
|
184
176
|
}, SILENCE_DURATION);
|
|
185
177
|
};
|
|
186
178
|
const handleFinalResult = async () => {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
// Clear silence timer first
|
|
193
|
-
if (silenceTimer) {
|
|
194
|
-
clearTimeout(silenceTimer);
|
|
195
|
-
silenceTimer = null;
|
|
179
|
+
console.log('[handleFinalResult] Called, current state:', state);
|
|
180
|
+
if (state !== State.LISTENING) {
|
|
181
|
+
console.log('[handleFinalResult] State not LISTENING, returning');
|
|
182
|
+
return;
|
|
196
183
|
}
|
|
197
184
|
|
|
198
|
-
//
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
185
|
+
// Set to FINALIZING first to prevent double callbacks
|
|
186
|
+
console.log('[handleFinalResult] Setting state to FINALIZING');
|
|
187
|
+
state = State.FINALIZING;
|
|
202
188
|
|
|
203
|
-
//
|
|
204
|
-
if (
|
|
205
|
-
|
|
189
|
+
// Call the callback with results
|
|
190
|
+
if (finalResult && resultCallback) {
|
|
191
|
+
console.log('[handleFinalResult] Calling callback with result:', finalResult);
|
|
192
|
+
resultCallback(finalResult, null);
|
|
206
193
|
}
|
|
207
194
|
|
|
208
|
-
//
|
|
195
|
+
// Now stop recording (this will call Voice.stop())
|
|
196
|
+
console.log('[handleFinalResult] Calling stopRecording');
|
|
209
197
|
await stopRecording();
|
|
210
198
|
};
|
|
211
|
-
const cleanupVoiceSession =
|
|
212
|
-
|
|
199
|
+
const cleanupVoiceSession = () => {
|
|
200
|
+
console.log('[cleanupVoiceSession] Called, current state:', state);
|
|
201
|
+
finalResult = '';
|
|
202
|
+
clearSilenceTimer();
|
|
203
|
+
|
|
204
|
+
// Add delay before allowing next session on Android
|
|
205
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
206
|
+
setTimeout(() => {
|
|
207
|
+
console.log('[cleanupVoiceSession] Android timeout - setting state to IDLE');
|
|
208
|
+
state = State.IDLE;
|
|
209
|
+
}, 800);
|
|
210
|
+
} else {
|
|
211
|
+
console.log('[cleanupVoiceSession] iOS - setting state to IDLE immediately');
|
|
212
|
+
state = State.IDLE;
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
const clearSilenceTimer = () => {
|
|
213
216
|
if (silenceTimer) {
|
|
214
217
|
clearTimeout(silenceTimer);
|
|
215
218
|
silenceTimer = null;
|
|
216
219
|
}
|
|
220
|
+
};
|
|
221
|
+
async function startRecording() {
|
|
217
222
|
try {
|
|
218
|
-
|
|
219
|
-
if (!_voice.default) {
|
|
220
|
-
console.log('Voice module not available during cleanup');
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
+
console.log('[startRecording] Called, current state:', state);
|
|
223
224
|
|
|
224
|
-
//
|
|
225
|
-
|
|
226
|
-
if (isRecognizing) {
|
|
225
|
+
// On Android, destroy any lingering instance before starting
|
|
226
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
227
227
|
try {
|
|
228
|
-
|
|
229
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
230
|
-
} catch (e) {
|
|
231
|
-
console.error('Error stopping in cleanup:', e);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
// Then force destroy
|
|
236
|
-
await _voice.default.destroy();
|
|
237
|
-
await new Promise(resolve => setTimeout(resolve, 300));
|
|
238
|
-
|
|
239
|
-
// Double check and force destroy again if needed
|
|
240
|
-
const stillRecognizing = await _voice.default.isRecognizing();
|
|
241
|
-
if (stillRecognizing) {
|
|
242
|
-
await _voice.default.destroy();
|
|
243
|
-
await new Promise(resolve => setTimeout(resolve, 300));
|
|
244
|
-
}
|
|
245
|
-
} catch (error) {
|
|
246
|
-
console.error('Error in cleanupVoiceSession:', error);
|
|
247
|
-
// Final attempt to destroy on error
|
|
248
|
-
try {
|
|
249
|
-
if (_voice.default) {
|
|
228
|
+
console.log('[startRecording] Android: Proactively destroying Voice instance');
|
|
250
229
|
await _voice.default.destroy();
|
|
230
|
+
await new Promise(r => setTimeout(r, 100)); // Short delay for destroy to complete
|
|
231
|
+
} catch (e) {
|
|
232
|
+
console.log('[startRecording] Proactive destroy failed, may be okay:', e);
|
|
251
233
|
}
|
|
252
|
-
} catch (e) {
|
|
253
|
-
console.error('Final destroy attempt failed:', e);
|
|
254
234
|
}
|
|
255
|
-
}
|
|
256
|
-
finalResult = '';
|
|
257
|
-
};
|
|
258
|
-
async function startRecording() {
|
|
259
|
-
try {
|
|
260
|
-
// Check if Voice module is available
|
|
261
235
|
if (!_voice.default) {
|
|
262
|
-
console.
|
|
236
|
+
console.log('[startRecording] Voice not available');
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
if (state !== State.IDLE) {
|
|
240
|
+
console.log('[startRecording] State not IDLE, returning false');
|
|
263
241
|
return false;
|
|
264
242
|
}
|
|
265
|
-
|
|
266
|
-
// Ensure cleanup of any existing session
|
|
267
|
-
await cleanupVoiceSession();
|
|
268
243
|
const hasPermission = await requestAudioPermission();
|
|
269
244
|
if (!hasPermission) {
|
|
270
245
|
console.error('No permission to record audio');
|
|
271
246
|
return false;
|
|
272
247
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
248
|
+
const recognizing = await _voice.default.isRecognizing();
|
|
249
|
+
console.log('[startRecording] Voice.isRecognizing():', recognizing);
|
|
250
|
+
if (recognizing) {
|
|
251
|
+
console.log('[startRecording] Already recognizing, canceling first');
|
|
252
|
+
await _voice.default.cancel();
|
|
253
|
+
// Wait longer for cancel to take effect
|
|
254
|
+
await new Promise(r => setTimeout(r, 500));
|
|
255
|
+
|
|
256
|
+
// Double-check if still recognizing after cancel
|
|
257
|
+
const stillRecognizing = await _voice.default.isRecognizing();
|
|
258
|
+
console.log('[startRecording] After cancel, still recognizing:', stillRecognizing);
|
|
259
|
+
if (stillRecognizing) {
|
|
260
|
+
console.log('[startRecording] Still recognizing after cancel, stopping');
|
|
261
|
+
try {
|
|
262
|
+
await _voice.default.stop();
|
|
263
|
+
await new Promise(r => setTimeout(r, 300));
|
|
264
|
+
} catch (e) {
|
|
265
|
+
console.log('[startRecording] Error stopping:', e);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
console.log('[startRecording] Calling Voice.start()');
|
|
276
270
|
await _voice.default.start('en-US');
|
|
277
|
-
|
|
271
|
+
console.log('[startRecording] Voice.start() completed, setting state to LISTENING');
|
|
272
|
+
state = State.LISTENING;
|
|
278
273
|
return true;
|
|
279
274
|
} catch (error) {
|
|
280
275
|
console.error('Error starting voice recognition:', error);
|
|
281
|
-
|
|
276
|
+
cleanupVoiceSession();
|
|
282
277
|
return false;
|
|
283
278
|
}
|
|
284
279
|
}
|
|
285
280
|
async function stopRecording() {
|
|
286
281
|
try {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
// Still try to clean up any lingering session
|
|
292
|
-
try {
|
|
293
|
-
const isRecognizing = await _voice.default.isRecognizing();
|
|
294
|
-
if (isRecognizing) {
|
|
295
|
-
await _voice.default.stop();
|
|
296
|
-
}
|
|
297
|
-
} catch (e) {
|
|
298
|
-
// Ignore errors checking recognition state
|
|
299
|
-
}
|
|
282
|
+
console.log('[stopRecording] Called, current state:', state);
|
|
283
|
+
// Can be called from LISTENING or FINALIZING state
|
|
284
|
+
if (state !== State.LISTENING && state !== State.FINALIZING || !_voice.default) {
|
|
285
|
+
console.log('[stopRecording] Invalid state or no Voice, returning');
|
|
300
286
|
return;
|
|
301
287
|
}
|
|
302
288
|
|
|
303
|
-
//
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
silenceTimer = null;
|
|
289
|
+
// Only set to FINALIZING if not already there
|
|
290
|
+
if (state === State.LISTENING) {
|
|
291
|
+
console.log('[stopRecording] Setting state to FINALIZING');
|
|
292
|
+
state = State.FINALIZING;
|
|
308
293
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
// First cancel any ongoing recognition
|
|
314
|
-
await _voice.default.cancel();
|
|
315
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
316
|
-
} catch (error) {
|
|
317
|
-
// Ignore cancel errors
|
|
318
|
-
}
|
|
319
|
-
try {
|
|
320
|
-
// Then stop
|
|
321
|
-
await _voice.default.stop();
|
|
322
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
323
|
-
} catch (error) {
|
|
324
|
-
console.log('Error stopping Voice (expected on iOS):', error);
|
|
325
|
-
}
|
|
326
|
-
try {
|
|
327
|
-
// Finally destroy
|
|
328
|
-
await _voice.default.destroy();
|
|
329
|
-
await new Promise(resolve => setTimeout(resolve, 200));
|
|
330
|
-
} catch (error) {
|
|
331
|
-
console.log('Error destroying Voice (expected on iOS):', error);
|
|
332
|
-
}
|
|
333
|
-
} else {
|
|
334
|
-
// Android can handle the normal sequence
|
|
335
|
-
try {
|
|
336
|
-
await _voice.default.stop();
|
|
337
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
338
|
-
} catch (error) {
|
|
339
|
-
console.error('Error stopping Voice:', error);
|
|
340
|
-
}
|
|
341
|
-
try {
|
|
342
|
-
await _voice.default.destroy();
|
|
343
|
-
await new Promise(resolve => setTimeout(resolve, 300));
|
|
344
|
-
} catch (error) {
|
|
345
|
-
console.error('Error destroying Voice:', error);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
// Final cleanup
|
|
350
|
-
await cleanupVoiceSession();
|
|
294
|
+
clearSilenceTimer();
|
|
295
|
+
console.log('[stopRecording] Calling Voice.stop()');
|
|
296
|
+
await _voice.default.stop();
|
|
297
|
+
console.log('[stopRecording] Voice.stop() completed');
|
|
351
298
|
} catch (error) {
|
|
352
299
|
console.error('Error in stopRecording:', error);
|
|
353
|
-
|
|
354
|
-
await cleanupVoiceSession();
|
|
300
|
+
cleanupVoiceSession();
|
|
355
301
|
}
|
|
356
302
|
}
|
|
357
303
|
async function cancelRecording() {
|
|
358
304
|
try {
|
|
359
305
|
if (!_voice.default) return;
|
|
360
306
|
await _voice.default.cancel();
|
|
361
|
-
|
|
307
|
+
cleanupVoiceSession();
|
|
362
308
|
} catch (error) {
|
|
363
309
|
console.error('Error canceling voice recognition:', error);
|
|
364
|
-
|
|
310
|
+
cleanupVoiceSession();
|
|
365
311
|
}
|
|
366
312
|
}
|
|
367
313
|
async function requestAudioPermission() {
|
|
@@ -398,11 +344,16 @@ async function requestAndroidPermission() {
|
|
|
398
344
|
return false;
|
|
399
345
|
}
|
|
400
346
|
|
|
401
|
-
//
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
347
|
+
// Check speech recognition services
|
|
348
|
+
try {
|
|
349
|
+
const services = await _voice.default.getSpeechRecognitionServices();
|
|
350
|
+
if (!services || services.length === 0) {
|
|
351
|
+
console.error('No speech recognition services available');
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
} catch (e) {
|
|
355
|
+
console.log('Error checking speech services:', e);
|
|
356
|
+
// Continue anyway - some devices report error but work fine
|
|
406
357
|
}
|
|
407
358
|
return true;
|
|
408
359
|
} catch (error) {
|
|
@@ -439,19 +390,6 @@ function resetStoredPermission() {
|
|
|
439
390
|
return false;
|
|
440
391
|
}
|
|
441
392
|
function cleanup() {
|
|
442
|
-
|
|
443
|
-
console.log('Voice module not available during cleanup');
|
|
444
|
-
return;
|
|
445
|
-
}
|
|
446
|
-
_voice.default.destroy().then(() => {
|
|
447
|
-
_voice.default.removeAllListeners();
|
|
448
|
-
cleanupVoiceSession();
|
|
449
|
-
}).catch(error => {
|
|
450
|
-
console.error('Error in cleanup:', error);
|
|
451
|
-
// Try one more time
|
|
452
|
-
if (_voice.default) {
|
|
453
|
-
_voice.default.destroy().catch(e => console.error('Final cleanup attempt failed:', e));
|
|
454
|
-
}
|
|
455
|
-
});
|
|
393
|
+
cleanupVoiceSession();
|
|
456
394
|
}
|
|
457
395
|
//# sourceMappingURL=audioRecorder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_voice","_interopRequireDefault","_reactNativePermissions","_useAsyncStorage","e","__esModule","default","resultCallback","partialResultCallback","silenceTimer","isCurrentlyRecording","finalResult","lastPartialResultTime","SILENCE_DURATION","PARTIAL_RESULT_THROTTLE","PERMISSION_STORAGE_KEY","permissionStatusGetter","permissionStatusSetter","setPermissionStatusHandlers","getter","setter","initVoice","onResult","onPartialResult","Voice","console","error","isAvailable","isRecognizing","log","destroy","Promise","resolve","setTimeout","onSpeechStart","clearTimeout","handleSilenceDetection","onSpeechRecognized","isFinal","handleFinalResult","onSpeechEnd","Platform","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","request","PERMISSIONS","ANDROID","RECORD_AUDIO","RESULTS","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":["_reactNative","require","_voice","_interopRequireDefault","_reactNativePermissions","e","__esModule","default","resultCallback","partialResultCallback","silenceTimer","finalResult","SILENCE_DURATION","State","IDLE","LISTENING","FINALIZING","state","listenersBound","PERMISSION_STORAGE_KEY","permissionStatusGetter","permissionStatusSetter","setPermissionStatusHandlers","getter","setter","initVoice","onResult","onPartialResult","Voice","console","error","isAvailable","removeAllListeners","onSpeechStart","log","clearSilenceTimer","onSpeechRecognized","onSpeechEnd","Platform","OS","setTimeout","onSpeechError","_e$error","_e$error2","code","toString","msg","message","includes","onSpeechResults","value","length","stopRecording","onSpeechPartialResults","handleSilenceDetection","onSpeechVolumeChanged","clearTimeout","handleFinalResult","cleanupVoiceSession","startRecording","destroy","Promise","r","hasPermission","requestAudioPermission","recognizing","isRecognizing","cancel","stillRecognizing","stop","start","cancelRecording","storedPermission","permissionResult","requestAndroidPermission","requestIOSPermission","micPermission","request","PERMISSIONS","ANDROID","RECORD_AUDIO","RESULTS","GRANTED","services","getSpeechRecognitionServices","IOS","MICROPHONE","speechPermission","SPEECH_RECOGNITION","resetStoredPermission","cleanup"],"sourceRoot":"../../../src","sources":["utils/audioRecorder.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -369,7 +369,7 @@ export const ProductCard = ({
|
|
|
369
369
|
style: styles.quantityContainer
|
|
370
370
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
371
371
|
style: styles.inputLabel
|
|
372
|
-
}, "Qty ", currentMinPackQtyForSelectedUom > 1 ? `(
|
|
372
|
+
}, "Qty ", currentMinPackQtyForSelectedUom > 1 ? `(Sold in multiples of ${currentMinPackQtyForSelectedUom})` : ''), /*#__PURE__*/React.createElement(View, {
|
|
373
373
|
style: styles.quantityInputContainer
|
|
374
374
|
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
375
375
|
style: styles.quantityButton,
|