Skip to content

Commit 1dd3eb6

Browse files
authored
fix: hide promote/archive buttons for template versions from users without permission (#10555)
1 parent 0a55081 commit 1dd3eb6

File tree

2 files changed

+43
-41
lines changed

2 files changed

+43
-41
lines changed

site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx

+31-28
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export const VersionRow: React.FC<VersionRowProps> = ({
3333
});
3434

3535
const jobStatus = version.job.status;
36+
const showActions = onPromoteClick || onArchiveClick;
3637

3738
return (
3839
<TimelineEntry
@@ -77,6 +78,7 @@ export const VersionRow: React.FC<VersionRowProps> = ({
7778
<Stack direction="row" alignItems="center" spacing={2}>
7879
{isActive && <Pill text="Active" type="success" />}
7980
{isLatest && <Pill text="Newest" type="info" />}
81+
8082
{jobStatus === "pending" && (
8183
<Pill text={<>Pending&hellip;</>} type="warning" lightBorder />
8284
)}
@@ -87,34 +89,35 @@ export const VersionRow: React.FC<VersionRowProps> = ({
8789
<Pill text="Canceled" type="neutral" lightBorder />
8890
)}
8991
{jobStatus === "failed" && <Pill text="Failed" type="error" />}
90-
{jobStatus === "failed" ? (
91-
<Button
92-
css={styles.promoteButton}
93-
disabled={isActive || version.archived}
94-
onClick={(e) => {
95-
e.preventDefault();
96-
e.stopPropagation();
97-
if (onArchiveClick) {
98-
onArchiveClick(version.id);
99-
}
100-
}}
101-
>
102-
Archive&hellip;
103-
</Button>
104-
) : (
105-
<Button
106-
css={styles.promoteButton}
107-
disabled={isActive || jobStatus !== "succeeded"}
108-
onClick={(e) => {
109-
e.preventDefault();
110-
e.stopPropagation();
111-
if (onPromoteClick) {
112-
onPromoteClick(version.id);
113-
}
114-
}}
115-
>
116-
Promote&hellip;
117-
</Button>
92+
93+
{showActions && (
94+
<>
95+
{jobStatus === "failed" ? (
96+
<Button
97+
css={styles.promoteButton}
98+
disabled={isActive || version.archived}
99+
onClick={(e) => {
100+
e.preventDefault();
101+
e.stopPropagation();
102+
onArchiveClick?.(version.id);
103+
}}
104+
>
105+
Archive&hellip;
106+
</Button>
107+
) : (
108+
<Button
109+
css={styles.promoteButton}
110+
disabled={isActive || jobStatus !== "succeeded"}
111+
onClick={(e) => {
112+
e.preventDefault();
113+
e.stopPropagation();
114+
onPromoteClick?.(version.id);
115+
}}
116+
>
117+
Promote&hellip;
118+
</Button>
119+
)}
120+
</>
118121
)}
119122
</Stack>
120123
</Stack>

site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx

+12-13
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,14 @@ export const Example: Story = {
3030
},
3131
MockTemplateVersion,
3232
],
33-
onPromoteClick: undefined,
3433
},
3534
};
3635

37-
export const CanPromote: Story = {
36+
export const NoEditPermission: Story = {
3837
args: {
39-
activeVersionId: MockTemplateVersion.id,
40-
onPromoteClick: action("onPromoteClick"),
41-
versions: [
42-
{
43-
...MockTemplateVersion,
44-
id: "2",
45-
name: "test-template-version-2",
46-
created_at: "2022-05-18T18:39:01.382927298Z",
47-
},
48-
MockTemplateVersion,
49-
],
38+
...Example.args,
39+
onPromoteClick: undefined,
40+
onArchiveClick: undefined,
5041
},
5142
};
5243

@@ -95,6 +86,14 @@ export const BuildStatuses: Story = {
9586
},
9687
};
9788

89+
export const BuildStatusesNoEditPermission: Story = {
90+
args: {
91+
...BuildStatuses.args,
92+
onPromoteClick: undefined,
93+
onArchiveClick: undefined,
94+
},
95+
};
96+
9897
export const Empty: Story = {
9998
args: {
10099
versions: [],

0 commit comments

Comments
 (0)