From 7804fbe528576f7093435571a62dddba5df38bc6 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 15 Sep 2026 12:46:15 -0400 Subject: [PATCH] Keep the voice recording UI visible while recording is in progress. --- .../org/thoughtcrime/securesms/components/InputPanel.java | 4 ++++ .../securesms/components/MicrophoneRecorderView.java | 4 ++++ .../securesms/conversation/v2/ConversationFragment.kt | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java index 669a70479e..676f6aaab1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java @@ -741,6 +741,10 @@ public class InputPanel extends ConstraintLayout return microphoneRecorderView.isRecordingLocked(); } + public boolean isRecordingInProgress() { + return microphoneRecorderView.isRecording(); + } + public void releaseRecordingLockAndSend() { microphoneRecorderView.unlockAction(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/MicrophoneRecorderView.java b/app/src/main/java/org/thoughtcrime/securesms/components/MicrophoneRecorderView.java index a1acb84c5a..f1c215c04f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/MicrophoneRecorderView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/MicrophoneRecorderView.java @@ -91,6 +91,10 @@ public final class MicrophoneRecorderView extends FrameLayout implements View.On return state == State.RUNNING_LOCKED; } + public boolean isRecording() { + return state != State.NOT_RUNNING; + } + private void lockAction() { if (state == State.RUNNING_HELD) { state = State.RUNNING_LOCKED; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 23696c51a3..cd70a76e2c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -2530,7 +2530,8 @@ class ConversationFragment : inlineAttachment.hide(false) } - draftViewModel.voiceNoteDraft != null -> { + // An in-progress recording snapshots itself into the draft, but its UI lives in quickAttachment and must stay visible. + draftViewModel.voiceNoteDraft != null && !inputPanel.isRecordingInProgress -> { buttonToggle.display(sendButton) quickAttachment.hide(true) inlineAttachment.hide(true)