Skip to content

Commit d363d05

Browse files
committed
chat ui fixes
1 parent 7b00d15 commit d363d05

2 files changed

Lines changed: 175 additions & 92 deletions

File tree

frontend/src/components/ScrollableChat.js

Lines changed: 67 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Avatar } from "@chakra-ui/avatar";
22
import { Tooltip } from "@chakra-ui/tooltip";
3+
import { Spinner } from "@chakra-ui/react";
34
import ScrollableFeed from "react-scrollable-feed";
45
import {
56
isLastMessage,
@@ -9,55 +10,79 @@ import {
910
} from "../config/ChatLogics";
1011
import { ChatState } from "../Context/ChatProvider";
1112

12-
const ScrollableChat = ({ messages }) => {
13+
const ScrollableChat = ({ messages, pendingMessages = [] }) => {
1314
const { user } = ChatState();
1415

16+
// Combine regular messages with pending messages
17+
const allMessages = [...messages, ...pendingMessages];
18+
1519
return (
1620
<ScrollableFeed>
17-
{messages &&
18-
messages.map((m, i) => (
19-
<div
20-
style={{ display: "flex", backgroundColor: "#0f1924", padding: "1px 10px" }}
21-
key={m._id}
22-
>
23-
{(isSameSender(messages, m, i, user._id) ||
24-
isLastMessage(messages, i, user._id)) && (
25-
<Tooltip label={m.sender.name} placement="bottom-start" hasArrow>
26-
<Avatar
27-
mt="7px"
28-
mr={1}
29-
size="sm"
30-
cursor="pointer"
31-
name={m.sender.name}
32-
src={m.sender.pic}
33-
/>
34-
</Tooltip>
35-
)}
36-
<span
21+
<div className=" bg-[#0f1924] ">
22+
{allMessages &&
23+
allMessages.map((m, i) => (
24+
<div
3725
style={{
38-
backgroundColor: `${
39-
m.sender._id === user._id ? " #153454ff" : "#21364a"
40-
}`,
41-
marginLeft: isSameSenderMargin(messages, m, i, user._id),
42-
marginTop: isSameUser(messages, m, i, user._id) ? 3 : 10,
43-
borderBottomRightRadius: "10px",
44-
borderBottomLeftRadius: "10px",
45-
borderTopLeftRadius: `${
46-
m.sender._id === user._id ? "10px" : "0"
47-
}`,
48-
borderTopRightRadius: `${
49-
m.sender._id !== user._id ? "10px" : "0"
50-
}`,
51-
52-
padding: "5px 15px",
53-
maxWidth: "75%",
54-
color: "white",
26+
display: "flex",
27+
backgroundColor: "#0f1924",
28+
padding: "1px 10px",
5529
}}
30+
key={m._id}
5631
>
57-
{m.content}
58-
</span>
59-
</div>
60-
))}
32+
{(isSameSender(allMessages, m, i, user._id) ||
33+
isLastMessage(allMessages, i, user._id)) && (
34+
<Tooltip
35+
label={m.sender.name}
36+
placement="bottom-start"
37+
hasArrow
38+
>
39+
<Avatar
40+
mt="7px"
41+
mr={1}
42+
size="sm"
43+
cursor="pointer"
44+
name={m.sender.name}
45+
src={m.sender.pic}
46+
/>
47+
</Tooltip>
48+
)}
49+
<span
50+
style={{
51+
backgroundColor: `${
52+
m.sender._id === user._id ? " #153454ff" : "#21364a"
53+
}`,
54+
marginLeft: isSameSenderMargin(allMessages, m, i, user._id),
55+
marginTop: isSameUser(allMessages, m, i, user._id) ? 3 : 10,
56+
borderBottomRightRadius: "10px",
57+
borderBottomLeftRadius: "10px",
58+
borderTopLeftRadius: `${
59+
m.sender._id === user._id ? "10px" : "0"
60+
}`,
61+
borderTopRightRadius: `${
62+
m.sender._id !== user._id ? "10px" : "0"
63+
}`,
64+
padding: "5px 15px",
65+
maxWidth: "75%",
66+
color: "white",
67+
opacity: m.isPending ? 0.6 : 1,
68+
display: "flex",
69+
alignItems: "center",
70+
gap: "8px",
71+
}}
72+
>
73+
{m.content}
74+
{m.isPending && (
75+
<Spinner
76+
size="xs"
77+
color="white"
78+
thickness="2px"
79+
speed="0.8s"
80+
/>
81+
)}
82+
</span>
83+
</div>
84+
))}
85+
</div>
6186
</ScrollableFeed>
6287
);
6388
};

0 commit comments

Comments
 (0)