| ... | @@ -24,7 +24,7 @@ import { AppText as Text } from "../../components/AppText"; | ... | @@ -24,7 +24,7 @@ import { AppText as Text } from "../../components/AppText"; |
| 24 | import { SymbolView } from "../../components/AppSymbol"; | 24 | import { SymbolView } from "../../components/AppSymbol"; |
| 25 | import { useAndroidControlSizing } from "../../components/useAndroidControlSizing"; | 25 | import { useAndroidControlSizing } from "../../components/useAndroidControlSizing"; |
| 26 | import { cn } from "../../lib/cn"; | 26 | import { cn } from "../../lib/cn"; |
| 27 | import { CompactVoiceWaveform } from "./ComposerDictationControl"; | 27 | import { CompactVoiceWaveform, DictationElapsedTime } from "./ComposerDictationControl"; |
| 28 | import { useGlobalVoiceInput } from "./VoiceInputProvider"; | 28 | import { useGlobalVoiceInput } from "./VoiceInputProvider"; |
| 29 | import { resolveVoiceComposerPresentation } from "./voiceInputPresentation"; | 29 | import { resolveVoiceComposerPresentation } from "./voiceInputPresentation"; |
| 30 | | 30 | |
| ... | @@ -114,7 +114,6 @@ function EdgeDictationPill(props: { readonly collapseRef: RefObject<(() => void) | ... | @@ -114,7 +114,6 @@ function EdgeDictationPill(props: { readonly collapseRef: RefObject<(() => void) |
| 114 | const isError = phase === "error"; | 114 | const isError = phase === "error"; |
| 115 | const openSettings = isError && voice.state.errorAction === "settings"; | 115 | const openSettings = isError && voice.state.errorAction === "settings"; |
| 116 | const label = voice.label ?? "Draft"; | 116 | const label = voice.label ?? "Draft"; |
| 117 | const elapsedLabel = `${Math.floor(voice.elapsedSeconds / 60)}:${String(voice.elapsedSeconds % 60).padStart(2, "0")}`; | | |
| 118 | | 117 | |
| 119 | return ( | 118 | return ( |
| 120 | <View pointerEvents="box-none" className="absolute inset-0"> | 119 | <View pointerEvents="box-none" className="absolute inset-0"> |
| ... | @@ -149,12 +148,10 @@ function EdgeDictationPill(props: { readonly collapseRef: RefObject<(() => void) | ... | @@ -149,12 +148,10 @@ function EdgeDictationPill(props: { readonly collapseRef: RefObject<(() => void) |
| 149 | ) : phase === "recording" ? ( | 148 | ) : phase === "recording" ? ( |
| 150 | <> | 149 | <> |
| 151 | <View className="size-2 rounded-full bg-danger-foreground" /> | 150 | <View className="size-2 rounded-full bg-danger-foreground" /> |
| 152 | <Text | 151 | <DictationElapsedTime |
| 153 | className="text-xs text-foreground" | 152 | className="text-foreground" |
| 154 | style={{ fontVariant: ["tabular-nums"] }} | 153 | seconds={voice.elapsedSeconds} |
| 155 | > | 154 | /> |
| 156 | {elapsedLabel} | | |
| 157 | </Text> | | |
| 158 | </> | 155 | </> |
| 159 | ) : ( | 156 | ) : ( |
| 160 | <ActivityIndicator size="small" colorClassName="accent-icon-muted" /> | 157 | <ActivityIndicator size="small" colorClassName="accent-icon-muted" /> |
| ... | @@ -202,12 +199,10 @@ function EdgeDictationPill(props: { readonly collapseRef: RefObject<(() => void) | ... | @@ -202,12 +199,10 @@ function EdgeDictationPill(props: { readonly collapseRef: RefObject<(() => void) |
| 202 | {phase === "recording" ? ( | 199 | {phase === "recording" ? ( |
| 203 | <> | 200 | <> |
| 204 | <CompactVoiceWaveform audioLevels={voice.audioLevels} /> | 201 | <CompactVoiceWaveform audioLevels={voice.audioLevels} /> |
| 205 | <Text | 202 | <DictationElapsedTime |
| 206 | className="text-xs text-foreground-muted" | 203 | className="text-foreground-muted" |
| 207 | style={{ fontVariant: ["tabular-nums"] }} | 204 | seconds={voice.elapsedSeconds} |
| 208 | > | 205 | /> |
| 209 | {elapsedLabel} | | |
| 210 | </Text> | | |
| 211 | <Pressable | 206 | <Pressable |
| 212 | accessibilityLabel="Finish dictation" | 207 | accessibilityLabel="Finish dictation" |
| 213 | accessibilityRole="button" | 208 | accessibilityRole="button" |