@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
34 lines • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = require("react");
function useSpacePermissions({ memberPermissions, postingPermission, readingPermission = "anyone", }) {
return (0, react_1.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]);
}
exports.default = useSpacePermissions;
//# sourceMappingURL=useSpacePermissions.js.map