092_user_interface / src /services /space.service.js
anotherath's picture
update space and room
57f5158
import api from "./api";
export const spaceService = {
// Get all spaces
getAll: () => api.get("/spaces"),
// Get all spaces with rooms included
getAllWithRooms: async () => {
console.log("[spaceService.getAllWithRooms] ➡️ Calling GET /spaces/with-rooms");
const startTime = performance.now();
const response = await api.get("/spaces/with-rooms");
const elapsed = Math.round(performance.now() - startTime);
const spaces = response.data?.data || response.data?.spaces || response.data || [];
console.log(`[spaceService.getAllWithRooms] ✅ Response in ${elapsed}ms`);
console.log(" status:", response.status);
console.log(" count:", spaces.length);
console.log(" spaces (FULL):", spaces);
console.log(" raw response:", response.data);
return response;
},
// Get space by ID
getById: (id) => api.get(`/spaces/${id}`),
// Create new space
create: (data) => api.post("/spaces", data),
// Update space
update: (id, data) => api.patch(`/spaces/${id}`, data),
// Delete space
delete: (id) => api.delete(`/spaces/${id}`),
// Get rooms in a space
getRooms: (id) => api.get(`/spaces/${id}/rooms`),
// Upload space icon/image
uploadIcon: (id, file) => {
const formData = new FormData();
formData.append("icon", file);
return api.post(`/spaces/${id}/icon`, formData, {
headers: { "Content-Type": "multipart/form-data" },
});
},
// Remove space icon
removeIcon: (id) => api.delete(`/spaces/${id}/icon`),
// Get space members
getMembers: (id) => api.get(`/spaces/${id}/members`),
// Add member to space
addMember: (id, userId) => api.post(`/spaces/${id}/members`, { userId }),
// Remove member from space
removeMember: (id, userId) => api.delete(`/spaces/${id}/members/${userId}`),
// Update member role in space
updateMemberRole: (id, userId, role) =>
api.patch(`/spaces/${id}/members/${userId}/role`, { role }),
// Generate invite code/link
generateInviteCode: (id) => api.post(`/spaces/${id}/invite`),
// Join space by invite code
joinByInviteCode: (code) => api.post(`/spaces/join/${code}`),
// Get space settings
getSettings: (id) => api.get(`/spaces/${id}/settings`),
// Update space settings
updateSettings: (id, data) => api.patch(`/spaces/${id}/settings`, data),
// Leave space
leave: (id) => api.post(`/spaces/${id}/leave`),
// Get space statistics
getStats: (id) => api.get(`/spaces/${id}/stats`),
// Search spaces
search: (query) => api.get("/spaces/search", { params: { q: query } }),
};