Add unbind function to WebSocketContext
Change WebSocketCallbacks to have sets of callbacks instead of arrays.
Change-Id: I48439d0ff9b8188f47e0530d7d91f78c6fae8868
diff --git a/client/src/pages/ChatInterface.tsx b/client/src/pages/ChatInterface.tsx
index 12659e9..f226fec 100644
--- a/client/src/pages/ChatInterface.tsx
+++ b/client/src/pages/ChatInterface.tsx
@@ -16,7 +16,7 @@
* <https://www.gnu.org/licenses/>.
*/
import { Box, Divider, Stack } from '@mui/material';
-import { ConversationMember, Message, WebSocketMessageType } from 'jami-web-common';
+import { ConversationMember, ConversationMessage, Message, WebSocketMessageType } from 'jami-web-common';
import { useCallback, useContext, useEffect, useState } from 'react';
import { useDropzone } from 'react-dropzone';
@@ -88,12 +88,17 @@
useEffect(() => {
if (webSocket) {
- webSocket.bind(WebSocketMessageType.ConversationMessage, ({ message }) => {
+ const conversationMessageListener = ({ message }: ConversationMessage) => {
console.log('newMessage');
setMessages((messages) => addMessage(messages, message));
- });
+ };
+
+ webSocket.bind(WebSocketMessageType.ConversationMessage, conversationMessageListener);
+ return () => {
+ webSocket.unbind(WebSocketMessageType.ConversationMessage, conversationMessageListener);
+ };
}
- }, [conversationId, webSocket]);
+ }, [webSocket]);
if (isLoading) {
return <LoadingPage />;