UNPKG

@replyke/core

Version:

Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.

73 lines 3.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = require("react"); const useProject_1 = __importDefault(require("../projects/useProject")); const useAxiosPrivate_1 = __importDefault(require("../../config/useAxiosPrivate")); const useSpace_1 = __importDefault(require("./useSpace")); function useUpdateSpace() { const axios = (0, useAxiosPrivate_1.default)(); const { projectId } = (0, useProject_1.default)(); const { setSpace } = (0, useSpace_1.default)(); const updateSpace = (0, react_1.useCallback)(async ({ spaceId, update }) => { if (!projectId) { throw new Error("No projectId available."); } if (!spaceId) { throw new Error("Please pass a spaceId"); } // Build FormData if files are present, otherwise use JSON const hasFiles = update.avatar || update.banner; if (hasFiles) { const formData = new FormData(); // Append regular fields if (update.name !== undefined) { formData.append("name", update.name); } if (update.slug !== undefined) { formData.append("slug", update.slug || ""); } if (update.description !== undefined) { formData.append("description", update.description || ""); } if (update.readingPermission !== undefined) { formData.append("readingPermission", update.readingPermission); } if (update.postingPermission !== undefined) { formData.append("postingPermission", update.postingPermission); } if (update.requireJoinApproval !== undefined) { formData.append("requireJoinApproval", String(update.requireJoinApproval)); } if (update.metadata !== undefined) { formData.append("metadata", JSON.stringify(update.metadata)); } // Append avatar file and options if (update.avatar) { formData.append("avatarFile", update.avatar.file); formData.append("avatarFile.options", JSON.stringify(update.avatar.options)); } // Append banner file and options if (update.banner) { formData.append("bannerFile", update.banner.file); formData.append("bannerFile.options", JSON.stringify(update.banner.options)); } const response = await axios.patch(`/${projectId}/spaces/${spaceId}`, formData, { headers: { "Content-Type": "multipart/form-data" }, }); return response.data; } else { // No files - use JSON request (backward compatibility) const response = await axios.patch(`/${projectId}/spaces/${spaceId}`, update); const updatedSpace = response.data; setSpace?.(updatedSpace); return updatedSpace; } }, [projectId, axios]); return updateSpace; } exports.default = useUpdateSpace; //# sourceMappingURL=useUpdateSpace.js.map