@pubuduth-aplicy/chat-ui 2.1.37 → 2.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pubuduth-aplicy/chat-ui",
3
- "version": "2.1.37",
3
+ "version": "2.1.39",
4
4
  "description": "This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.",
5
5
  "license": "ISC",
6
6
  "author": "",
@@ -25,7 +25,7 @@ const Messages = () => {
25
25
  fetchMessages(selectedConversation?._id, userId, pageParam),
26
26
  initialPageParam: 1,
27
27
  getNextPageParam: (lastPage, allPages) => {
28
- return lastPage.length ? allPages.length + 1 : undefined;
28
+ return lastPage.messages.length ? allPages.length + 1: undefined;
29
29
  },
30
30
  });
31
31
 
@@ -35,23 +35,40 @@ const Messages = () => {
35
35
  }
36
36
  }, [fetchNextPage, inView]);
37
37
 
38
- useEffect(() => {
39
- if (data) {
40
- console.log(data,'message data');
38
+ // useEffect(() => {
39
+ // if (data) {
40
+ // console.log(data,'message data');
41
41
 
42
- setMessages(data.messages);
43
- }
44
- }, [selectedConversation?._id, data]);
42
+ // setMessages(data.messages);
43
+ // }
44
+ // }, [selectedConversation?._id, data]);
45
+
46
+ useEffect(() => {
47
+ if (data) {
48
+ const allMessages = data.pages.flatMap(page => page.messages);
49
+ setMessages(allMessages);
50
+ }
51
+ }, [data]);
45
52
 
46
53
  // Listen for new messages from the server
47
54
  useEffect(() => {
48
55
  if (!socket || !selectedConversation?._id) return;
49
56
 
50
- const handleNewMessage = (newMessage: any) => {
51
- newMessage.shouldShake = true;
52
- console.log("📩 New message received:", newMessage);
53
- setMessages((prevMessages) => [...prevMessages, newMessage[1]]);
54
- };
57
+ // const handleNewMessage = (newMessage: any) => {
58
+ // newMessage.shouldShake = true;
59
+ // console.log("📩 New message received:", newMessage);
60
+ // setMessages((prevMessages) => [...prevMessages, newMessage[1]]);
61
+ // };
62
+
63
+ const handleNewMessage = (newMessage: any) => {
64
+ newMessage.shouldShake = true;
65
+ console.log("📩 New message received:", newMessage);
66
+ setMessages((prevMessages) => {
67
+ const updatedMessages = [...prevMessages, newMessage];
68
+ return [...new Map(updatedMessages.map(m => [m._id, m])).values()]; // Prevent duplicates
69
+ });
70
+ };
71
+
55
72
 
56
73
  const handleStatusUpdate = ({
57
74
  messageId,
@@ -61,7 +78,7 @@ const Messages = () => {
61
78
  status: string;
62
79
  }) => {
63
80
  setMessages((prev) =>
64
- prev.map((msg) => (msg.id === messageId ? { ...msg, status } : msg))
81
+ prev.map((msg) => (msg._id === messageId ? { ...msg, status } : msg))
65
82
  );
66
83
  };
67
84
 
@@ -75,10 +92,12 @@ const Messages = () => {
75
92
  }, [socket, setMessages, messages]);
76
93
 
77
94
  useEffect(() => {
78
- setTimeout(() => {
79
- lastMessageRef.current?.scrollIntoView({ behavior: "smooth" });
80
- }, 100);
81
- }, [messages]);
95
+ if (messages.length > 0) {
96
+ setTimeout(() => {
97
+ lastMessageRef.current?.scrollIntoView({ behavior: "smooth" });
98
+ }, 100);
99
+ }
100
+ }, [messages.length]);
82
101
 
83
102
  useEffect(() => {
84
103
  if (!socket || !messages.length) return;
@@ -113,18 +132,22 @@ const Messages = () => {
113
132
  }
114
133
  }, [fetchNextPage, isFetchingNextPage, hasNextPage]);
115
134
 
116
- useEffect(() => {
117
- const scrollContainer = scrollContainerRef.current;
118
- if (scrollContainer) {
119
- scrollContainer.addEventListener("scroll", handleScroll);
120
- return () => scrollContainer.removeEventListener("scroll", handleScroll);
121
- }
122
- }, [handleScroll]);
135
+ // useEffect(() => {
136
+ // const scrollContainer = scrollContainerRef.current;
137
+ // if (scrollContainer) {
138
+ // scrollContainer.addEventListener("scroll", handleScroll);
139
+ // return () => scrollContainer.removeEventListener("scroll", handleScroll);
140
+ // }
141
+ // }, [handleScroll]);
123
142
  console.log("📩 Messages:", messages);
124
143
  console.log("📩 Messages Length:", messages?.length);
125
144
 
126
145
  return (
127
146
  <div className="chatMessages">
147
+
148
+ <div ref={ref} className="my-8">
149
+ {isFetchingNextPage ? '<Loading isLoading={isFetchingNextPage} /> ': null}
150
+ </div>
128
151
  {messages?.length > 0 ? (
129
152
  messages?.map((message: any) =>
130
153
  // Check if the message object is valid and has an _id before rendering
@@ -140,9 +163,6 @@ const Messages = () => {
140
163
  </p>
141
164
  )}
142
165
 
143
- <div ref={ref} className="my-8">
144
- {isFetchingNextPage ? '<Loading isLoading={isFetchingNextPage} /> ': null}
145
- </div>
146
166
  </div>
147
167
  );
148
168
  };
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  // src/declarations.d.ts
2
3
  declare module '*.css' {
3
4
  const content: string;
@@ -15,3 +16,7 @@ declare module '*.svg' {
15
16
  }
16
17
 
17
18
  declare module '@pubuduth-aplicy/chat-ui';
19
+ declare module '@pubuduth-aplicy/chat-ui' {
20
+ export function ChatUI(props: any): JSX.Element;
21
+ // Define other exports and types as needed
22
+ }