diff --git a/src/authz-module/data/hooks.ts b/src/authz-module/data/hooks.ts index 1228b04..5c2e5b2 100644 --- a/src/authz-module/data/hooks.ts +++ b/src/authz-module/data/hooks.ts @@ -1,7 +1,15 @@ import { useQuery, useSuspenseQuery } from '@tanstack/react-query'; +import { appId } from "@src/constants"; import { LibraryMetadata, TeamMember } from '@src/types'; import { getLibrary, getTeamMembers } from './api'; + +const authzQueryKeys = { + all: [appId, 'authz'] as const, + teamMembers: (object: string) => [...authzQueryKeys.all, 'teamMembers', object] as const, + library: (libraryId: string) => [...authzQueryKeys.all, 'library', libraryId] as const, +}; + /** * React Query hook to fetch all team members for a specific object/scope. * It retrieves the full list of members who have access to the given scope. @@ -14,7 +22,7 @@ import { getLibrary, getTeamMembers } from './api'; * ``` */ export const useTeamMembers = (object: string) => useQuery({ - queryKey: ['team-members', object], + queryKey: authzQueryKeys.teamMembers(object), queryFn: () => getTeamMembers(object), staleTime: 1000 * 60 * 30, // refetch after 30 minutes }); @@ -30,7 +38,7 @@ export const useTeamMembers = (object: string) => useQuery( */ export const useLibrary = (libraryId: string) => { return useSuspenseQuery({ - queryKey: ['library-metadata', libraryId], + queryKey: authzQueryKeys.library(libraryId), queryFn: () => getLibrary(libraryId), retry: false, }); diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 0000000..b69ffcb --- /dev/null +++ b/src/constants.ts @@ -0,0 +1 @@ +export const appId = 'org.openedx.frontend.app.adminConsole'; \ No newline at end of file diff --git a/src/data/hooks.ts b/src/data/hooks.ts index 2ef03d9..7fe9a83 100644 --- a/src/data/hooks.ts +++ b/src/data/hooks.ts @@ -1,6 +1,12 @@ import { useSuspenseQuery } from '@tanstack/react-query'; import { PermissionValidationRequest, PermissionValidationResponse } from '@src/types'; import { validateUserPermissions } from './api'; +import { appId } from '@src/constants'; + +const adminConsoleQueryKeys = { + all: [appId] as const, + permissions: (permissions: PermissionValidationRequest[]) => [...adminConsoleQueryKeys.all, 'validatePermissions', permissions] as const, +}; /** * React Query hook to validate if the current user has permissions over a certain object in the instance. @@ -11,7 +17,7 @@ import { validateUserPermissions } from './api'; * @param permissions - The array of objects and actions to validate. * * @example - * const { data } = userValidateUserPermissions([{ + * const { data } = useValidateUserPermissions([{ "action": "act:read", "object": "lib:test-lib", "scope": "org:OpenedX" @@ -19,9 +25,9 @@ import { validateUserPermissions } from './api'; * if (data[0].allowed) { ... } * */ -export const useValidateUserPermissions = (permissions: PermissionValidationRequest[]) => { +export const useValidateUserPermissions = (permissions: PermissionValidationRequest[]) => { return useSuspenseQuery({ - queryKey: ['validate-user-permissions', permissions], + queryKey: adminConsoleQueryKeys.permissions(permissions), queryFn: () => validateUserPermissions(permissions), retry: false, });