From ff037c139555867414bfb26d14811e4b2b1d9d50 Mon Sep 17 00:00:00 2001 From: Bruno Quaresma Date: Thu, 12 Jan 2023 16:47:06 +0000 Subject: [PATCH] refactor: Move deploy settings machine to the layout --- .../DeploySettingsLayout.tsx | 14 +++----------- site/src/xServices/StateContext.tsx | 4 ---- .../deploymentConfig/deploymentConfigMachine.ts | 16 +++++----------- 3 files changed, 8 insertions(+), 26 deletions(-) diff --git a/site/src/components/DeploySettingsLayout/DeploySettingsLayout.tsx b/site/src/components/DeploySettingsLayout/DeploySettingsLayout.tsx index c88eaa221cbd1..08958ebf5f698 100644 --- a/site/src/components/DeploySettingsLayout/DeploySettingsLayout.tsx +++ b/site/src/components/DeploySettingsLayout/DeploySettingsLayout.tsx @@ -7,13 +7,12 @@ import { PropsWithChildren, Suspense, useContext, - useEffect, FC, } from "react" -import { useActor } from "@xstate/react" -import { XServiceContext } from "xServices/StateContext" +import { useMachine } from "@xstate/react" import { Loader } from "components/Loader/Loader" import { DeploymentConfig } from "api/typesGenerated" +import { deploymentConfigMachine } from "xServices/deploymentConfig/deploymentConfigMachine" type DeploySettingsContextValue = { deploymentConfig: DeploymentConfig } @@ -32,17 +31,10 @@ export const useDeploySettings = (): DeploySettingsContextValue => { } export const DeploySettingsLayout: FC = ({ children }) => { - const xServices = useContext(XServiceContext) - const [state, send] = useActor(xServices.deploymentConfigXService) + const [state] = useMachine(deploymentConfigMachine) const styles = useStyles() const { deploymentConfig } = state.context - useEffect(() => { - if (state.matches("idle")) { - send("LOAD") - } - }, [send, state]) - return ( diff --git a/site/src/xServices/StateContext.tsx b/site/src/xServices/StateContext.tsx index 5830057ec7884..26eed6e1c070e 100644 --- a/site/src/xServices/StateContext.tsx +++ b/site/src/xServices/StateContext.tsx @@ -4,7 +4,6 @@ import { ActorRefFrom } from "xstate" import { authMachine } from "./auth/authXService" import { buildInfoMachine } from "./buildInfo/buildInfoXService" import { updateCheckMachine } from "./updateCheck/updateCheckXService" -import { deploymentConfigMachine } from "./deploymentConfig/deploymentConfigMachine" import { entitlementsMachine } from "./entitlements/entitlementsXService" import { siteRolesMachine } from "./roles/siteRolesXService" import { appearanceMachine } from "./appearance/appearanceXService" @@ -15,8 +14,6 @@ interface XServiceContextType { entitlementsXService: ActorRefFrom appearanceXService: ActorRefFrom siteRolesXService: ActorRefFrom - // Since the info here is used by multiple deployment settings page and we don't want to refetch them every time - deploymentConfigXService: ActorRefFrom updateCheckXService: ActorRefFrom } @@ -39,7 +36,6 @@ export const XServiceProvider: FC<{ children: ReactNode }> = ({ children }) => { entitlementsXService: useInterpret(entitlementsMachine), appearanceXService: useInterpret(appearanceMachine), siteRolesXService: useInterpret(siteRolesMachine), - deploymentConfigXService: useInterpret(deploymentConfigMachine), updateCheckXService: useInterpret(updateCheckMachine), }} > diff --git a/site/src/xServices/deploymentConfig/deploymentConfigMachine.ts b/site/src/xServices/deploymentConfig/deploymentConfigMachine.ts index d5fd0f18bdc3b..d36a57b0b1ed4 100644 --- a/site/src/xServices/deploymentConfig/deploymentConfigMachine.ts +++ b/site/src/xServices/deploymentConfig/deploymentConfigMachine.ts @@ -6,7 +6,7 @@ export const deploymentConfigMachine = createMachine( { id: "deploymentConfigMachine", predictableActionArguments: true, - initial: "idle", + schema: { context: {} as { deploymentConfig?: DeploymentConfig @@ -20,28 +20,22 @@ export const deploymentConfigMachine = createMachine( }, }, tsTypes: {} as import("./deploymentConfigMachine.typegen").Typegen0, + initial: "loading", states: { - idle: { - on: { - LOAD: { - target: "loading", - }, - }, - }, loading: { invoke: { src: "getDeploymentConfig", onDone: { - target: "loaded", + target: "done", actions: ["assignDeploymentConfig"], }, onError: { - target: "idle", + target: "done", actions: ["assignGetDeploymentConfigError"], }, }, }, - loaded: { + done: { type: "final", }, },