From 8b930ff44d86d0cb6237d584eaf8159e7c3db7a6 Mon Sep 17 00:00:00 2001 From: Frudrax Cheng Date: Thu, 28 May 2026 09:42:31 +0800 Subject: [PATCH] fix: improve Android orientation detection in signature overlay --- src/components/SignatureOverlay.tsx | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/components/SignatureOverlay.tsx b/src/components/SignatureOverlay.tsx index f285c18..ef7c1b1 100644 --- a/src/components/SignatureOverlay.tsx +++ b/src/components/SignatureOverlay.tsx @@ -11,7 +11,8 @@ interface SignatureOverlayProps { } const isLandscapeNow = () => - typeof window !== 'undefined' && window.matchMedia('(orientation: landscape)').matches; + typeof window !== 'undefined' && + (window.matchMedia('(orientation: landscape)').matches || window.innerWidth > window.innerHeight); function SignatureOverlay({ open, onCancel, onConfirm }: SignatureOverlayProps) { const padRef = useRef(null); @@ -22,9 +23,15 @@ function SignatureOverlay({ open, onCancel, onConfirm }: SignatureOverlayProps) if (!open) return; const mq = window.matchMedia('(orientation: landscape)'); - const update = () => setLandscape(mq.matches); + const update = () => setLandscape(mq.matches || window.innerWidth > window.innerHeight); update(); - mq.addEventListener('change', update); + if (typeof mq.addEventListener === 'function') { + mq.addEventListener('change', update); + } else { + mq.addListener(update); + } + window.addEventListener('resize', update); + window.addEventListener('orientationchange', update); const orientation = (screen as Screen & { orientation?: { lock?: (o: string) => Promise; unlock?: () => void }; @@ -39,7 +46,13 @@ function SignatureOverlay({ open, onCancel, onConfirm }: SignatureOverlayProps) document.body.style.overflow = 'hidden'; return () => { - mq.removeEventListener('change', update); + if (typeof mq.removeEventListener === 'function') { + mq.removeEventListener('change', update); + } else { + mq.removeListener(update); + } + window.removeEventListener('resize', update); + window.removeEventListener('orientationchange', update); document.body.style.overflow = prevOverflow; orientation?.unlock?.(); };