narinder1231 commited on
Commit
38c6487
·
1 Parent(s): a81564e

Refactor useWebSocket hook to remove conversationId parameter and add connectWebSocket function for handling WebSocket connection and authentication

Browse files
Files changed (1) hide show
  1. src/hooks/useTextWebhook.ts +25 -6
src/hooks/useTextWebhook.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { useState, useEffect, useRef } from "react";
2
 
3
  import { IMessage } from "../interfaces/message";
4
  import { conversationWebSocket } from "../services/websockets/conversation";
5
 
6
- const useWebSocket = (conversationId: string) => {
7
  const [messages, setMessages] = useState<IMessage[]>([]);
8
  const wsRef = useRef<WebSocket | null>(null);
9
 
10
- useEffect(() => {
11
  const ws = conversationWebSocket({ conversationId, modality: "text" });
12
 
13
  wsRef.current = ws;
@@ -17,11 +17,30 @@ const useWebSocket = (conversationId: string) => {
17
  setMessages((prevMessages) => [...prevMessages, { text: message, sender: "bot" }]);
18
  };
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  return () => {
21
- ws.close();
22
  wsRef.current = null;
23
  };
24
- }, [conversationId]);
25
 
26
  const sendMessage = (message: string) => {
27
  if (message.trim()) {
@@ -32,7 +51,7 @@ const useWebSocket = (conversationId: string) => {
32
  }
33
  };
34
 
35
- return { messages, sendMessage };
36
  };
37
 
38
  export default useWebSocket;
 
1
+ import { useState, useEffect, useRef, useCallback } from "react";
2
 
3
  import { IMessage } from "../interfaces/message";
4
  import { conversationWebSocket } from "../services/websockets/conversation";
5
 
6
+ const useWebSocket = () => {
7
  const [messages, setMessages] = useState<IMessage[]>([]);
8
  const wsRef = useRef<WebSocket | null>(null);
9
 
10
+ const connectWebSocket = useCallback((conversationId: string) => {
11
  const ws = conversationWebSocket({ conversationId, modality: "text" });
12
 
13
  wsRef.current = ws;
 
17
  setMessages((prevMessages) => [...prevMessages, { text: message, sender: "bot" }]);
18
  };
19
 
20
+ ws.onopen = () => {
21
+ const auth_token = localStorage.getItem("auth_token");
22
+ const token = `Bearer ${auth_token}`;
23
+ ws.send(
24
+ JSON.stringify({
25
+ type: "headers",
26
+ headers: {
27
+ Token: token,
28
+ },
29
+ })
30
+ );
31
+ };
32
+
33
+ ws.onclose = () => {
34
+ wsRef.current = null;
35
+ };
36
+ }, []);
37
+
38
+ useEffect(() => {
39
  return () => {
40
+ wsRef.current?.close();
41
  wsRef.current = null;
42
  };
43
+ }, []);
44
 
45
  const sendMessage = (message: string) => {
46
  if (message.trim()) {
 
51
  }
52
  };
53
 
54
+ return { messages, sendMessage, connectWebSocket };
55
  };
56
 
57
  export default useWebSocket;