WS message received fix
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user