add dialog for confirmation of code cache deletion (#3641)

This commit is contained in:
Shuchang Zheng
2025-10-07 18:16:19 -07:00
committed by GitHub
parent 360def0de5
commit 2b81a1090e
2 changed files with 94 additions and 26 deletions

View File

@@ -28,15 +28,21 @@ type WorkflowHasChangesStore = {
getSaveData: () => SaveData | null;
hasChanges: boolean;
saveIsPending: boolean;
saidOkToCodeCacheDeletion: boolean;
showConfirmCodeCacheDeletion: boolean;
setGetSaveData: (getSaveData: () => SaveData) => void;
setHasChanges: (hasChanges: boolean) => void;
setSaveIsPending: (isPending: boolean) => void;
setSaidOkToCodeCacheDeletion: (saidOkToCodeCacheDeletion: boolean) => void;
setShowConfirmCodeCacheDeletion: (show: boolean) => void;
};
const useWorkflowHasChangesStore = create<WorkflowHasChangesStore>((set) => {
return {
hasChanges: false,
saveIsPending: false,
saidOkToCodeCacheDeletion: false,
showConfirmCodeCacheDeletion: false,
getSaveData: () => null,
setGetSaveData: (getSaveData: () => SaveData) => {
set({ getSaveData });
@@ -47,14 +53,25 @@ const useWorkflowHasChangesStore = create<WorkflowHasChangesStore>((set) => {
setSaveIsPending: (isPending: boolean) => {
set({ saveIsPending: isPending });
},
setSaidOkToCodeCacheDeletion: (saidOkToCodeCacheDeletion: boolean) => {
set({ saidOkToCodeCacheDeletion });
},
setShowConfirmCodeCacheDeletion: (show: boolean) => {
set({ showConfirmCodeCacheDeletion: show });
},
};
});
const useWorkflowSave = () => {
const credentialGetter = useCredentialGetter();
const queryClient = useQueryClient();
const { getSaveData, setHasChanges, setSaveIsPending } =
useWorkflowHasChangesStore();
const {
getSaveData,
saidOkToCodeCacheDeletion,
setHasChanges,
setSaveIsPending,
setShowConfirmCodeCacheDeletion,
} = useWorkflowHasChangesStore();
const saveWorkflowMutation = useMutation({
mutationFn: async () => {
@@ -136,6 +153,11 @@ const useWorkflowSave = () => {
headers: {
"Content-Type": "text/plain",
},
params: {
delete_code_cache_is_ok: saidOkToCodeCacheDeletion
? "true"
: "false",
},
},
);
},
@@ -169,6 +191,14 @@ const useWorkflowSave = () => {
onError: (error: AxiosError) => {
const detail = (error.response?.data as { detail?: string })?.detail;
if (
detail &&
detail.startsWith("No confirmation for code cache deletion")
) {
setShowConfirmCodeCacheDeletion(true);
return;
}
toast({
title: "Error",
description: detail ? detail : error.message,