feat(secret-approval): resolved infinite query bug and added support for closing, re-opening request, stale req ui

This commit is contained in:
Akhil Mohan
2023-10-05 20:34:50 +05:30
parent 63588b4e44
commit 04c7d49477
15 changed files with 500 additions and 233 deletions
@@ -1,5 +1,6 @@
export {
usePerformSecretApprovalRequestMerge,
useUpdateSecretApprovalRequestStatus
useUpdateSecretApprovalRequestStatus,
useUpdateSecretApprovalReviewStatus
} from "./mutation";
export { useGetSecretApprovalRequestDetails, useGetSecretApprovalRequests } from "./queries";
@@ -3,14 +3,36 @@ import { useMutation, useQueryClient } from "@tanstack/react-query";
import { apiRequest } from "@app/config/request";
import { secretApprovalRequestKeys } from "./queries";
import { TPerformSecretApprovalRequestMerge, TUpdateSecretApprovalRequestStatusDTO } from "./types";
import {
TPerformSecretApprovalRequestMerge,
TUpdateSecretApprovalRequestStatusDTO,
TUpdateSecretApprovalReviewStatusDTO
} from "./types";
export const useUpdateSecretApprovalReviewStatus = () => {
const queryClient = useQueryClient();
return useMutation<{}, {}, TUpdateSecretApprovalReviewStatusDTO>({
mutationFn: async ({ id, status }) => {
const { data } = await apiRequest.post(`/api/v1/secret-approval-requests/${id}/review`, {
status
});
return data;
},
onSuccess: (_, { id }) => {
queryClient.invalidateQueries(secretApprovalRequestKeys.detail({ id }));
}
});
};
export const useUpdateSecretApprovalRequestStatus = () => {
const queryClient = useQueryClient();
return useMutation<{}, {}, TUpdateSecretApprovalRequestStatusDTO>({
mutationFn: async ({ id, status }) => {
const { data } = await apiRequest.post(`/api/v1/secret-approval-requests/${id}`, { status });
const { data } = await apiRequest.post(`/api/v1/secret-approval-requests/${id}/status`, {
status
});
return data;
},
onSuccess: (_, { id }) => {
@@ -24,11 +46,12 @@ export const usePerformSecretApprovalRequestMerge = () => {
return useMutation<{}, {}, TPerformSecretApprovalRequestMerge>({
mutationFn: async ({ id }) => {
const { data } = await apiRequest.post("/api/v1/secret-approval-requests/merge", { id });
const { data } = await apiRequest.post(`/api/v1/secret-approval-requests/${id}/merge`);
return data;
},
onSuccess: (_, { id }) => {
onSuccess: (_, { id, workspaceId }) => {
queryClient.invalidateQueries(secretApprovalRequestKeys.detail({ id }));
queryClient.invalidateQueries(secretApprovalRequestKeys.list({ workspaceId }));
}
});
};
@@ -58,6 +58,7 @@ export type TSecretApprovalRequest<
hasMerged: boolean;
status: "open" | "close";
policy: TSecretApprovalPolicy;
statusChangeBy: string;
commits: {
// if there is no secret means it was creation
secret?: { version: number };
@@ -82,11 +83,17 @@ export type TGetSecretApprovalRequestDetails = {
decryptKey: UserWsKeyPair;
};
export type TUpdateSecretApprovalRequestStatusDTO = {
export type TUpdateSecretApprovalReviewStatusDTO = {
status: ApprovalStatus;
id: string;
};
export type TUpdateSecretApprovalRequestStatusDTO = {
status: "open" | "close";
id: string;
};
export type TPerformSecretApprovalRequestMerge = {
id: string;
workspaceId: string;
};