@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
32 lines • 1.36 kB
JavaScript
import { useMemo } from "react";
function useSpacePermissions({ memberPermissions, postingPermission, readingPermission = "anyone", }) {
return useMemo(() => {
if (!memberPermissions) {
// User is not a member
return {
isMember: false,
isAdmin: false,
isModerator: false,
canPost: postingPermission === "anyone",
canModerate: false,
canRead: readingPermission === "anyone",
isPending: false,
isBanned: false,
};
}
// Use server-computed permission booleans directly so the server stays the
// single source of truth and client/server logic can't drift.
return {
isMember: memberPermissions.isMember,
isAdmin: memberPermissions.isAdmin,
isModerator: memberPermissions.isModerator,
canPost: memberPermissions.canPost,
canModerate: memberPermissions.canModerate,
canRead: memberPermissions.canRead,
isPending: memberPermissions.status === "pending",
isBanned: memberPermissions.status === "banned",
};
}, [memberPermissions, postingPermission, readingPermission]);
}
export default useSpacePermissions;
//# sourceMappingURL=useSpacePermissions.js.map