diff --git a/backend/src/ee/routes/v2/project-role-router.ts b/backend/src/ee/routes/v2/project-role-router.ts index 3b38fb21d..d4cdf3381 100644 --- a/backend/src/ee/routes/v2/project-role-router.ts +++ b/backend/src/ee/routes/v2/project-role-router.ts @@ -74,7 +74,7 @@ export const registerProjectRoleRouter = async (server: FastifyZodProvider) => { server.route({ method: "PATCH", - url: "/:projectSlug/roles/:roleId", + url: "/:projectId/roles/:roleId", config: { rateLimit: writeLimit }, diff --git a/frontend/src/hooks/api/roles/mutation.tsx b/frontend/src/hooks/api/roles/mutation.tsx index 78ec67e63..1562fbf1a 100644 --- a/frontend/src/hooks/api/roles/mutation.tsx +++ b/frontend/src/hooks/api/roles/mutation.tsx @@ -41,8 +41,11 @@ export const useUpdateProjectRole = () => { } = await apiRequest.patch(`/api/v2/workspace/${projectId}/roles/${id}`, dto); return role; }, - onSuccess: (_, { projectId }) => { + onSuccess: (_, { projectId, slug }) => { queryClient.invalidateQueries(roleQueryKeys.getProjectRoles(projectId)); + if (slug) { + queryClient.invalidateQueries(roleQueryKeys.getProjectRoleBySlug(projectId, slug)); + } } }); }; diff --git a/frontend/src/hooks/api/roles/queries.tsx b/frontend/src/hooks/api/roles/queries.tsx index d761aec0d..00fd037cc 100644 --- a/frontend/src/hooks/api/roles/queries.tsx +++ b/frontend/src/hooks/api/roles/queries.tsx @@ -39,8 +39,8 @@ const conditionsMatcher = buildMongoQueryMatcher({ $glob }, { glob }); export const roleQueryKeys = { getProjectRoles: (projectId: string) => ["roles", { projectSlug: projectId }] as const, - getProjectRoleBySlug: (projectSlug: string, roleSlug: string) => - ["roles", { projectSlug, roleSlug }] as const, + getProjectRoleBySlug: (projectId: string, roleSlug: string) => + ["roles", { projectId, roleSlug }] as const, getOrgRoles: (orgId: string) => ["org-roles", { orgId }] as const, getOrgRole: (orgId: string, roleId: string) => [{ orgId, roleId }, "org-role"] as const, getUserOrgPermissions: ({ orgId }: TGetUserOrgPermissionsDTO) => diff --git a/frontend/src/views/Project/RolePage/RolePage.tsx b/frontend/src/views/Project/RolePage/RolePage.tsx index 482f52d2e..a3b6e2041 100644 --- a/frontend/src/views/Project/RolePage/RolePage.tsx +++ b/frontend/src/views/Project/RolePage/RolePage.tsx @@ -30,7 +30,7 @@ export const RolePage = withProjectPermission( const { currentWorkspace } = useWorkspace(); const projectId = currentWorkspace?.id || ""; - const { data } = useGetProjectRoleBySlug(currentWorkspace?.slug ?? "", roleSlug as string); + const { data } = useGetProjectRoleBySlug(projectId, roleSlug as string); const { mutateAsync: deleteProjectRole } = useDeleteProjectRole(); diff --git a/frontend/src/views/Project/RolePage/components/RoleDetailsSection.tsx b/frontend/src/views/Project/RolePage/components/RoleDetailsSection.tsx index 95836cc37..c83dec712 100644 --- a/frontend/src/views/Project/RolePage/components/RoleDetailsSection.tsx +++ b/frontend/src/views/Project/RolePage/components/RoleDetailsSection.tsx @@ -19,7 +19,7 @@ export const RoleDetailsSection = ({ roleSlug, handlePopUpOpen }: Props) => { }); const { currentWorkspace } = useWorkspace(); - const { data } = useGetProjectRoleBySlug(currentWorkspace?.slug ?? "", roleSlug as string); + const { data } = useGetProjectRoleBySlug(currentWorkspace?.id ?? "", roleSlug as string); const isCustomRole = !["admin", "member", "viewer", "no-access"].includes(data?.slug ?? ""); diff --git a/frontend/src/views/Project/RolePage/components/RolePermissionsSection/RolePermissionsSection.tsx b/frontend/src/views/Project/RolePage/components/RolePermissionsSection/RolePermissionsSection.tsx index 2cd7ca3b4..1e7fbfdb8 100644 --- a/frontend/src/views/Project/RolePage/components/RolePermissionsSection/RolePermissionsSection.tsx +++ b/frontend/src/views/Project/RolePage/components/RolePermissionsSection/RolePermissionsSection.tsx @@ -48,7 +48,7 @@ export const RolePermissionsSection = ({ roleSlug, isDisabled }: Props) => { const { popUp, handlePopUpToggle } = usePopUp(["createPolicy"] as const); const projectId = currentWorkspace?.id || ""; const { data: role, isLoading } = useGetProjectRoleBySlug( - currentWorkspace?.slug ?? "", + currentWorkspace?.id ?? "", roleSlug as string );