@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
34 lines • 1.23 kB
JavaScript
import { useCallback } from "react";
import useProject from "../projects/useProject";
import useAxiosPrivate from "../../config/useAxiosPrivate";
/**
* Hook to moderate an entity within a space (approve or remove).
* Requires space moderator permissions.
*
* @example
* const moderateSpaceEntity = useModerateSpaceEntity();
*
* await moderateSpaceEntity({
* spaceId: "space-uuid",
* entityId: "entity-uuid",
* action: "remove",
* reason: "Violates community guidelines"
* });
*/
function useModerateSpaceEntity() {
const { projectId } = useProject();
const axios = useAxiosPrivate();
const moderateSpaceEntity = useCallback(async ({ spaceId, entityId, action, reason, }) => {
if (!projectId) {
throw new Error("No projectId available.");
}
if (!spaceId || !entityId) {
throw new Error("spaceId and entityId are required.");
}
const response = await axios.patch(`/${projectId}/spaces/${spaceId}/entities/${entityId}/moderation`, { action, reason });
return response.data;
}, [projectId, axios]);
return moderateSpaceEntity;
}
export default useModerateSpaceEntity;
//# sourceMappingURL=useModerateSpaceEntity.js.map