Skip to content

Commit 3b5f20b

Browse files
committed
Add more actions to workspaces row
1 parent 0c65d4f commit 3b5f20b

File tree

3 files changed

+20
-22
lines changed

3 files changed

+20
-22
lines changed

site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions.tsx

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import { MissingBuildParameters } from "api/api";
2-
import { changeVersion, deleteWorkspace } from "api/queries/workspaces";
2+
import {
3+
changeVersion,
4+
deleteWorkspace,
5+
workspacePermissions,
6+
} from "api/queries/workspaces";
37
import type { Workspace } from "api/typesGenerated";
48
import { Button } from "components/Button/Button";
59
import {
@@ -20,7 +24,7 @@ import {
2024
import { UpdateBuildParametersDialog } from "./UpdateBuildParametersDialog";
2125
import { DownloadLogsDialog } from "./DownloadLogsDialog";
2226
import { useState, type FC } from "react";
23-
import { useMutation, useQueryClient } from "react-query";
27+
import { useMutation, useQuery, useQueryClient } from "react-query";
2428
import { Link as RouterLink } from "react-router-dom";
2529
import { ChangeWorkspaceVersionDialog } from "./ChangeWorkspaceVersionDialog";
2630
import { WorkspaceDeleteDialog } from "./WorkspaceDeleteDialog";
@@ -29,17 +33,18 @@ import { useWorkspaceDuplication } from "./useWorkspaceDuplication";
2933

3034
type WorkspaceMoreActionsProps = {
3135
workspace: Workspace;
32-
permissions: WorkspacePermissions;
3336
disabled?: boolean;
3437
};
3538

3639
export const WorkspaceMoreActions: FC<WorkspaceMoreActionsProps> = ({
3740
workspace,
3841
disabled,
39-
permissions,
4042
}) => {
4143
const queryClient = useQueryClient();
4244

45+
// Permissions
46+
const { data: permissions } = useQuery(workspacePermissions(workspace));
47+
4348
// Download logs
4449
const [isDownloadDialogOpen, setIsDownloadDialogOpen] = useState(false);
4550

@@ -83,7 +88,7 @@ export const WorkspaceMoreActions: FC<WorkspaceMoreActionsProps> = ({
8388
</RouterLink>
8489
</DropdownMenuItem>
8590

86-
{permissions.updateWorkspaceVersion && (
91+
{permissions?.updateWorkspaceVersion && (
8792
<DropdownMenuItem
8893
onClick={() => {
8994
setChangeVersionDialogOpen(true);
@@ -162,7 +167,7 @@ export const WorkspaceMoreActions: FC<WorkspaceMoreActionsProps> = ({
162167

163168
<WorkspaceDeleteDialog
164169
workspace={workspace}
165-
canDeleteFailedWorkspace={permissions.deleteFailedWorkspace}
170+
canDeleteFailedWorkspace={!!permissions?.deleteFailedWorkspace}
166171
isOpen={isConfirmingDelete}
167172
onCancel={() => {
168173
setIsConfirmingDelete(false);

site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,7 @@ export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
165165
onToggle={handleToggleFavorite}
166166
/>
167167

168-
<WorkspaceMoreActions
169-
workspace={workspace}
170-
permissions={permissions}
171-
disabled={!canAcceptJobs}
172-
/>
168+
<WorkspaceMoreActions workspace={workspace} disabled={!canAcceptJobs} />
173169
</div>
174170
);
175171
};

site/src/pages/WorkspacesPage/WorkspacesTable.tsx

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ import {
9191
lastUsedMessage,
9292
} from "utils/workspace";
9393
import { WorkspacesEmpty } from "./WorkspacesEmpty";
94+
import { WorkspaceMoreActions } from "modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions";
9495

9596
dayjs.extend(relativeTime);
9697

@@ -185,7 +186,6 @@ export const WorkspacesTable: FC<WorkspacesTableProps> = ({
185186
<TableHead className="w-2/6">Template</TableHead>
186187
<TableHead className="w-2/6">Status</TableHead>
187188
<TableHead className="w-0" />
188-
<TableHead className="w-0" />
189189
</TableRow>
190190
</TableHeader>
191191
<TableBody className="[&_td]:h-[72px]">
@@ -303,11 +303,6 @@ export const WorkspacesTable: FC<WorkspacesTableProps> = ({
303303
onActionSuccess={onActionSuccess}
304304
onActionError={onActionError}
305305
/>
306-
<TableCell>
307-
<div className="flex">
308-
<ChevronRightIcon className="text-content-secondary size-icon-sm" />
309-
</div>
310-
</TableCell>
311306
</WorkspacesRow>
312307
);
313308
})}
@@ -385,11 +380,6 @@ const TableLoader: FC<TableLoaderProps> = ({ canCheckWorkspaces }) => {
385380
<TableCell className="w-0">
386381
<Skeleton variant="rounded" width={40} height={40} />
387382
</TableCell>
388-
<TableCell>
389-
<div className="flex">
390-
<ChevronRightIcon className="text-content-disabled size-icon-sm" />
391-
</div>
392-
</TableCell>
393383
</TableRowSkeleton>
394384
</TableLoaderSkeleton>
395385
);
@@ -585,6 +575,11 @@ const WorkspaceActionsCell: FC<WorkspaceActionsCellProps> = ({
585575
<RefreshCcwIcon />
586576
</PrimaryAction>
587577
)}
578+
579+
<WorkspaceMoreActions
580+
workspace={workspace}
581+
disabled={!abilities.canAcceptJobs}
582+
/>
588583
</div>
589584
</TableCell>
590585
);
@@ -731,6 +726,8 @@ const WorkspaceApps: FC<WorkspaceAppsProps> = ({ workspace }) => {
731726
);
732727
}
733728

729+
buttons.push();
730+
734731
return buttons;
735732
};
736733

0 commit comments

Comments
 (0)