@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
43 lines • 1.5 kB
JavaScript
import { useCallback } from "react";
import useProject from "../projects/useProject";
import useAxiosPrivate from "../../config/useAxiosPrivate";
/**
* Hook to handle entity reports at the space level
* Space moderators can: remove entity, ban user from space, dismiss
*
* @example
* const handleSpaceEntityReport = useHandleSpaceEntityReport();
*
* await handleSpaceEntityReport({
* spaceId: "space-uuid",
* reportId: "report-uuid",
* entityId: "entity-uuid",
* actions: ["remove-entity", "ban-user"],
* summary: "Removed spam content and banned user",
* userId: "user-uuid",
* reason: "Spamming"
* });
*/
function useHandleSpaceEntityReport() {
const { projectId } = useProject();
const axios = useAxiosPrivate();
const handleSpaceEntityReport = useCallback(async ({ spaceId, reportId, entityId, actions, summary, userId, reason, }) => {
if (!projectId) {
throw new Error("No projectId available.");
}
if (!spaceId || !reportId) {
throw new Error("spaceId and reportId are required");
}
const response = await axios.patch(`/${projectId}/spaces/${spaceId}/reports/entity/${reportId}`, {
entityId,
actions,
summary,
userId,
reason,
});
return response.data;
}, [projectId, axios]);
return handleSpaceEntityReport;
}
export default useHandleSpaceEntityReport;
//# sourceMappingURL=useHandleSpaceEntityReport.js.map