diff options
author | Logan Hunt <loganhunt@simponic.xyz> | 2022-03-30 22:15:20 -0600 |
---|---|---|
committer | Logan Hunt <loganhunt@simponic.xyz> | 2022-03-30 22:15:20 -0600 |
commit | 42cf50ee7521bd751f4d0f0798276e548bb83fee (patch) | |
tree | 5b2e8877a137a9b62ea630cc69135183804131d5 /client/utils/use_messages.js | |
parent | ae0c829453d4663203887979349047850cb98626 (diff) | |
download | locchat-42cf50ee7521bd751f4d0f0798276e548bb83fee.tar.gz locchat-42cf50ee7521bd751f4d0f0798276e548bb83fee.zip |
Working
Diffstat (limited to 'client/utils/use_messages.js')
-rw-r--r-- | client/utils/use_messages.js | 42 |
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]; +}; |