feat: battle of ts - unlimited edition

This commit is contained in:
=
2025-10-10 00:09:46 +05:30
parent fd98465dec
commit 44c9575a3d
38 changed files with 492 additions and 498 deletions
@@ -10,6 +10,7 @@ import {
} from "@app/hooks/api/roles/queries";
import { OrgPermissionSet } from "./types";
import { useCallback } from "react";
export const useOrgPermission = () => {
const organizationId = useRouteContext({
@@ -17,16 +18,24 @@ export const useOrgPermission = () => {
select: (el) => el.organizationId
});
const { data } = useSuspenseQuery({
const {
data: { permission, memberships = [] }
} = useSuspenseQuery({
queryKey: roleQueryKeys.getUserOrgPermissions({ orgId: organizationId }),
queryFn: () => fetchUserOrgPermissions({ orgId: organizationId }),
select: (res) => {
const rule = unpackRules<RawRuleOf<MongoAbility<OrgPermissionSet>>>(res.permissions);
const ability = createMongoAbility<OrgPermissionSet>(rule, { conditionsMatcher });
return { permission: ability, membership: res.membership };
return { permission: ability, memberships: res.memberships };
},
staleTime: Infinity
});
return data;
const hasOrgRole = useCallback(
(role: string) =>
memberships?.some((membership) => membership.roles.some((el) => role === el.role)),
[]
);
return { permission, memberships, hasOrgRole };
};