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.
@@ -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
- let lastPartialResultTime = 0;
27
- const SILENCE_DURATION = 1500; // 1.5 seconds of silence before stopping
28
- const PARTIAL_RESULT_THROTTLE = 100; // Throttle partial results to every 100ms
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 = e => {
76
- console.log('onSpeechStart: ', e);
77
- isCurrentlyRecording = true;
68
+ _voice.default.onSpeechStart = () => {
69
+ console.log('[onSpeechStart] Setting state to LISTENING');
70
+ state = State.LISTENING;
78
71
  finalResult = '';
79
- if (silenceTimer) {
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
- // On iOS, onSpeechEnd can fire multiple times, so check if we're still recording
102
- if (isCurrentlyRecording && finalResult) {
103
- // Don't call handleFinalResult here on iOS as it causes the error
104
- // Instead, just mark that speech ended and let silence detection handle it
105
- if (_reactNative.Platform.OS === 'ios') {
106
- console.log('iOS: Speech ended, waiting for silence detection to handle cleanup');
107
- } else {
108
- await handleFinalResult();
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 = async e => {
113
- var _e$error, _e$error2, _e$error3, _e$error4;
114
- console.error('onSpeechError: ', e);
115
- if (silenceTimer) {
116
- clearTimeout(silenceTimer);
117
- silenceTimer = null;
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
- // Check for specific error types
121
- 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"));
122
-
123
- // iOS error 1101 is often transient and related to service availability
124
- const isTransientIOSError = _reactNative.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")));
125
- await cleanupVoiceSession();
126
-
127
- // Only send error to callback for non-transient errors
128
- if (!isNoSpeechError && !isTransientIOSError && resultCallback) {
129
- var _e$error5;
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
- // Also trigger silence detection for final results
144
- handleSilenceDetection();
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
- _voice.default.onSpeechVolumeChanged = e => {
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
- console.log('Silence detected, stopping recording...');
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
- if (!isCurrentlyRecording) return;
188
-
189
- // Set flag immediately to prevent race conditions
190
- isCurrentlyRecording = false;
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
- // Send result if we have one
199
- if (finalResult && resultCallback) {
200
- resultCallback(finalResult);
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
- // Give iOS time to finish processing before cleanup
204
- if (_reactNative.Platform.OS === 'ios') {
205
- await new Promise(resolve => setTimeout(resolve, 100));
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
- // Stop recording with proper sequence
195
+ // Now stop recording (this will call Voice.stop())
196
+ console.log('[handleFinalResult] Calling stopRecording');
209
197
  await stopRecording();
210
198
  };
211
- const cleanupVoiceSession = async () => {
212
- isCurrentlyRecording = false;
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
- // Check if Voice module is available
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
- // First try to stop if still recognizing
225
- const isRecognizing = await _voice.default.isRecognizing();
226
- if (isRecognizing) {
225
+ // On Android, destroy any lingering instance before starting
226
+ if (_reactNative.Platform.OS === 'android') {
227
227
  try {
228
- await _voice.default.stop();
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.error('Voice module is not available');
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
- // Reset throttle timer
275
- lastPartialResultTime = 0;
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
- isCurrentlyRecording = true;
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
- await cleanupVoiceSession();
276
+ cleanupVoiceSession();
282
277
  return false;
283
278
  }
284
279
  }
285
280
  async function stopRecording() {
286
281
  try {
287
- if (!_voice.default) return;
288
-
289
- // Already stopped
290
- if (!isCurrentlyRecording) {
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
- // Set this first to prevent race conditions
304
- isCurrentlyRecording = false;
305
- if (silenceTimer) {
306
- clearTimeout(silenceTimer);
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
- // For iOS, use a more careful approach
311
- if (_reactNative.Platform.OS === 'ios') {
312
- try {
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
- // Force cleanup on error
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
- await cleanupVoiceSession();
307
+ cleanupVoiceSession();
362
308
  } catch (error) {
363
309
  console.error('Error canceling voice recognition:', error);
364
- await cleanupVoiceSession();
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
- // Skip checking speech recognition services which is causing errors
402
- const services = await _voice.default.getSpeechRecognitionServices();
403
- if (!services || services.length === 0) {
404
- console.error('No speech recognition services available');
405
- return false;
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
- if (!_voice.default) {
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 ? `(steps of ${currentMinPackQtyForSelectedUom})` : ''), /*#__PURE__*/React.createElement(View, {
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,