diff --git a/app/features/chat/ChatProvider.tsx b/app/features/chat/ChatProvider.tsx index 90ff90066..a95d6db2b 100644 --- a/app/features/chat/ChatProvider.tsx +++ b/app/features/chat/ChatProvider.tsx @@ -486,6 +486,8 @@ function ChatProviderInner({ unsubscribe, setRooms, setMessagesByRoom, + requestHistory, + messagesByRoom, }); const contextValue = React.useMemo( @@ -542,6 +544,8 @@ function useChatRouteSync({ unsubscribe, setRooms, setMessagesByRoom, + requestHistory, + messagesByRoom, }: { rooms: RoomInfo[]; userId: number; @@ -555,6 +559,8 @@ function useChatRouteSync({ setMessagesByRoom: React.Dispatch< React.SetStateAction> >; + requestHistory: (chatCode: string) => void; + messagesByRoom: Record; }) { const rawChatCode = useCurrentRouteChatCode(); const chatCodesKey = rawChatCode @@ -615,6 +621,9 @@ function useChatRouteSync({ if (routeChatCodeChanged) { setActiveRoom(chatCodes[0]); + if (!messagesByRoom[chatCodes[0]]) { + requestHistory(chatCodes[0]); + } if (layoutSize === "desktop") { setChatOpen(true); } @@ -632,6 +641,9 @@ function useChatRouteSync({ if (matchedRoom) { setActiveRoom(matchedRoom.chatCode); + if (!messagesByRoom[matchedRoom.chatCode]) { + requestHistory(matchedRoom.chatCode); + } if (layoutSize === "desktop") { setChatOpen(true); } @@ -652,6 +664,8 @@ function useChatRouteSync({ unsubscribe, setRooms, setMessagesByRoom, + requestHistory, + messagesByRoom, ]); }