Spaces:
Sleeping
Sleeping
| 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 } }), | |
| }; | |