Capture dictation/TTS debug audio and show dictation errors

This commit is contained in:
Mohamed Boudra
2026-01-25 09:35:07 +07:00
parent 9d0dd8b19e
commit ccd175b4b7
12 changed files with 311 additions and 23 deletions
@@ -136,12 +136,13 @@ export function DictationOverlay({
isRecording,
isProcessing,
status,
errorText,
onCancel,
onAccept,
onAcceptAndSend,
onRetry,
onDiscard,
}: Omit<DictationControlsProps, "onStart" | "disabled">) {
}: Omit<DictationControlsProps, "onStart" | "disabled"> & { errorText?: string }) {
const { theme } = useUnistyles();
const isFailed = status === "failed";
const showActiveState = isRecording || isProcessing || isFailed;
@@ -199,6 +200,17 @@ export function DictationOverlay({
{transcript}
</Text>
)}
{isFailed ? (
<Text
numberOfLines={2}
style={[
overlayStyles.transcriptText,
{ color: theme.colors.palette.white, opacity: 0.95 },
]}
>
{errorText ? `Dictation failed: ${errorText}` : "Dictation failed. Tap retry."}
</Text>
) : null}
</View>
<View style={overlayStyles.actionButtonsContainer}>
@@ -199,6 +199,7 @@ export const MessageInput = forwardRef<MessageInputRef, MessageInputProps>(
partialTranscript: dictationPartialTranscript,
volume: dictationVolume,
duration: dictationDuration,
error: dictationError,
status: dictationStatus,
startDictation,
cancelDictation,
@@ -631,6 +632,7 @@ export const MessageInput = forwardRef<MessageInputRef, MessageInputProps>(
isRecording={isDictating}
isProcessing={isDictationProcessing}
status={dictationStatus}
errorText={dictationStatus === "failed" ? dictationError ?? undefined : undefined}
onCancel={handleCancelRecording}
onAccept={handleAcceptRecording}
onAcceptAndSend={handleAcceptAndSendRecording}