ChatEditor: fix ref reference

Fixes urbit/landscape#1059
This commit is contained in:
Hunter Miller 2021-07-21 12:48:30 -05:00
parent 54f50e9146
commit f40848eb1f

View File

@ -136,7 +136,11 @@ const ChatEditor = React.forwardRef<CodeMirrorShim, ChatEditorProps>(({ inCodeMo
setMessage
} = useChatStore();
function onKeyPress(e) {
const onKeyPress = (e: KeyboardEvent, editor: CodeMirrorShim) => {
if (!editor) {
return;
}
const focusedTag = document.activeElement?.nodeName?.toLowerCase();
const shouldCapture = !(focusedTag === 'textarea' || focusedTag === 'input' || e.metaKey || e.ctrlKey);
if(/^[a-z]|[A-Z]$/.test(e.key) && shouldCapture) {
@ -145,13 +149,14 @@ const ChatEditor = React.forwardRef<CodeMirrorShim, ChatEditorProps>(({ inCodeMo
if(e.key === 'Escape') {
editor.getInputField().blur();
}
}
};
useEffect(() => {
document.addEventListener('keydown', onKeyPress);
const focusListener = (e: KeyboardEvent) => onKeyPress(e, editorRef.current);
document.addEventListener('keydown', focusListener);
return () => {
document.removeEventListener('keydown', onKeyPress);
document.removeEventListener('keydown', focusListener);
};
}, []);