From c400685077a51799671ec38103a071e923ae2bb8 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Wed, 24 Jan 2024 15:23:37 +0100 Subject: [PATCH 1/2] fix: check update permission to start workspace --- .../WorkspaceActions/WorkspaceActions.tsx | 7 ++----- site/src/pages/WorkspacesPage/WorkspacesPage.tsx | 1 + site/src/pages/WorkspacesPage/WorkspacesPageView.tsx | 5 ++++- site/src/utils/workspace.tsx | 10 +++++++++- 4 files changed, 16 insertions(+), 7 deletions(-) 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,7 @@ 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..687b78a445be0 100644 --- a/site/src/utils/workspace.tsx +++ b/site/src/utils/workspace.tsx @@ -274,7 +274,15 @@ 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 => { From ff7b9252e8425fdb0861ad2569d6b0c0f39c128b Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Wed, 24 Jan 2024 15:27:02 +0100 Subject: [PATCH 2/2] make fmt --- site/src/pages/WorkspacesPage/WorkspacesPageView.tsx | 4 +++- site/src/utils/workspace.tsx | 10 ++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx index e41f847c84835..3ddc0411203a2 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx @@ -139,7 +139,9 @@ export const WorkspacesPageView = ({ onClick={onStartAll} disabled={ !checkedWorkspaces?.every( - (w) => w.latest_build.status === "stopped" && !mustUpdateWorkspace(w, canChangeVersions), + (w) => + w.latest_build.status === "stopped" && + !mustUpdateWorkspace(w, canChangeVersions), ) } > diff --git a/site/src/utils/workspace.tsx b/site/src/utils/workspace.tsx index 687b78a445be0..019fd5e45a967 100644 --- a/site/src/utils/workspace.tsx +++ b/site/src/utils/workspace.tsx @@ -276,11 +276,13 @@ export const getMatchingAgentOrFirst = ( export const mustUpdateWorkspace = ( workspace: TypesGen.Workspace, - canChangeVersions: boolean + canChangeVersions: boolean, ): boolean => { - return workspaceUpdatePolicy(workspace, canChangeVersions) === "always" && - workspace.outdated; -} + return ( + workspaceUpdatePolicy(workspace, canChangeVersions) === "always" && + workspace.outdated + ); +}; const workspaceUpdatePolicy = ( workspace: TypesGen.Workspace,