Skip to content

Commit a364318

Browse files
authored
chore(UI): redirecting from workspace page if 404 (#6880)
1 parent 56f00a8 commit a364318

File tree

2 files changed

+48
-42
lines changed

2 files changed

+48
-42
lines changed

site/src/pages/WorkspacePage/WorkspacePage.tsx

+45-40
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { firstOrItem } from "util/array"
99
import { quotaMachine } from "xServices/quotas/quotasXService"
1010
import { workspaceMachine } from "xServices/workspace/workspaceXService"
1111
import { WorkspaceReadyPage } from "./WorkspaceReadyPage"
12+
import { RequirePermission } from "components/RequirePermission/RequirePermission"
1213

1314
export const WorkspacePage: FC = () => {
1415
const { username: usernameQueryParam, workspace: workspaceQueryParam } =
@@ -42,46 +43,50 @@ export const WorkspacePage: FC = () => {
4243
}, [username, quotaSend])
4344

4445
return (
45-
<ChooseOne>
46-
<Cond condition={workspaceState.matches("error")}>
47-
<div className={styles.error}>
48-
{Boolean(getWorkspaceError) && (
49-
<AlertBanner severity="error" error={getWorkspaceError} />
50-
)}
51-
{Boolean(getTemplateWarning) && (
52-
<AlertBanner severity="error" error={getTemplateWarning} />
53-
)}
54-
{Boolean(getTemplateParametersWarning) && (
55-
<AlertBanner
56-
severity="error"
57-
error={getTemplateParametersWarning}
58-
/>
59-
)}
60-
{Boolean(checkPermissionsError) && (
61-
<AlertBanner severity="error" error={checkPermissionsError} />
62-
)}
63-
{Boolean(getQuotaError) && (
64-
<AlertBanner severity="error" error={getQuotaError} />
65-
)}
66-
</div>
67-
</Cond>
68-
<Cond
69-
condition={
70-
Boolean(workspace) &&
71-
workspaceState.matches("ready") &&
72-
quotaState.matches("success")
73-
}
74-
>
75-
<WorkspaceReadyPage
76-
workspaceState={workspaceState}
77-
quotaState={quotaState}
78-
workspaceSend={workspaceSend}
79-
/>
80-
</Cond>
81-
<Cond>
82-
<Loader />
83-
</Cond>
84-
</ChooseOne>
46+
<RequirePermission
47+
isFeatureVisible={getWorkspaceError?.response?.status !== 404}
48+
>
49+
<ChooseOne>
50+
<Cond condition={workspaceState.matches("error")}>
51+
<div className={styles.error}>
52+
{Boolean(getWorkspaceError) && (
53+
<AlertBanner severity="error" error={getWorkspaceError} />
54+
)}
55+
{Boolean(getTemplateWarning) && (
56+
<AlertBanner severity="error" error={getTemplateWarning} />
57+
)}
58+
{Boolean(getTemplateParametersWarning) && (
59+
<AlertBanner
60+
severity="error"
61+
error={getTemplateParametersWarning}
62+
/>
63+
)}
64+
{Boolean(checkPermissionsError) && (
65+
<AlertBanner severity="error" error={checkPermissionsError} />
66+
)}
67+
{Boolean(getQuotaError) && (
68+
<AlertBanner severity="error" error={getQuotaError} />
69+
)}
70+
</div>
71+
</Cond>
72+
<Cond
73+
condition={
74+
Boolean(workspace) &&
75+
workspaceState.matches("ready") &&
76+
quotaState.matches("success")
77+
}
78+
>
79+
<WorkspaceReadyPage
80+
workspaceState={workspaceState}
81+
quotaState={quotaState}
82+
workspaceSend={workspaceSend}
83+
/>
84+
</Cond>
85+
<Cond>
86+
<Loader />
87+
</Cond>
88+
</ChooseOne>
89+
</RequirePermission>
8590
)
8691
}
8792

site/src/xServices/workspace/workspaceXService.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
displayError,
1010
displaySuccess,
1111
} from "../../components/GlobalSnackbar/utils"
12+
import { AxiosError } from "axios"
1213

1314
const latestBuild = (builds: TypesGen.WorkspaceBuild[]) => {
1415
// Cloning builds to not change the origin object with the sort()
@@ -56,7 +57,7 @@ export interface WorkspaceContext {
5657
workspace?: TypesGen.Workspace
5758
template?: TypesGen.Template
5859
build?: TypesGen.WorkspaceBuild
59-
getWorkspaceError?: Error | unknown
60+
getWorkspaceError?: AxiosError
6061
getTemplateWarning: Error | unknown
6162
getTemplateParametersWarning: Error | unknown
6263
// Builds
@@ -491,7 +492,7 @@ export const workspaceMachine = createMachine(
491492
workspace: (_, event) => event.data,
492493
}),
493494
assignGetWorkspaceError: assign({
494-
getWorkspaceError: (_, event) => event.data,
495+
getWorkspaceError: (_, event) => event.data as AxiosError,
495496
}),
496497
clearGetWorkspaceError: (context) =>
497498
assign({ ...context, getWorkspaceError: undefined }),

0 commit comments

Comments
 (0)