Skip to content

Commit c155fde

Browse files
author
Sravan S
authored
fix: MessageList - random clicks while scroll to parent(#607)
Clicks were triggered on preceding messages while scrolling This opens other thumbnail messages on the way to parent Avoid this by disabling events on MessageList fixes: https://sendbird.atlassian.net/browse/UIKIT-4048
1 parent 22787c7 commit c155fde

File tree

2 files changed

+36
-10
lines changed

2 files changed

+36
-10
lines changed

src/modules/Channel/context/hooks/useScrollToMessage.ts

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,25 @@ interface StaticParams {
1515
logger: Logger;
1616
}
1717

18+
// To prevent multiple clicks on the message in the channel while scrolling
19+
function deactivateClick(scrollRef: React.RefObject<HTMLDivElement>) {
20+
const element = scrollRef.current;
21+
const parentNode = element?.parentNode as HTMLDivElement;
22+
if (element && parentNode) {
23+
element.style.pointerEvents = 'none';
24+
parentNode.style.cursor = 'wait';
25+
}
26+
}
27+
28+
function activateClick(scrollRef: React.RefObject<HTMLDivElement>) {
29+
const element = scrollRef.current;
30+
const parentNode = element?.parentNode as HTMLDivElement;
31+
if (element && parentNode) {
32+
element.style.pointerEvents = 'auto';
33+
parentNode.style.cursor = 'auto';
34+
}
35+
}
36+
1837
function useScrollToMessage({
1938
setInitialTimeStamp,
2039
setAnimatedMessageId,
@@ -30,15 +49,22 @@ function useScrollToMessage({
3049
));
3150
setAnimatedMessageId(null);
3251
setTimeout(() => {
33-
if (isPresent) {
34-
logger.info('Channel: scroll to message - message is present');
35-
setAnimatedMessageId(messageId);
36-
scrollToRenderedMessage(scrollRef, createdAt);
37-
} else {
38-
logger.info('Channel: scroll to message - fetching older messages');
39-
setInitialTimeStamp(null);
40-
setInitialTimeStamp(createdAt);
41-
setAnimatedMessageId(messageId);
52+
try {
53+
logger.info('Channel: scroll to message - disabling mouse events');
54+
deactivateClick(scrollRef);
55+
if (isPresent) {
56+
logger.info('Channel: scroll to message - message is present');
57+
setAnimatedMessageId(messageId);
58+
scrollToRenderedMessage(scrollRef, createdAt);
59+
} else {
60+
logger.info('Channel: scroll to message - fetching older messages');
61+
setInitialTimeStamp(null);
62+
setInitialTimeStamp(createdAt);
63+
setAnimatedMessageId(messageId);
64+
}
65+
} finally {
66+
logger.info('Channel: scroll to message - enabled mouse events');
67+
activateClick(scrollRef);
4268
}
4369
});
4470
}, [

src/ui/QuoteMessage/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export default function QuoteMessage({
3333
message,
3434
userId = '',
3535
isByMe = false,
36-
className,
36+
className = '',
3737
isUnavailable = false,
3838
onClick,
3939
}: Props): ReactElement {

0 commit comments

Comments
 (0)