+
setText(e.target.value)}
placeholder="Type a message…"
/>
-
+
);
}
+function AddUsersMenu({ convId, usersById, fetchConvUsers, onValidate, onClose }) {
+ const [selected, setSelected] = useState(new Set());
+
+ //new function to fetch already present users in the conv
+ //let current = fetchConvUsers(convId);
+
+ const toggleUser = (id) => {
+ setSelected(prev => {
+ const next = new Set(prev);
+ next.has(id) ? next.delete(id) : next.add(id);
+ return next;
+ });
+ };
+
+ const handleValidate = () => {
+ if (selected.size === 0) return;
+
+ onValidate({
+ conv_id: convId,
+ users: [...selected],
+ });
+
+ onClose();
+ };
+
+
+ useEffect(() => {
+ async function load() {
+ console.log("fetching conv users ar :", convId);
+ const ids = await fetchConvUsers({ conv_id: convId });
+ setSelected(new Set(ids));
+ }
+ load();
+ }, [convId, fetchConvUsers]);
+
+ return (
+
+
Add users
+
+
+
+
+
+
+ );
+}
+
+
function ConvCard({id, title, onOpenConv}) {
return(
@@ -77,21 +171,43 @@ function ConvCard({id, title, onOpenConv}) {
)
}
-function MessagesBox({ messages }) {
+function MessagesBox({ conv_id, fetchMessages, usersById, clientId }) {
+
+ const [messages, setMessages] = useState([]);
+
+ useEffect(() => {
+ async function load() {
+ const msg = await fetchMessages({ conv_id });
+ setMessages(msg);
+ }
+ load();
+ }, [conv_id]);
+
if (!messages || messages.length === 0) {
return
No messages
}
- console.log("FETCH RESULT =", messages);
+ //console.log("FETCH RESULT =", messages);
return (
- {messages.map(msg => (
-
-
Sender: {msg.sender_id}
-
{msg.content}
-
{msg.sent_at}
-
- ))}
+ {messages
+ .slice() // don’t mutate state
+ .sort((a, b) => new Date(a.sent_at) - new Date(b.sent_at))
+ .map(msg => {
+ const isMine = msg.sender_id === clientId
+
+ return(
+
+
+ Sender:{" "}
+ {usersById[msg.sender_id] ?? "Unknown user"}
+
+
{msg.content}
+
{msg.sent_at}
+
+ )
+ })}
);
diff --git a/src/config.js b/src/config.js
index 4bcc492..adf47de 100644
--- a/src/config.js
+++ b/src/config.js
@@ -1 +1,2 @@
+//export const API_BASE = "http://79.137.75.155:8080";
export const API_BASE = "http://localhost:7080";
\ No newline at end of file