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