Fix: Status filtering & query invalidation

This commit is contained in:
Daniel Hougaard
2024-05-07 17:30:35 +02:00
parent f8e0e01bb8
commit 8c256bd9c8
@@ -37,12 +37,14 @@ import {
import { usePopUp } from "@app/hooks"; import { usePopUp } from "@app/hooks";
import { useGetWorkspaceUsers, useReviewAccessRequest } from "@app/hooks/api"; import { useGetWorkspaceUsers, useReviewAccessRequest } from "@app/hooks/api";
import { import {
accessApprovalKeys,
useGetAccessApprovalPolicies, useGetAccessApprovalPolicies,
useGetAccessApprovalRequests, useGetAccessApprovalRequests,
useGetAccessRequestsCount useGetAccessRequestsCount
} from "@app/hooks/api/accessApproval/queries"; } from "@app/hooks/api/accessApproval/queries";
import { TAccessApprovalRequest } from "@app/hooks/api/accessApproval/types"; import { TAccessApprovalRequest } from "@app/hooks/api/accessApproval/types";
import { ApprovalStatus, TAccessApprovalPolicy, TWorkspaceUser } from "@app/hooks/api/types"; import { ApprovalStatus, TAccessApprovalPolicy, TWorkspaceUser } from "@app/hooks/api/types";
import { queryClient } from "@app/reactQuery";
import { SpecificPrivilegeSecretForm } from "@app/views/Project/MembersPage/components/MemberListTab/MemberRoleForm/SpecificPrivilegeSection"; import { SpecificPrivilegeSecretForm } from "@app/views/Project/MembersPage/components/MemberListTab/MemberRoleForm/SpecificPrivilegeSection";
const DisplayBadge = ({ text, className }: { text: string; className?: string }) => { const DisplayBadge = ({ text, className }: { text: string; className?: string }) => {
@@ -296,8 +298,18 @@ export const AccessApprovalRequest = ({
}); });
const filteredRequests = useMemo(() => { const filteredRequests = useMemo(() => {
if (statusFilter === "open") return requests?.filter((request) => !request.isApproved); if (statusFilter === "open")
if (statusFilter === "close") return requests?.filter((request) => request.isApproved); return requests?.filter(
(request) =>
!request.isApproved &&
!request.reviewers.some((reviewer) => reviewer.status === ApprovalStatus.REJECTED)
);
if (statusFilter === "close")
return requests?.filter(
(request) =>
request.isApproved ||
request.reviewers.some((reviewer) => reviewer.status === ApprovalStatus.REJECTED)
);
return requests; return requests;
}, [requests, statusFilter, requestedByFilter, envFilter]); }, [requests, statusFilter, requestedByFilter, envFilter]);
@@ -481,7 +493,7 @@ export const AccessApprovalRequest = ({
</div> </div>
)} )}
{!!filteredRequests?.length && {!!filteredRequests?.length &&
requests?.map((request) => { filteredRequests?.map((request) => {
const details = generateRequestDetails(request); const details = generateRequestDetails(request);
return ( return (
@@ -546,7 +558,16 @@ export const AccessApprovalRequest = ({
<SelectAccessModal <SelectAccessModal
policies={policies} policies={policies}
isOpen={popUp.requestAccess.isOpen} isOpen={popUp.requestAccess.isOpen}
onOpenChange={() => handlePopUpClose("requestAccess")} onOpenChange={() => {
queryClient.invalidateQueries(
accessApprovalKeys.getAccessApprovalRequests(
projectSlug,
envFilter,
requestedByFilter
)
);
handlePopUpClose("requestAccess");
}}
/> />
)} )}