mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
Make workspace machine ephemeral to limit polling (#1674)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { useActor } from "@xstate/react"
|
||||
import React, { useContext, useEffect } from "react"
|
||||
import { useMachine } from "@xstate/react"
|
||||
import React, { useEffect } from "react"
|
||||
import { useParams } from "react-router-dom"
|
||||
import { ErrorSummary } from "../../components/ErrorSummary/ErrorSummary"
|
||||
import { FullScreenLoader } from "../../components/Loader/FullScreenLoader"
|
||||
@@ -8,14 +8,13 @@ import { Stack } from "../../components/Stack/Stack"
|
||||
import { Workspace } from "../../components/Workspace/Workspace"
|
||||
import { firstOrItem } from "../../util/array"
|
||||
import { getWorkspaceStatus } from "../../util/workspace"
|
||||
import { XServiceContext } from "../../xServices/StateContext"
|
||||
import { workspaceMachine } from "../../xServices/workspace/workspaceXService"
|
||||
|
||||
export const WorkspacePage: React.FC = () => {
|
||||
const { workspace: workspaceQueryParam } = useParams()
|
||||
const workspaceId = firstOrItem(workspaceQueryParam, null)
|
||||
|
||||
const xServices = useContext(XServiceContext)
|
||||
const [workspaceState, workspaceSend] = useActor(xServices.workspaceXService)
|
||||
const [workspaceState, workspaceSend] = useMachine(workspaceMachine)
|
||||
const { workspace, resources, getWorkspaceError, getResourcesError, builds } = workspaceState.context
|
||||
const workspaceStatus = getWorkspaceStatus(workspace?.latest_build)
|
||||
|
||||
|
||||
@@ -6,13 +6,11 @@ import { authMachine } from "./auth/authXService"
|
||||
import { buildInfoMachine } from "./buildInfo/buildInfoXService"
|
||||
import { siteRolesMachine } from "./roles/siteRolesXService"
|
||||
import { usersMachine } from "./users/usersXService"
|
||||
import { workspaceMachine } from "./workspace/workspaceXService"
|
||||
|
||||
interface XServiceContextType {
|
||||
authXService: ActorRefFrom<typeof authMachine>
|
||||
buildInfoXService: ActorRefFrom<typeof buildInfoMachine>
|
||||
usersXService: ActorRefFrom<typeof usersMachine>
|
||||
workspaceXService: ActorRefFrom<typeof workspaceMachine>
|
||||
siteRolesXService: ActorRefFrom<typeof siteRolesMachine>
|
||||
}
|
||||
|
||||
@@ -38,7 +36,6 @@ export const XServiceProvider: React.FC = ({ children }) => {
|
||||
authXService: useInterpret(authMachine),
|
||||
buildInfoXService: useInterpret(buildInfoMachine),
|
||||
usersXService: useInterpret(() => usersMachine.withConfig({ actions: { redirectToUsersPage } })),
|
||||
workspaceXService: useInterpret(workspaceMachine),
|
||||
siteRolesXService: useInterpret(siteRolesMachine),
|
||||
}}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user