Skip to content

Commit 0d4fc9d

Browse files
committed
Consolidate template state machines
1 parent ac6a3ab commit 0d4fc9d

File tree

6 files changed

+182
-171
lines changed

6 files changed

+182
-171
lines changed

site/src/pages/TemplatePage/DAUCharts.test.tsx renamed to site/src/pages/TemplatePage/DAUChart.test.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { render } from "testHelpers/renderHelpers"
2-
import { DAUChart, Language } from "./DAUCharts"
2+
import { DAUChart, Language } from "./DAUChart"
33

44
import { screen } from "@testing-library/react"
55
import { ResizeObserver } from "resize-observer"
@@ -12,7 +12,7 @@ describe("DAUChart", () => {
1212
it("renders a helpful paragraph on empty state", async () => {
1313
render(
1414
<DAUChart
15-
templateMetricsData={{
15+
templateDAUs={{
1616
entries: [],
1717
}}
1818
/>,
@@ -23,7 +23,7 @@ describe("DAUChart", () => {
2323
it("renders a graph", async () => {
2424
render(
2525
<DAUChart
26-
templateMetricsData={{
26+
templateDAUs={{
2727
entries: [{ date: "2020-01-01", daus: 1 }],
2828
}}
2929
/>,

site/src/pages/TemplatePage/DAUCharts.tsx renamed to site/src/pages/TemplatePage/DAUChart.tsx

+5-3
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,21 @@ import * as TypesGen from "../../api/typesGenerated"
2424
ChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend)
2525

2626
export interface DAUChartProps {
27-
templateMetricsData: TypesGen.TemplateDAUsResponse
27+
templateDAUs: TypesGen.TemplateDAUsResponse
2828
}
2929
export const Language = {
3030
loadingText: "DAU stats are loading. Check back later.",
3131
chartTitle: "Daily Active Users",
3232
}
3333

34-
export const DAUChart: FC<DAUChartProps> = ({ templateMetricsData }) => {
34+
export const DAUChart: FC<DAUChartProps> = ({ templateDAUs: templateMetricsData }) => {
3535
const theme: Theme = useTheme()
3636

3737
if (templateMetricsData.entries.length === 0) {
3838
return (
39-
<div style={{ marginTop: "-20px" }}>
39+
// We generate hidden element to prove this path is taken in the test
40+
// and through site inspection.
41+
<div style={{ display: "none" }}>
4042
<p>{Language.loadingText}</p>
4143
</div>
4244
)

site/src/pages/TemplatePage/TemplatePage.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ export const TemplatePage: FC<React.PropsWithChildren<unknown>> = () => {
2828
},
2929
})
3030

31-
const { template, activeTemplateVersion, templateResources, templateVersions } =
31+
const { template, activeTemplateVersion, templateResources, templateVersions, templateDAUs } =
3232
templateState.context
33-
const isLoading = !template || !activeTemplateVersion || !templateResources
33+
const isLoading = !template || !activeTemplateVersion || !templateResources || !template
3434

3535
if (isLoading) {
3636
return <Loader />
@@ -46,6 +46,7 @@ export const TemplatePage: FC<React.PropsWithChildren<unknown>> = () => {
4646
activeTemplateVersion={activeTemplateVersion}
4747
templateResources={templateResources}
4848
templateVersions={templateVersions}
49+
templateDAUs={templateDAUs}
4950
/>
5051
</>
5152
)

site/src/pages/TemplatePage/TemplatePageView.tsx

+10-12
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@ import Link from "@material-ui/core/Link"
44
import { makeStyles } from "@material-ui/core/styles"
55
import AddCircleOutline from "@material-ui/icons/AddCircleOutline"
66
import SettingsOutlined from "@material-ui/icons/SettingsOutlined"
7-
import { useMachine } from "@xstate/react"
87
import frontMatter from "front-matter"
98
import { FC } from "react"
109
import ReactMarkdown from "react-markdown"
1110
import { Link as RouterLink } from "react-router-dom"
1211
import { firstLetter } from "util/firstLetter"
13-
import { templateMetricsMachine } from "xServices/templateMetrics/templateMetricsXService"
14-
import { Template, TemplateVersion, WorkspaceResource } from "../../api/typesGenerated"
12+
import {
13+
Template,
14+
TemplateDAUsResponse,
15+
TemplateVersion,
16+
WorkspaceResource,
17+
} from "../../api/typesGenerated"
1518
import { Margins } from "../../components/Margins/Margins"
1619
import {
1720
PageHeader,
@@ -23,7 +26,7 @@ import { TemplateResourcesTable } from "../../components/TemplateResourcesTable/
2326
import { TemplateStats } from "../../components/TemplateStats/TemplateStats"
2427
import { VersionsTable } from "../../components/VersionsTable/VersionsTable"
2528
import { WorkspaceSection } from "../../components/WorkspaceSection/WorkspaceSection"
26-
import { DAUChart } from "./DAUCharts"
29+
import { DAUChart } from "./DAUChart"
2730

2831
const Language = {
2932
settingsButton: "Settings",
@@ -39,25 +42,20 @@ export interface TemplatePageViewProps {
3942
activeTemplateVersion: TemplateVersion
4043
templateResources: WorkspaceResource[]
4144
templateVersions?: TemplateVersion[]
45+
templateDAUs?: TemplateDAUsResponse
4246
}
4347

4448
export const TemplatePageView: FC<React.PropsWithChildren<TemplatePageViewProps>> = ({
4549
template,
4650
activeTemplateVersion,
4751
templateResources,
4852
templateVersions,
53+
templateDAUs,
4954
}) => {
5055
const styles = useStyles()
5156
const readme = frontMatter(activeTemplateVersion.readme)
5257
const hasIcon = template.icon && template.icon !== ""
5358

54-
const [metricsState] = useMachine(templateMetricsMachine, {
55-
context: {
56-
templateId: template.id,
57-
},
58-
})
59-
const { templateMetricsData } = metricsState.context
60-
6159
const getStartedResources = (resources: WorkspaceResource[]) => {
6260
return resources.filter((resource) => resource.workspace_transition === "start")
6361
}
@@ -105,7 +103,7 @@ export const TemplatePageView: FC<React.PropsWithChildren<TemplatePageViewProps>
105103
</Stack>
106104
</PageHeader>
107105

108-
{templateMetricsData && <DAUChart templateMetricsData={templateMetricsData} />}
106+
{templateDAUs && <DAUChart templateDAUs={templateDAUs} />}
109107

110108
<Stack spacing={2.5}>
111109
<TemplateStats template={template} activeVersion={activeTemplateVersion} />

0 commit comments

Comments
 (0)