From dbb9eea25f80e7984a112409863be5191af5bf5e Mon Sep 17 00:00:00 2001 From: Logan Hunt Date: Fri, 1 Apr 2022 16:04:00 -0600 Subject: Added way too much stuff --- client/utils/use_chat.js | 48 ++++++++++++++++++++++++++++++++++++++++++++ client/utils/use_messages.js | 42 -------------------------------------- 2 files changed, 48 insertions(+), 42 deletions(-) create mode 100644 client/utils/use_chat.js delete mode 100644 client/utils/use_messages.js (limited to 'client/utils') diff --git a/client/utils/use_chat.js b/client/utils/use_chat.js new file mode 100644 index 0000000..d5250bf --- /dev/null +++ b/client/utils/use_chat.js @@ -0,0 +1,48 @@ +import { useState, useContext, useEffect, useRef } from 'react'; +import { AuthContext } from './auth_context'; +import { io } from 'socket.io-client'; + +export const useChat = (chatRoom) => { + const [messages, setMessages] = useState([]); + const [connections, setConnections] = useState([]); + const messageRef = useRef([]); + const connectionsRef = 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]); + }); + socket.on('userlist', ({ users }) => { + connectionsRef.current = users; + setConnections([...connectionsRef.current]); + }); + return () => { + socket.off('new-message'); + socket.close(); + }; + } + }, [chatRoom]); + + const sendMessage = (message) => { + if (socket?.emit) { + socket.emit('message', message); + } + }; + + return [connections, messages, sendMessage]; +}; diff --git a/client/utils/use_messages.js b/client/utils/use_messages.js deleted file mode 100644 index e3a501e..0000000 --- a/client/utils/use_messages.js +++ /dev/null @@ -1,42 +0,0 @@ -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]; -}; -- cgit v1.2.3-70-g09d2