Skip to content

Commit a8e3803

Browse files
committed
fix: hooks refactor
1 parent 350a99a commit a8e3803

File tree

3 files changed

+18
-57
lines changed

3 files changed

+18
-57
lines changed

package/src/components/MessageList/MessageFlashList.tsx

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { Channel, Event, LocalMessage, MessageResponse } from 'stream-chat'
66

77
import { useMessageFlashList } from './hooks/useMessageFlashList';
88

9-
import { useShouldScrollToRecentOnNewOwnMessageFlashList } from './hooks/useShouldScrollToRecentOnNewOwnMessageFlashList';
9+
import { useShouldScrollToRecentOnNewOwnMessage } from './hooks/useShouldScrollToRecentOnNewOwnMessage';
1010
import { InlineLoadingMoreIndicator } from './InlineLoadingMoreIndicator';
1111
import { InlineLoadingMoreRecentIndicator } from './InlineLoadingMoreRecentIndicator';
1212
import { InlineLoadingMoreRecentThreadIndicator } from './InlineLoadingMoreRecentThreadIndicator';
@@ -33,7 +33,7 @@ import {
3333
PaginatedMessageListContextValue,
3434
usePaginatedMessageListContext,
3535
} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';
36-
import { ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';
36+
import { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';
3737
import { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';
3838

3939
import { useStableCallback } from '../../hooks';
@@ -265,13 +265,20 @@ const MessageListFlashListWithContext = (props: MessageListFlashListPropsWithCon
265265

266266
const messageListLengthBeforeUpdate = useRef(0);
267267
const channelResyncScrollSet = useRef<boolean>(true);
268+
const { theme } = useTheme();
268269

269270
const {
270-
theme: {
271-
colors: { white_snow },
272-
messageList: { container, contentContainer, listContainer },
273-
},
274-
} = useTheme();
271+
colors: { white_snow },
272+
messageList: { container, contentContainer, listContainer },
273+
} = theme;
274+
275+
const myMessageThemeString = useMemo(() => JSON.stringify(myMessageTheme), [myMessageTheme]);
276+
277+
const modifiedTheme = useMemo(
278+
() => mergeThemes({ style: myMessageTheme, theme }),
279+
// eslint-disable-next-line react-hooks/exhaustive-deps
280+
[myMessageThemeString, theme],
281+
);
275282

276283
const { dateSeparatorsRef, messageGroupStylesRef, processedMessageList, rawMessageList } =
277284
useMessageFlashList({
@@ -290,7 +297,7 @@ const MessageListFlashListWithContext = (props: MessageListFlashListPropsWithCon
290297

291298
const messageListLengthAfterUpdate = processedMessageList.length;
292299

293-
const shouldScrollToRecentOnNewOwnMessageRef = useShouldScrollToRecentOnNewOwnMessageFlashList(
300+
const shouldScrollToRecentOnNewOwnMessageRef = useShouldScrollToRecentOnNewOwnMessage(
294301
rawMessageList,
295302
client.userID,
296303
);
@@ -301,7 +308,6 @@ const MessageListFlashListWithContext = (props: MessageListFlashListPropsWithCon
301308
);
302309

303310
const maintainVisibleContentPosition = useMemo(() => {
304-
console.log('autoScrollToRecent', autoScrollToRecent);
305311
return {
306312
autoscrollToBottomThreshold: autoScrollToRecent || threadList ? 10 : undefined,
307313
startRenderingFromBottom: true,
@@ -452,9 +458,6 @@ const MessageListFlashListWithContext = (props: MessageListFlashListPropsWithCon
452458
const didMergeMessageSetsWithNoUpdates =
453459
latestNonCurrentMessageBeforeUpdate?.id === latestCurrentMessageAfterUpdate.id;
454460

455-
// TODO: FIX THIS
456-
// setAutoScrollToRecent(!didMergeMessageSetsWithNoUpdates);
457-
458461
if (!didMergeMessageSetsWithNoUpdates) {
459462
const shouldScrollToRecentOnNewOwnMessage = shouldScrollToRecentOnNewOwnMessageRef.current();
460463

@@ -693,7 +696,7 @@ const MessageListFlashListWithContext = (props: MessageListFlashListPropsWithCon
693696
{message.type === 'system' ? (
694697
<MessageSystem message={message} />
695698
) : wrapMessageInTheme ? (
696-
<ThemeProvider>
699+
<ThemeProvider mergedStyle={modifiedTheme}>
697700
<View testID={`message-list-item-${index}`}>
698701
{renderDateSeperator}
699702
{renderMessage}
@@ -725,6 +728,7 @@ const MessageListFlashListWithContext = (props: MessageListFlashListPropsWithCon
725728
highlightedMessageId,
726729
lastReceivedId,
727730
messageGroupStylesRef,
731+
modifiedTheme,
728732
myMessageTheme,
729733
onThreadSelect,
730734
shouldShowUnreadUnderlay,

package/src/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export function useShouldScrollToRecentOnNewOwnMessage(
3131
if (rawMessageList && rawMessageList.length) {
3232
if (!initialFocusRegistered.current) {
3333
initialFocusRegistered.current = true;
34-
const lastMessage = rawMessageList[0];
34+
const lastMessage = rawMessageList[rawMessageList.length - 1];
3535
if (lastMessage && lastMessage.user?.id === currentUserId) {
3636
lastFocusedOwnMessageId.current = lastMessage.id;
3737
}

package/src/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessageFlashList.ts

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)