From 3002626ac494badbe7957eb5c40d037dd1ad6076 Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Thu, 2 Jul 2026 13:03:41 -0400 Subject: [PATCH] fix: use window.addEventListener for dropdown keyboard nav inputRef-based listener never fired (ref null at effect time or element-level listeners don't catch events in this React setup). Switched to window.addEventListener matching the pattern every other keyboard handler in this codebase already uses. --- web/src/components/ChatArea.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/web/src/components/ChatArea.tsx b/web/src/components/ChatArea.tsx index af62f42..258616a 100644 --- a/web/src/components/ChatArea.tsx +++ b/web/src/components/ChatArea.tsx @@ -495,10 +495,8 @@ export function ChatArea() { inputEl.setSelectionRange(pos, pos); }; - // ponytail: stable keydown handler via addEventListener avoids stale closure issues + // ponytail: window listener matches existing pattern in codebase (CommandDropdown, modals) useEffect(() => { - const el = inputRef.current; - if (!el) return; const handler = (e: KeyboardEvent) => { if (e.ctrlKey && e.key === 'e') { e.preventDefault(); @@ -568,8 +566,8 @@ export function ChatArea() { setDropdownIndex(0); } }; - el.addEventListener('keydown', handler); - return () => el.removeEventListener('keydown', handler); + window.addEventListener('keydown', handler); + return () => window.removeEventListener('keydown', handler); }, [members, currentUser, activeChannelId, sendMessage, replyToMessage, handleMentionSelect]); const handleSubmit = async (event: React.FormEvent) => {