summaryrefslogtreecommitdiff
path: root/client/utils/use_messages.js
diff options
context:
space:
mode:
authorLogan Hunt <loganhunt@simponic.xyz>2022-03-30 22:15:20 -0600
committerLogan Hunt <loganhunt@simponic.xyz>2022-03-30 22:15:20 -0600
commit42cf50ee7521bd751f4d0f0798276e548bb83fee (patch)
tree5b2e8877a137a9b62ea630cc69135183804131d5 /client/utils/use_messages.js
parentae0c829453d4663203887979349047850cb98626 (diff)
downloadlocchat-42cf50ee7521bd751f4d0f0798276e548bb83fee.tar.gz
locchat-42cf50ee7521bd751f4d0f0798276e548bb83fee.zip
Working
Diffstat (limited to 'client/utils/use_messages.js')
-rw-r--r--client/utils/use_messages.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/client/utils/use_messages.js b/client/utils/use_messages.js
new file mode 100644
index 0000000..e3a501e
--- /dev/null
+++ b/client/utils/use_messages.js
@@ -0,0 +1,42 @@
+import { useState, useContext, useEffect, useRef } from 'react';
+import { AuthContext } from './auth_context';
+import { io } from 'socket.io-client';
+
+export const useMessages = (chatRoom) => {
+ const [messages, setMessages] = useState([]);
+ const messageRef = useRef([]);
+ const [socket, setSocket] = useState({});
+ const [authToken] = useContext(AuthContext);
+
+ useEffect(() => {
+ if (chatRoom?.id) {
+ const socket = io({
+ query: {
+ chatRoomId: chatRoom.id,
+ },
+ auth: {
+ token: authToken,
+ },
+ });
+ socket.on('connect', () => {
+ setSocket(socket);
+ });
+ socket.on('new-message', (message) => {
+ messageRef.current.push(message);
+ setMessages([...messageRef.current]);
+ });
+ return () => {
+ socket.off('new-message');
+ socket.close();
+ };
+ }
+ }, [chatRoom]);
+
+ const sendMessage = (message) => {
+ if (socket?.emit) {
+ socket.emit('message', message);
+ }
+ };
+
+ return [messages, sendMessage];
+};