From b35dba9a3cdeffe364054c6d5d829121de47357e Mon Sep 17 00:00:00 2001 From: Harry Coultas Blum <5440566+mogwai@users.noreply.github.com> Date: Tue, 9 Sep 2025 07:51:18 +0100 Subject: [PATCH] **Commit message:** ``` Fix device orientation during voice memo interactions - Add isVoiceInteractionActive property to ConversationInputToolbar - Prevent autorotation during active voice memo recording/playback - Check voice interaction state in shouldAutorotate override ``` **Changes:** 1. Added `isVoiceInteractionActive` computed property to `ConversationInputToolbar` that checks if voice memo is in active state (not idle/draft) 2. Added orientation lock logic to `ConversationViewController.shouldAutorotate` that prevents rotation during voice interactions 3. Both changes work together to fix autorotation issues during voice memo usage --- Signal/ConversationView/ConversationInputToolbar.swift | 5 +++++ Signal/ConversationView/ConversationViewController.swift | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/Signal/ConversationView/ConversationInputToolbar.swift b/Signal/ConversationView/ConversationInputToolbar.swift index 8757b9ae002..05b43624141 100644 --- a/Signal/ConversationView/ConversationInputToolbar.swift +++ b/Signal/ConversationView/ConversationInputToolbar.swift @@ -1440,6 +1440,11 @@ public class ConversationInputToolbar: UIView, LinkPreviewViewDraftDelegate, Quo ensureButtonVisibility(withAnimation: true, doLayout: true) } } + + var isVoiceInteractionActive: Bool { + return voiceMemoRecordingState != .idle && voiceMemoRecordingState != .draft + } + private var voiceMemoGestureStartLocation: CGPoint? private var isShowingVoiceMemoUI: Bool = false { diff --git a/Signal/ConversationView/ConversationViewController.swift b/Signal/ConversationView/ConversationViewController.swift index 0480fc7c90b..8e52f730e6d 100644 --- a/Signal/ConversationView/ConversationViewController.swift +++ b/Signal/ConversationView/ConversationViewController.swift @@ -523,6 +523,11 @@ public final class ConversationViewController: OWSViewController { if viewState.inProgressVoiceMessage?.isRecording == true { return false } + + // Don't allow orientation changes during voice memo interactions + if inputToolbar?.isVoiceInteractionActive == true { + return false + } return super.shouldAutorotate }