File tree Expand file tree Collapse file tree 5 files changed +12
-4
lines changed
modules/Channel/components Expand file tree Collapse file tree 5 files changed +12
-4
lines changed Original file line number Diff line number Diff line change @@ -597,7 +597,7 @@ declare module "SendbirdUIKitGlobal" {
597597 hasSeparator?: boolean;
598598 chainTop?: boolean;
599599 chainBottom?: boolean;
600- handleScroll: () => void;
600+ handleScroll? : () => void;
601601 // for extending
602602 renderMessage?: (props: RenderMessageProps) => React.ReactNode | React.ReactElement;
603603 renderCustomSeparator?: (props: RenderCustomSeparatorProps) => React.ReactNode | React.ReactElement;
Original file line number Diff line number Diff line change @@ -32,7 +32,7 @@ type MessageUIProps = {
3232 hasSeparator ?: boolean ;
3333 chainTop ?: boolean ;
3434 chainBottom ?: boolean ;
35- handleScroll : ( ) => void ;
35+ handleScroll ? : ( ) => void ;
3636 // for extending
3737 renderMessage ?: ( props : RenderMessageProps ) => React . ReactElement ;
3838 renderCustomSeparator ?: ( props : RenderCustomSeparatorProps ) => React . ReactElement ;
@@ -137,6 +137,7 @@ const Message = ({
137137 } ) ) ;
138138 } , [ mentionedUserIds ] ) ;
139139
140+ // Move the messsage list scroll when the last message's height is changed by reactions
140141 useDidMountEffect ( ( ) => {
141142 if ( currentGroupChannel ?. lastMessage ?. messageId === message ?. messageId ) {
142143 handleScroll ?.( ) ;
@@ -358,6 +359,7 @@ const Message = ({
358359 setQuoteMessage = { setQuoteMessage }
359360 onReplyInThread = { onReplyInThread }
360361 onQuoteMessageClick = { onQuoteMessageClick }
362+ onMessageHeightChange = { handleScroll }
361363 />
362364 )
363365 }
Original file line number Diff line number Diff line change @@ -103,7 +103,7 @@ const MessageList: React.FC<MessageListProps> = ({
103103 }
104104 } ;
105105
106- const handleScroll = ( ) => {
106+ const handleMessageHeightChange = ( ) => {
107107 const current = scrollRef ?. current ;
108108 if ( current ) {
109109 const bottom = current . scrollHeight - current . scrollTop - current . offsetHeight ;
@@ -156,7 +156,7 @@ const MessageList: React.FC<MessageListProps> = ({
156156 return (
157157 < MessageProvider message = { m } key = { m ?. messageId } isByMe = { isByMe } >
158158 < Message
159- handleScroll = { handleScroll }
159+ handleScroll = { handleMessageHeightChange }
160160 renderMessage = { renderMessage }
161161 message = { m }
162162 hasSeparator = { hasSeparator }
Original file line number Diff line number Diff line change @@ -79,6 +79,7 @@ interface Props {
7979 setQuoteMessage ?: ( message : UserMessage | FileMessage ) => void ;
8080 onReplyInThread ?: ( props : { message : UserMessage | FileMessage } ) => void ;
8181 onQuoteMessageClick ?: ( props : { message : UserMessage | FileMessage } ) => void ;
82+ onMessageHeightChange ?: ( ) => void ;
8283}
8384export default function MessageContent ( {
8485 className,
@@ -103,6 +104,7 @@ export default function MessageContent({
103104 setQuoteMessage,
104105 onReplyInThread,
105106 onQuoteMessageClick,
107+ onMessageHeightChange,
106108} : Props ) : ReactElement {
107109 const messageTypes = getUIKitMessageTypes ( ) ;
108110 const { dateLocale } = useLocalization ( ) ;
@@ -311,6 +313,7 @@ export default function MessageContent({
311313 mouseHover = { mouseHover }
312314 isMentionEnabled = { config ?. isMentionEnabled || false }
313315 isReactionEnabled = { isReactionEnabledInChannel }
316+ onMessageHeightChange = { onMessageHeightChange }
314317 />
315318 ) }
316319 { ( getUIKitMessageType ( ( message as FileMessage ) ) === messageTypes . FILE ) && (
Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ interface Props {
2323 mouseHover ?: boolean ;
2424 isMentionEnabled ?: boolean ;
2525 isReactionEnabled ?: boolean ;
26+ onMessageHeightChange ?: ( ) => void ;
2627}
2728
2829export default function OGMessageItemBody ( {
@@ -32,6 +33,7 @@ export default function OGMessageItemBody({
3233 mouseHover = false ,
3334 isMentionEnabled = false ,
3435 isReactionEnabled = false ,
36+ onMessageHeightChange = ( ) => { /* noop */ } ,
3537} : Props ) : ReactElement {
3638 const imageRef = useRef < HTMLDivElement > ( null ) ;
3739 const { stringSet } = useContext ( LocalizationContext ) ;
@@ -85,6 +87,7 @@ export default function OGMessageItemBody({
8587 onClick = { openOGUrl }
8688 >
8789 < ImageRenderer
90+ onLoad = { onMessageHeightChange }
8891 onError = { ( ) => {
8992 try {
9093 imageRef ?. current ?. classList ?. add ( 'sendbird-og-message-item-body__og-thumbnail__empty' ) ;
You can’t perform that action at this time.
0 commit comments