basic room display grid + buttons

This commit is contained in:
2025-12-04 12:27:31 +01:00
parent 61a7ab64d1
commit 787a248e6f
10 changed files with 241 additions and 12 deletions

View File

@@ -0,0 +1,94 @@
import { createContext, useContext, useState, useEffect } from "react";
import { API_BASE } from "../config";
const HotelContext = createContext(null);
export function useHotel() {
return useContext(HotelContext);
}
export function HotelProvider({ accessToken, children }) {
const [rooms, setRooms] = useState([]);
const [conversations, setConversations] = useState([]);
const [users, setUsers] = useState([]);
const tokens = JSON.parse(accessToken);
const accessTokenSingle = tokens[0];
// --- API FUNCTIONS ---
async function fetchRooms() {
const res = await fetch( `${API_BASE}/rooms/rooms`, {
headers: { Authorization: `Bearer ${accessTokenSingle}` },
});
return res.json();
}
async function updateRoomStatus(roomId, status) {
await fetch(`${API_BASE}/rooms/clean_db_update/${roomId}`, {
method: "PUT",
headers: {
Authorization: `Bearer ${accessTokenSingle}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ status }),
});
// refresh cached rooms
const updated = await fetchRooms();
setRooms(updated);
}
async function fetchConversations() {
const res = await fetch(`${API_BASE}/chat/get_conv`, {
method: "POST",
headers: {
Authorization: `Bearer ${accessTokenSingle}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
conv_id: 4,
timestamp: "2025-09-25 11:05:33",
}),
});
return res.json();
}
async function fetchHotelUsers() {
const res = await fetch(`${API_BASE}/chat/hotel_users`, {
headers: { Authorization: `Bearer ${accessTokenSingle}` },
});
return res.json();
}
// --- INITIAL DATA LOADING ---
useEffect(() => {
if (!accessToken) return;
async function load() {
const [roomsData, convData, usersData] = await Promise.all([
fetchRooms(),
fetchConversations(),
//fetchHotelUsers(),
]);
setRooms(roomsData);
setConversations(convData);
//setUsers(usersData);
}
load();
}, [accessToken]);
return (
<HotelContext.Provider
value={{
rooms,
conversations,
users,
updateRoomStatus,
}}
>
{children}
</HotelContext.Provider>
);
}