From d7efaf93b3b1f74d2319f19ef9b37eaf435cf8a7 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Wed, 6 May 2026 22:02:21 +0200 Subject: [PATCH] refactor(voice): Push-to-Talk-Pfad raus, nur Tap-to-Talk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit handlePressIn/Out + onResponderGrant/Release/Terminate weg. Push-to- Talk lief parallel zu Tap-to-Talk und triggerte je nach Touch-Timing unkontrollierbar. Stefan kennt das Verhalten ohnehin nicht (sagt "druecken startet, druecken stoppt") — Push-to-Talk macht UX nur unklarer ohne Mehrwert. isLongPress-Ref entfernt (war nur fuer Push-to-Talk-Discrimination). Co-Authored-By: Claude Opus 4.7 (1M context) --- android/src/components/VoiceButton.tsx | 27 -------------------------- 1 file changed, 27 deletions(-) diff --git a/android/src/components/VoiceButton.tsx b/android/src/components/VoiceButton.tsx index b645889..3839167 100644 --- a/android/src/components/VoiceButton.tsx +++ b/android/src/components/VoiceButton.tsx @@ -44,7 +44,6 @@ const VoiceButton: React.FC = ({ const [meterDb, setMeterDb] = useState(-160); const pulseAnim = useRef(new Animated.Value(1)).current; const durationTimer = useRef | null>(null); - const isLongPress = useRef(false); // Puls-Animation starten/stoppen useEffect(() => { @@ -117,31 +116,10 @@ const VoiceButton: React.FC = ({ if (disabled || isRecording) return; const started = await audioService.startRecording(true); // autoStop = true if (started) { - isLongPress.current = false; setIsRecording(true); } }, [disabled, isRecording]); - // Push-to-Talk: Lang druecken - const handlePressIn = async () => { - if (disabled || isRecording) return; - isLongPress.current = true; - const started = await audioService.startRecording(false); // kein autoStop - if (started) { - setIsRecording(true); - } - }; - - const handlePressOut = async () => { - if (!isRecording || !isLongPress.current) return; - isLongPress.current = false; - setIsRecording(false); - const result = await audioService.stopRecording(); - if (result && result.durationMs > 300) { - onRecordingComplete(result); - } - }; - // Tap-to-Talk: Einmal tippen startet mit Auto-Stop. // Guard gegen Doppel-Tap während asyncer Start/Stop. const tapBusy = useRef(false); @@ -162,7 +140,6 @@ const VoiceButton: React.FC = ({ // Aufnahme mit Auto-Stop starten const started = await audioService.startRecording(true); if (started) { - isLongPress.current = false; setIsRecording(true); } } @@ -201,10 +178,6 @@ const VoiceButton: React.FC = ({ isRecording && styles.buttonOuterRecording, { transform: [{ scale: pulseAnim }] }, ]} - onStartShouldSetResponder={() => true} - onResponderGrant={handlePressIn} - onResponderRelease={handlePressOut} - onResponderTerminate={handlePressOut} >