WS message received fix

This commit is contained in:
2026-01-07 21:14:58 +01:00
parent 5756e51b52
commit 14e8d2e9cb
2 changed files with 74 additions and 40 deletions

View File

@@ -15,9 +15,10 @@ export function useHotel() {
export function HotelProvider({ accessToken, children, resClientId}) {
const [rooms, setRooms] = useState([]);
const [conversations, setConversations] = useState([]);
const [messagesByConvId, setMessagesByConvId] = useState({});
const [users, setUsers] = useState([]);
const [usersById, setUsersById] = useState([]);
const [usersById, setUsersById] = useState({});
const [clientId, setClientId] = useState(resClientId|| null);
const tokens = JSON.parse(accessToken);
@@ -72,6 +73,16 @@ export function HotelProvider({ accessToken, children, resClientId}) {
}
function appendMessage(msg) {
setMessagesByConvId(prev => ({
...prev,
[msg.conv_id]: [
...(prev[msg.conv_id] ?? []),
msg,
],
}));
}
async function fetchConversations() {
const res = await fetch(`${API_BASE}/chat/get_conv`, {
method: "POST",
@@ -105,7 +116,16 @@ export function HotelProvider({ accessToken, children, resClientId}) {
body: JSON.stringify(payload),
});
return res.json();
const messages = await res.json();
setMessagesByConvId(prev => ({
...prev,
[conv_id]: messages,
}));
return messages;
//return res.json
}
@@ -178,6 +198,11 @@ export function HotelProvider({ accessToken, children, resClientId}) {
}
async function preloadMessages(conversations) {
for (const conv of conversations) {
await fetchMessages({ conv_id: conv.id });
}
}
// INVENTORY
@@ -255,6 +280,11 @@ export function HotelProvider({ accessToken, children, resClientId}) {
break;
}
case "chat_message": {
appendMessage(msg);
break;
}
default:
console.warn("Unhandled WS message bruuuuh:", msg);
}
@@ -274,19 +304,30 @@ export function HotelProvider({ accessToken, children, resClientId}) {
fetchRooms(),
fetchConversations(),
fetchHotelUsers(),
]);
setClientId(resClientId);
setRooms(roomsData);
setConversations(convData);
//console.log("USERS =",users)
setUsers(usersData);
}
load();
//console.log("USERS 2 =",usersById)
}, []);
useEffect(() => {
if (conversations.length === 0) return;
preloadMessages(conversations);
}, [conversations]);
useEffect(() => {
//if (!accessTokenSingle || !clientId) return;
@@ -327,6 +368,7 @@ export function HotelProvider({ accessToken, children, resClientId}) {
value={{
rooms,
conversations,
messagesByConvId,
users,
usersById,
clientId,