From f441ad507bcac1e0306a87db0f6eba932c2a1c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o?= <leopold.chappuis@savoirfairelinux.com> Date: Thu, 6 Feb 2025 09:41:59 -0500 Subject: [PATCH] conversation-list: ensure update on new message reception The conversation list now properly updates upon receiving a new message. Change-Id: I8f14e01ca89e0592e0d5ac0052701e8aa77dc93c --- client/src/components/ConversationList.tsx | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/client/src/components/ConversationList.tsx b/client/src/components/ConversationList.tsx index 6d19a37c..a6322cb3 100644 --- a/client/src/components/ConversationList.tsx +++ b/client/src/components/ConversationList.tsx @@ -16,10 +16,16 @@ * <https://www.gnu.org/licenses/>. */ import { Box, Stack, Typography, useTheme } from '@mui/material' +import { WebSocketMessageType } from 'jami-web-common' import { ChangeEvent, useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' -import { useConversationRequestsQuery, useConversationsSummariesQuery } from '../services/conversationQueries' +import { useWebSocketContext } from '../contexts/WebSocketProvider' +import { + useConversationRequestsQuery, + useConversationsSummariesQuery, + useRefreshConversationsSummaries, +} from '../services/conversationQueries' import ContactSearchBar from './ContactSearchBar' import ContactSearchResultList from './ContactSearchResultList' import { ConversationRequestList } from './ConversationRequestList' @@ -106,6 +112,20 @@ const ConversationTabs = () => { const SummariesTabPanel = (props: TabPanelProps) => { const conversationsSummariesQuery = useConversationsSummariesQuery() const conversationsSummaries = conversationsSummariesQuery.data || [] + const websocket = useWebSocketContext() + const refreshConversationsSummaries = useRefreshConversationsSummaries() + + useEffect(() => { + function conversationMessageListener() { + refreshConversationsSummaries() + } + + websocket.bind(WebSocketMessageType.ConversationMessage, conversationMessageListener) + + return () => { + websocket.unbind(WebSocketMessageType.ConversationMessage, conversationMessageListener) + } + }, [websocket, refreshConversationsSummaries]) return ( <TabPanel sx={{ overflowY: 'auto', height: '100%' }} {...props}> -- GitLab