diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx index dbac824a8b8e9..a72251978b1e5 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx @@ -1,7 +1,7 @@ import { type FC, type ReactNode, Fragment } from "react"; import { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; import { useWorkspaceDuplication } from "pages/CreateWorkspacePage/useWorkspaceDuplication"; -import { workspaceUpdatePolicy } from "utils/workspace"; +import { mustUpdateWorkspace } from "utils/workspace"; import { type ActionType, abilitiesByWorkspaceStatus } from "./constants"; import { CancelButton, @@ -79,10 +79,7 @@ export const WorkspaceActions: FC = ({ canCancel && (workspace.template_allow_user_cancel_workspace_jobs || isOwner); - const mustUpdate = - workspaceUpdatePolicy(workspace, canChangeVersions) === "always" && - workspace.outdated; - + const mustUpdate = mustUpdateWorkspace(workspace, canChangeVersions); const tooltipText = getTooltipText(workspace, mustUpdate, canChangeVersions); const canBeUpdated = workspace.outdated && canAcceptJobs; diff --git a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx index 3fba54f8ad951..d6ac151966764 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx @@ -85,6 +85,7 @@ const WorkspacesPage: FC = () => { { return ( @@ -136,7 +139,9 @@ export const WorkspacesPageView = ({ onClick={onStartAll} disabled={ !checkedWorkspaces?.every( - (w) => w.latest_build.status === "stopped", + (w) => + w.latest_build.status === "stopped" && + !mustUpdateWorkspace(w, canChangeVersions), ) } > diff --git a/site/src/utils/workspace.tsx b/site/src/utils/workspace.tsx index 55492cb0e4843..019fd5e45a967 100644 --- a/site/src/utils/workspace.tsx +++ b/site/src/utils/workspace.tsx @@ -274,7 +274,17 @@ export const getMatchingAgentOrFirst = ( .filter((a) => a)[0]; }; -export const workspaceUpdatePolicy = ( +export const mustUpdateWorkspace = ( + workspace: TypesGen.Workspace, + canChangeVersions: boolean, +): boolean => { + return ( + workspaceUpdatePolicy(workspace, canChangeVersions) === "always" && + workspace.outdated + ); +}; + +const workspaceUpdatePolicy = ( workspace: TypesGen.Workspace, canChangeVersions: boolean, ): TypesGen.AutomaticUpdates => {