Refactor WebSocket message interfaces
Changes:
- Replace AccountTextMessage with an extendable ContactMessage interface
- Add accountId parameter to server-side WebSocket callbacks
- Set the accountId for WebRTC messages on server-side for security
- Rename all WebRTC and SDP variables to proper camelCase or PascalCase
GitLab: #147
Change-Id: I125b5431821b03ef4d46b751eb1c13830017ccff
diff --git a/client/src/pages/ChatInterface.tsx b/client/src/pages/ChatInterface.tsx
index f226fec..f30c15a 100644
--- a/client/src/pages/ChatInterface.tsx
+++ b/client/src/pages/ChatInterface.tsx
@@ -88,12 +88,13 @@
useEffect(() => {
if (webSocket) {
- const conversationMessageListener = ({ message }: ConversationMessage) => {
+ const conversationMessageListener = (data: ConversationMessage) => {
console.log('newMessage');
- setMessages((messages) => addMessage(messages, message));
+ setMessages((messages) => addMessage(messages, data.message));
};
webSocket.bind(WebSocketMessageType.ConversationMessage, conversationMessageListener);
+
return () => {
webSocket.unbind(WebSocketMessageType.ConversationMessage, conversationMessageListener);
};
diff --git a/client/src/pages/Messenger.tsx b/client/src/pages/Messenger.tsx
index 9b28a28..c2bc1e7 100644
--- a/client/src/pages/Messenger.tsx
+++ b/client/src/pages/Messenger.tsx
@@ -16,7 +16,7 @@
* <https://www.gnu.org/licenses/>.
*/
import { Box, Stack } from '@mui/material';
-import { Contact, Conversation, WebSocketMessageType } from 'jami-web-common';
+import { Contact, Conversation, ConversationMessage, WebSocketMessageType } from 'jami-web-common';
import { useContext, useEffect, useState } from 'react';
import { Outlet } from 'react-router-dom';
@@ -66,9 +66,15 @@
return;
}
- const conversationMessageListener = () => dispatch(setRefreshFromSlice());
+ const conversationMessageListener = (_data: ConversationMessage) => {
+ dispatch(setRefreshFromSlice());
+ };
+
webSocket.bind(WebSocketMessageType.ConversationMessage, conversationMessageListener);
- return () => webSocket.unbind(WebSocketMessageType.ConversationMessage, conversationMessageListener);
+
+ return () => {
+ webSocket.unbind(WebSocketMessageType.ConversationMessage, conversationMessageListener);
+ };
}, [webSocket, dispatch]);
useEffect(() => {