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.
This commit is contained in:
@@ -495,10 +495,8 @@ export function ChatArea() {
|
|||||||
inputEl.setSelectionRange(pos, pos);
|
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(() => {
|
useEffect(() => {
|
||||||
const el = inputRef.current;
|
|
||||||
if (!el) return;
|
|
||||||
const handler = (e: KeyboardEvent) => {
|
const handler = (e: KeyboardEvent) => {
|
||||||
if (e.ctrlKey && e.key === 'e') {
|
if (e.ctrlKey && e.key === 'e') {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -568,8 +566,8 @@ export function ChatArea() {
|
|||||||
setDropdownIndex(0);
|
setDropdownIndex(0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
el.addEventListener('keydown', handler);
|
window.addEventListener('keydown', handler);
|
||||||
return () => el.removeEventListener('keydown', handler);
|
return () => window.removeEventListener('keydown', handler);
|
||||||
}, [members, currentUser, activeChannelId, sendMessage, replyToMessage, handleMentionSelect]);
|
}, [members, currentUser, activeChannelId, sendMessage, replyToMessage, handleMentionSelect]);
|
||||||
|
|
||||||
const handleSubmit = async (event: React.FormEvent) => {
|
const handleSubmit = async (event: React.FormEvent) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user