diff --git a/apps/meteor/client/views/room/MessageList/MessageList.spec.tsx b/apps/meteor/client/views/room/MessageList/MessageList.spec.tsx index 6b92270b2ac07..dd1fcc06390ed 100644 --- a/apps/meteor/client/views/room/MessageList/MessageList.spec.tsx +++ b/apps/meteor/client/views/room/MessageList/MessageList.spec.tsx @@ -142,14 +142,12 @@ describe('MessageList scroll position', () => { update: jest.fn(), }; (RoomManager.getStore as jest.Mock).mockReturnValue(store); - mockVirtualizerHandle.findItemIndex.mockReturnValue(4); render(, { wrapper: root.build() }); expect(screen.getByTestId('message-list')).toBeInTheDocument(); - expect(mockVirtualizerHandle.findItemIndex).toHaveBeenCalledWith(123); - expect(mockVirtualizerHandle.scrollToIndex).toHaveBeenCalledWith(4, { align: 'start' }); - expect(mockVirtualizerHandle.scrollTo).not.toHaveBeenCalled(); + expect(mockVirtualizerHandle.scrollTo).toHaveBeenCalledWith(123); + expect(mockVirtualizerHandle.scrollToIndex).not.toHaveBeenCalled(); }); it('should jump to bottom if atBottom is true', () => { diff --git a/apps/meteor/client/views/room/MessageList/MessageList.tsx b/apps/meteor/client/views/room/MessageList/MessageList.tsx index 3b1e88d809cdc..ad6b68ff9ea00 100644 --- a/apps/meteor/client/views/room/MessageList/MessageList.tsx +++ b/apps/meteor/client/views/room/MessageList/MessageList.tsx @@ -85,6 +85,9 @@ export const MessageList = function MessageList({ const handlePrepend = useCallback( (offset: number) => { + if (!isRoomInitialized.current) { + return; + } // If the offset is less than 200, it means the user is reaching the top of the list, // so the prepend need to be enabled for smooth scrolling, // if the prepend is enabled when a new message is added, the list will misalign. @@ -141,14 +144,7 @@ export const MessageList = function MessageList({ setShouldJumpToBottom(false); - const index = virtualizerRef.current?.findItemIndex(store?.scroll); - if (index !== undefined) { - virtualizerRef.current?.scrollToIndex(index, { - align: 'start', - }); - } else { - virtualizerRef.current?.scrollTo(store?.scroll); - } + virtualizerRef.current?.scrollTo(store?.scroll); isAtBottom.current = false; isRoomInitialized.current = true; return;