Skip to content

Commit 7560d99

Browse files
committed
Refactor build info
1 parent 13acf59 commit 7560d99

File tree

3 files changed

+29
-93
lines changed

3 files changed

+29
-93
lines changed

site/src/api/queries/buildInfo.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { useQuery } from "@tanstack/react-query";
2+
import * as API from "api/api";
3+
4+
export const useBuildInfo = () => {
5+
return useQuery({
6+
queryKey: ["buildInfo"],
7+
queryFn: fetchBuildInfo,
8+
});
9+
};
10+
11+
const fetchBuildInfo = async () => {
12+
// Build info is injected by the Coder server into the HTML document.
13+
const buildInfo = document.querySelector("meta[property=build-info]");
14+
if (buildInfo) {
15+
const rawContent = buildInfo.getAttribute("content");
16+
try {
17+
return JSON.parse(rawContent as string);
18+
} catch (e) {
19+
console.warn("Failed to parse build info from document", e);
20+
}
21+
}
22+
23+
return API.getBuildInfo();
24+
};

site/src/components/Dashboard/DashboardProvider.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { useMachine } from "@xstate/react";
2+
import { useBuildInfo } from "api/queries/buildInfo";
23
import {
34
AppearanceConfig,
45
BuildInfoResponse,
@@ -8,7 +9,6 @@ import {
89
import { FullScreenLoader } from "components/Loader/FullScreenLoader";
910
import { createContext, FC, PropsWithChildren, useContext } from "react";
1011
import { appearanceMachine } from "xServices/appearance/appearanceXService";
11-
import { buildInfoMachine } from "xServices/buildInfo/buildInfoXService";
1212
import { entitlementsMachine } from "xServices/entitlements/entitlementsXService";
1313
import { experimentsMachine } from "xServices/experiments/experimentsMachine";
1414

@@ -31,15 +31,15 @@ export const DashboardProviderContext = createContext<
3131
>(undefined);
3232

3333
export const DashboardProvider: FC<PropsWithChildren> = ({ children }) => {
34-
const [buildInfoState] = useMachine(buildInfoMachine);
34+
const buildInfoQuery = useBuildInfo();
3535
const [entitlementsState] = useMachine(entitlementsMachine);
3636
const [appearanceState, appearanceSend] = useMachine(appearanceMachine);
3737
const [experimentsState] = useMachine(experimentsMachine);
38-
const { buildInfo } = buildInfoState.context;
3938
const { entitlements } = entitlementsState.context;
4039
const { appearance, preview } = appearanceState.context;
4140
const { experiments } = experimentsState.context;
42-
const isLoading = !buildInfo || !entitlements || !appearance || !experiments;
41+
const isLoading =
42+
!buildInfoQuery.data || !entitlements || !appearance || !experiments;
4343

4444
const setAppearancePreview = (config: AppearanceConfig) => {
4545
appearanceSend({
@@ -62,7 +62,7 @@ export const DashboardProvider: FC<PropsWithChildren> = ({ children }) => {
6262
return (
6363
<DashboardProviderContext.Provider
6464
value={{
65-
buildInfo,
65+
buildInfo: buildInfoQuery.data,
6666
entitlements,
6767
experiments,
6868
appearance: {

site/src/xServices/buildInfo/buildInfoXService.ts

Lines changed: 0 additions & 88 deletions
This file was deleted.

0 commit comments

Comments
 (0)