Skip to content

Commit c9cceba

Browse files
committed
wip: working
1 parent 5321ff2 commit c9cceba

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

site/src/pages/TemplatePage/TemplatePage.tsx

+39
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1+
import Link from "@material-ui/core/Link"
2+
import { makeStyles } from "@material-ui/core/styles"
13
import { useMachine, useSelector } from "@xstate/react"
24
import { DeleteDialog } from "components/Dialogs/DeleteDialog/DeleteDialog"
5+
import { ErrorSummary } from "components/ErrorSummary/ErrorSummary"
6+
import { Margins } from "components/Margins/Margins"
7+
import { Stack } from "components/Stack/Stack"
38
import { FC, useContext } from "react"
49
import { Helmet } from "react-helmet-async"
510
import { useTranslation } from "react-i18next"
@@ -22,7 +27,24 @@ const useTemplateName = () => {
2227
return template
2328
}
2429

30+
// const Language = {
31+
// emptyMessage: "Template not found",
32+
// emptyDescription: (
33+
// <>
34+
// You can view available templates{" "}
35+
// <Link target="_blank" href="https://coder.com/docs/coder-oss/latest/templates">
36+
// here
37+
// </Link>{" "}
38+
// or you can{" "}
39+
// <Link target="_blank" href="https://coder.com/docs/coder-oss/latest/templates">
40+
// create one from scratch.
41+
// </Link>
42+
// </>
43+
// ),
44+
// }
45+
2546
export const TemplatePage: FC<React.PropsWithChildren<unknown>> = () => {
47+
const styles = useStyles()
2648
const organizationId = useOrganizationId()
2749
const { t } = useTranslation("templatePage")
2850
const templateName = useTemplateName()
@@ -40,6 +62,7 @@ export const TemplatePage: FC<React.PropsWithChildren<unknown>> = () => {
4062
templateVersions,
4163
deleteTemplateError,
4264
templateDAUs,
65+
getTemplateError,
4366
} = templateState.context
4467
const xServices = useContext(XServiceContext)
4568
const permissions = useSelector(xServices.authXService, selectPermissions)
@@ -57,6 +80,16 @@ export const TemplatePage: FC<React.PropsWithChildren<unknown>> = () => {
5780
// site/src/xServices/template/templateXService.ts
5881
// For an example, look here: site/src/xServices/workspaces/workspacesXService.ts
5982
// displayError is the function we want to use
83+
// const templateFound = false
84+
if (templateState.matches("error")&& Boolean(getTemplateError)) {
85+
return (
86+
<Margins>
87+
<div className={styles.errorBox}>
88+
<ErrorSummary error={getTemplateError} />
89+
</div>
90+
</Margins>
91+
)
92+
}
6093

6194
if (isLoading) {
6295
return <Loader />
@@ -98,4 +131,10 @@ export const TemplatePage: FC<React.PropsWithChildren<unknown>> = () => {
98131
)
99132
}
100133

134+
const useStyles = makeStyles((theme) => ({
135+
errorBox: {
136+
padding: theme.spacing(3),
137+
},
138+
}))
139+
101140
export default TemplatePage

site/src/xServices/template/templateXService.ts

+13
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ interface TemplateContext {
2525
templateVersions?: TemplateVersion[]
2626
templateDAUs: TemplateDAUsResponse
2727
deleteTemplateError?: Error | unknown
28+
getTemplateError?: Error | unknown
2829
}
2930

3031
type TemplateEvent = { type: "DELETE" } | { type: "CONFIRM_DELETE" } | { type: "CANCEL_DELETE" }
@@ -71,6 +72,12 @@ export const templateMachine =
7172
target: "initialInfo",
7273
},
7374
],
75+
onError: [
76+
{
77+
actions: "assignGetTemplateError",
78+
target: "error",
79+
},
80+
],
7481
},
7582
},
7683
initialInfo: {
@@ -211,6 +218,9 @@ export const templateMachine =
211218
deleted: {
212219
type: "final",
213220
},
221+
error: {
222+
type: "final",
223+
},
214224
},
215225
},
216226
{
@@ -257,6 +267,9 @@ export const templateMachine =
257267
assignActiveTemplateVersion: assign({
258268
activeTemplateVersion: (_, event) => event.data,
259269
}),
270+
assignGetTemplateError: assign({
271+
getTemplateError: (_, event) => event.data,
272+
}),
260273
assignTemplateResources: assign({
261274
templateResources: (_, event) => event.data,
262275
}),

0 commit comments

Comments
 (0)