Skip to content

Commit f33b823

Browse files
DanC5Dan Carbonellvishalnarkhede
authored
delay closeEmojiPicker event listener (#675)
* delay closeEmojiPicker event listener * 3.5.2 changelog * remove delay * add comment to explain setTimeout * adjust logic * changelog Co-authored-by: Dan Carbonell <[email protected]> Co-authored-by: Vishal Narkhede <[email protected]>
1 parent 09837a6 commit f33b823

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
# Changelog
22

3+
## [3.5.2](https://github.com/GetStream/stream-chat-react/releases/tag/v3.5.2) 2021-01-21
4+
5+
### Fix
6+
7+
- Handle emoji picker event listener race condition [#675](https://github.com/GetStream/stream-chat-react/pull/675)
8+
- Adjust style for only emoji messages [#676](https://github.com/GetStream/stream-chat-react/pull/676)
9+
310
## [3.5.1](https://github.com/GetStream/stream-chat-react/releases/tag/v3.5.1) 2021-01-19
411

512
### Fix
613

7-
- Upload PSD attachments as file [#67](https://github.com/GetStream/stream-chat-react/pull/673)
14+
- Upload PSD attachments as file [#673](https://github.com/GetStream/stream-chat-react/pull/673)
815

916
### Chore
1017

src/components/MessageInput/hooks/messageInput.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -343,19 +343,27 @@ export default function useMessageInput(props) {
343343
type: 'setEmojiPickerIsOpen',
344344
value: false,
345345
});
346-
document.removeEventListener('click', closeEmojiPicker, false);
347346
}
348347
},
349348
[emojiPickerRef],
350349
);
351350

352-
const openEmojiPicker = useCallback(() => {
351+
const openEmojiPicker = useCallback((event) => {
353352
dispatch({
354353
type: 'setEmojiPickerIsOpen',
355354
value: true,
356355
});
357-
document.addEventListener('click', closeEmojiPicker, false);
358-
}, [closeEmojiPicker]);
356+
357+
// Prevent event from bubbling to document, so the close handler is never called for this event
358+
event.stopPropagation();
359+
}, []);
360+
361+
useEffect(() => {
362+
if (state.emojiPickerIsOpen) {
363+
document.addEventListener('click', closeEmojiPicker, false);
364+
}
365+
return () => document.removeEventListener('click', closeEmojiPicker, false);
366+
}, [closeEmojiPicker, state.emojiPickerIsOpen]);
359367

360368
const onSelectEmoji = useCallback((emoji) => insertText(emoji.native), [
361369
insertText,

0 commit comments

Comments
 (0)