Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitad67733

Browse files
authored
fix: display error message on delete workspace error (#18654)
resolvescoder/preview#155When deleting a workspace, show an error dialog if deleting theworkspace is not possible.![Screenshot 2025-06-28 at 10 0647](https://github.com/user-attachments/assets/650bfb54-6ed9-4f41-a410-1333afeee0a4)
1 parent22c5e84 commitad67733

File tree

3 files changed

+43
-4
lines changed

3 files changed

+43
-4
lines changed

‎site/src/modules/workspaces/ErrorDialog/WorkspaceErrorDialog.tsx‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ interface WorkspaceErrorDialogProps {
1919
workspaceOwner:string;
2020
workspaceName:string;
2121
templateVersionId:string;
22+
isDeleting:boolean;
2223
}
2324

2425
exportconstWorkspaceErrorDialog:FC<WorkspaceErrorDialogProps>=({
@@ -29,6 +30,7 @@ export const WorkspaceErrorDialog: FC<WorkspaceErrorDialogProps> = ({
2930
workspaceOwner,
3031
workspaceName,
3132
templateVersionId,
33+
isDeleting,
3234
})=>{
3335
constnavigate=useNavigate();
3436

@@ -52,7 +54,9 @@ export const WorkspaceErrorDialog: FC<WorkspaceErrorDialogProps> = ({
5254
<Dialogopen={open}onOpenChange={(isOpen)=>!isOpen&&onClose()}>
5355
<DialogContentvariant="destructive">
5456
<DialogHeader>
55-
<DialogTitle>Error building workspace</DialogTitle>
57+
<DialogTitle>
58+
Error{isDeleting ?"deleting" :"building"} workspace
59+
</DialogTitle>
5660
<DialogDescriptionclassName="flex flex-row gap-4">
5761
<strongclassName="text-content-primary">Message</strong>{" "}
5862
<span>{getErrorMessage(error,"Failed to build workspace.")}</span>

‎site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions.tsx‎

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import{MissingBuildParameters}from"api/api";
2+
import{isApiError}from"api/errors";
3+
import{typeApiError,getErrorMessage}from"api/errors";
24
import{
35
changeVersion,
46
deleteWorkspace,
@@ -13,6 +15,7 @@ import {
1315
DropdownMenuSeparator,
1416
DropdownMenuTrigger,
1517
}from"components/DropdownMenu/DropdownMenu";
18+
import{displayError}from"components/GlobalSnackbar/utils";
1619
import{
1720
CopyIcon,
1821
DownloadIcon,
@@ -24,6 +27,7 @@ import {
2427
import{typeFC,useEffect,useState}from"react";
2528
import{useMutation,useQuery,useQueryClient}from"react-query";
2629
import{LinkasRouterLink}from"react-router-dom";
30+
import{WorkspaceErrorDialog}from"../ErrorDialog/WorkspaceErrorDialog";
2731
import{ChangeWorkspaceVersionDialog}from"./ChangeWorkspaceVersionDialog";
2832
import{DownloadLogsDialog}from"./DownloadLogsDialog";
2933
import{UpdateBuildParametersDialog}from"./UpdateBuildParametersDialog";
@@ -42,6 +46,11 @@ export const WorkspaceMoreActions: FC<WorkspaceMoreActionsProps> = ({
4246
})=>{
4347
constqueryClient=useQueryClient();
4448

49+
const[workspaceErrorDialog,setWorkspaceErrorDialog]=useState<{
50+
open:boolean;
51+
error?:ApiError;
52+
}>({open:false});
53+
4554
// Permissions
4655
const{data:permissions}=useQuery(workspacePermissions(workspace));
4756

@@ -58,11 +67,25 @@ export const WorkspaceMoreActions: FC<WorkspaceMoreActionsProps> = ({
5867
),
5968
);
6069

70+
consthandleError=(error:unknown)=>{
71+
if(isApiError(error)&&error.code==="ERR_BAD_REQUEST"){
72+
setWorkspaceErrorDialog({
73+
open:true,
74+
error:error,
75+
});
76+
}else{
77+
displayError(getErrorMessage(error,"Failed to delete workspace."));
78+
}
79+
};
80+
6181
// Delete
6282
const[isConfirmingDelete,setIsConfirmingDelete]=useState(false);
63-
constdeleteWorkspaceMutation=useMutation(
64-
deleteWorkspace(workspace,queryClient),
65-
);
83+
constdeleteWorkspaceMutation=useMutation({
84+
...deleteWorkspace(workspace,queryClient),
85+
onError:(error:unknown)=>{
86+
handleError(error);
87+
},
88+
});
6689

6790
// Duplicate
6891
const{ duplicateWorkspace, isDuplicationReady}=
@@ -212,6 +235,17 @@ export const WorkspaceMoreActions: FC<WorkspaceMoreActionsProps> = ({
212235
setIsConfirmingDelete(false);
213236
}}
214237
/>
238+
239+
<WorkspaceErrorDialog
240+
open={workspaceErrorDialog.open}
241+
error={workspaceErrorDialog.error}
242+
onClose={()=>setWorkspaceErrorDialog({open:false})}
243+
showDetail={workspace.template_use_classic_parameter_flow}
244+
workspaceOwner={workspace.owner_name}
245+
workspaceName={workspace.name}
246+
templateVersionId={workspace.latest_build.template_version_id}
247+
isDeleting={true}
248+
/>
215249
</>
216250
);
217251
};

‎site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,7 @@ export const WorkspaceReadyPage: FC<WorkspaceReadyPageProps> = ({
392392
workspaceOwner={workspace.owner_name}
393393
workspaceName={workspace.name}
394394
templateVersionId={workspace.latest_build.template_version_id}
395+
isDeleting={false}
395396
/>
396397
</>
397398
);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp