diff --git a/rollup.module-exports.mjs b/rollup.module-exports.mjs index 30ee9bc09..4c277f2f4 100644 --- a/rollup.module-exports.mjs +++ b/rollup.module-exports.mjs @@ -59,6 +59,7 @@ export default { // Channel Channel: 'src/modules/Channel/index.tsx', 'Channel/context': 'src/modules/Channel/context/ChannelProvider.tsx', + 'Channel/hooks/useInitialMessagesFetch': 'src/modules/Channel/context/hooks/useInitialMessagesFetch.ts', 'Channel/utils/getMessagePartsInfo': 'src/modules/Channel/components/MessageList/getMessagePartsInfo.ts', 'Channel/utils/compareMessagesForGrouping': 'src/modules/Channel/context/compareMessagesForGrouping.ts', 'Channel/components/ChannelHeader': 'src/modules/Channel/components/ChannelHeader/index.tsx', diff --git a/src/modules/Channel/context/hooks/useInitialMessagesFetch.ts b/src/modules/Channel/context/hooks/useInitialMessagesFetch.ts index cacb5052a..3c378b70d 100644 --- a/src/modules/Channel/context/hooks/useInitialMessagesFetch.ts +++ b/src/modules/Channel/context/hooks/useInitialMessagesFetch.ts @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import React, { useCallback, useEffect } from 'react'; import { MessageListParams, ReplyType } from '@sendbird/chat/message'; import * as utils from '../utils'; @@ -34,10 +34,17 @@ function useInitialMessagesFetch( setIsScrolled, }: UseInitialMessagesFetchOptions, { logger, scrollRef, messagesDispatcher }: UseInitialMessagesFetchParams, -) { +): () => void { const channelUrl = currentGroupChannel?.url; - useEffect(() => { + /** + * useCallback(() => {}, [currentGroupChannel]) was buggy, that is why we did + * const channelUrl = currentGroupChannel && currentGroupChannel.url; + * useCallback(() => {}, [channelUrl]) + * Again, this hook is supposed to execute when currentGroupChannel changes + * The 'channelUrl' here is not the same memory reference from Conversation.props + */ + const fetchMessages = useCallback(() => { logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel); setIsScrolled(false); messagesDispatcher({ @@ -129,14 +136,12 @@ function useInitialMessagesFetch( }); } }, [channelUrl, userFilledMessageListQuery, initialTimeStamp]); - /** - * Note - useEffect(() => {}, [currentGroupChannel]) - * was buggy, that is why we did - * const channelUrl = currentGroupChannel && currentGroupChannel.url; - * useEffect(() => {}, [channelUrl]) - * Again, this hook is supposed to execute when currentGroupChannel changes - * The 'channelUrl' here is not the same memory reference from Conversation.props - */ + + useEffect(() => { + fetchMessages(); + }, [fetchMessages]); + + return fetchMessages; } export default useInitialMessagesFetch;