From 4cfa3fd335a6ce9fe4a882f12a6cca90d5b1a75f Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Mon, 25 Sep 2023 18:28:45 +0000
Subject: [PATCH 1/6] chore: clean up license settings
---
.../LicensesSettingsPage/LicenseCard.tsx | 10 +++-------
.../LicensesSettingsPage/LicensesSettingsPageView.tsx | 4 ++--
2 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx
index 7fb541189db95..682b7c00affec 100644
--- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx
+++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx
@@ -36,7 +36,7 @@ export const LicenseCard = ({
return (
{
@@ -105,11 +105,11 @@ export const LicenseCard = ({
@@ -148,10 +148,6 @@ const useStyles = makeStyles((theme) => ({
color: theme.palette.text.secondary,
},
removeButton: {
- height: "17px",
- minHeight: "17px",
- padding: 0,
- border: "none",
color: theme.palette.error.main,
"&:hover": {
backgroundColor: "transparent",
diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx
index eb584189c1a51..d5aabf85d77ed 100644
--- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx
+++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx
@@ -110,10 +110,10 @@ const LicensesSettingsPageView: FC = ({
- You don{"'"}t have any licenses!
+ You don't have any licenses!
- You{"'"}re missing out on high availability, RBAC, quotas, and
+ You're missing out on high availability, RBAC, quotas, and
much more. Contact{" "}
sales or{" "}
From daac530fc44cfff53c453b16904c11e72a0cc5b1 Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Mon, 25 Sep 2023 18:39:49 +0000
Subject: [PATCH 2/6] chore: clean up users table
---
.../UsersPage/UsersTable/UsersTableBody.tsx | 82 +++++++++----------
1 file changed, 38 insertions(+), 44 deletions(-)
diff --git a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx
index 95c4162ec860f..e1044b37f36f4 100644
--- a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx
+++ b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx
@@ -215,51 +215,45 @@ export const UsersTableBody: FC<
- View activity
- {!canViewActivity && }
- >
- ),
- onClick: onViewActivity,
- disabled: !canViewActivity,
- },
- )
- }
+ user.status === "active" || user.status === "dormant"
+ ? {
+ label: <>Suspend…>,
+ onClick: onSuspendUser,
+ disabled: false,
+ }
+ : {
+ label: <>Activate…>,
+ onClick: onActivateUser,
+ disabled: false,
+ },
+ {
+ label: <>Delete…>,
+ onClick: onDeleteUser,
+ disabled: user.id === actorID,
+ },
+ {
+ label: <>Reset password…>,
+ onClick: onResetUserPassword,
+ disabled: user.login_type !== "password",
+ },
+ {
+ label: "View workspaces",
+ onClick: onListWorkspaces,
+ disabled: false,
+ },
+ {
+ label: (
+ <>
+ View activity
+ {!canViewActivity && }
+ >
+ ),
+ onClick: onViewActivity,
+ disabled: !canViewActivity,
+ },
+ ]}
/>
)}
From 1aac4275067015af651f8ffc01a1c9c28c2a0e2d Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Mon, 25 Sep 2023 18:44:21 +0000
Subject: [PATCH 3/6] chore: minor changes to ssh keys page
---
.../UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx | 9 ++-------
.../pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.tsx | 6 +++---
.../UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx | 8 ++------
3 files changed, 7 insertions(+), 16 deletions(-)
diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx
index 9a38d093d607f..99adfa9c12b8a 100644
--- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx
+++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx
@@ -2,7 +2,6 @@ import { fireEvent, screen, within } from "@testing-library/react";
import * as API from "../../../api/api";
import { renderWithAuth } from "../../../testHelpers/renderHelpers";
import { Language as SSHKeysPageLanguage, SSHKeysPage } from "./SSHKeysPage";
-import { Language as SSHKeysPageViewLanguage } from "./SSHKeysPageView";
import { MockGitSSHKey, mockApiError } from "testHelpers/entities";
describe("SSH keys Page", () => {
@@ -20,9 +19,7 @@ describe("SSH keys Page", () => {
await screen.findByText(MockGitSSHKey.public_key);
// Click on the "Regenerate" button to display the confirm dialog
- const regenerateButton = screen.getByRole("button", {
- name: SSHKeysPageViewLanguage.regenerateLabel,
- });
+ const regenerateButton = screen.getByTestId("regenerate");
fireEvent.click(regenerateButton);
const confirmDialog = screen.getByRole("dialog");
expect(confirmDialog).toHaveTextContent(
@@ -67,9 +64,7 @@ describe("SSH keys Page", () => {
);
// Click on the "Regenerate" button to display the confirm dialog
- const regenerateButton = screen.getByRole("button", {
- name: SSHKeysPageViewLanguage.regenerateLabel,
- });
+ const regenerateButton = screen.getByTestId("regenerate");
fireEvent.click(regenerateButton);
const confirmDialog = screen.getByRole("dialog");
expect(confirmDialog).toHaveTextContent(
diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.tsx
index 5f889b4a51f50..eca1c71b7a13f 100644
--- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.tsx
+++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.tsx
@@ -1,9 +1,9 @@
import { PropsWithChildren, FC, useState } from "react";
-import { ConfirmDialog } from "../../../components/Dialogs/ConfirmDialog/ConfirmDialog";
-import { Section } from "../../../components/SettingsLayout/Section";
+import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog";
+import { displayError, displaySuccess } from "components/GlobalSnackbar/utils";
+import { Section } from "components/SettingsLayout/Section";
import { SSHKeysPageView } from "./SSHKeysPageView";
import { regenerateUserSSHKey, userSSHKey } from "api/queries/sshKeys";
-import { displayError, displaySuccess } from "components/GlobalSnackbar/utils";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { getErrorMessage } from "api/errors";
diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx
index ac848e60e5c40..5ab0f9af3fab4 100644
--- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx
+++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx
@@ -8,10 +8,6 @@ import { Stack } from "components/Stack/Stack";
import { FC } from "react";
import { ErrorAlert } from "components/Alert/ErrorAlert";
-export const Language = {
- regenerateLabel: "Regenerate",
-};
-
export interface SSHKeysPageViewProps {
isLoading: boolean;
getSSHKeyError?: unknown;
@@ -57,8 +53,8 @@ export const SSHKeysPageView: FC<
-
>
From 245a754d6992b986986ecb56faa017c2684df50c Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Mon, 25 Sep 2023 19:10:30 +0000
Subject: [PATCH 4/6] chore: fix up group overview
---
site/src/pages/GroupsPage/GroupPage.tsx | 27 +++++++++++++++++--------
1 file changed, 19 insertions(+), 8 deletions(-)
diff --git a/site/src/pages/GroupsPage/GroupPage.tsx b/site/src/pages/GroupsPage/GroupPage.tsx
index 162a273984ae2..0b400cc9887f9 100644
--- a/site/src/pages/GroupsPage/GroupPage.tsx
+++ b/site/src/pages/GroupsPage/GroupPage.tsx
@@ -1,5 +1,4 @@
import Button from "@mui/material/Button";
-import Link from "@mui/material/Link";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
@@ -60,6 +59,7 @@ export const GroupPage: React.FC = () => {
const [isDeletingGroup, setIsDeletingGroup] = useState(false);
const isLoading = !groupData || !permissions;
const canUpdateGroup = permissions ? permissions.canUpdateGroup : false;
+ const styles = useStyles();
return (
<>
@@ -80,17 +80,22 @@ export const GroupPage: React.FC = () => {
-
- }>Settings
-
+ }
+ to="settings"
+ component={RouterLink}
+ >
+ Settings
+
{
setIsDeletingGroup(true);
}}
startIcon={}
+ className={styles.removeButton}
>
- Delete
+ Delete…
}
@@ -184,11 +189,11 @@ export const GroupPage: React.FC = () => {
- {group && (
+ {groupQuery.data && (
{
try {
@@ -303,10 +308,16 @@ const GroupMemberRow = (props: {
);
};
-const useStyles = makeStyles(() => ({
+const useStyles = makeStyles((theme) => ({
autoComplete: {
width: 300,
},
+ removeButton: {
+ color: theme.palette.error.main,
+ "&:hover": {
+ backgroundColor: "transparent",
+ },
+ },
}));
export default GroupPage;
From 7a157ec14869bdcfa3dd875e523aca58fd0a3f6f Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Mon, 25 Sep 2023 19:19:58 +0000
Subject: [PATCH 5/6] test
---
site/src/pages/UsersPage/UsersPage.test.tsx | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/site/src/pages/UsersPage/UsersPage.test.tsx b/site/src/pages/UsersPage/UsersPage.test.tsx
index 7773f0a251d6e..cc1e965eb36fd 100644
--- a/site/src/pages/UsersPage/UsersPage.test.tsx
+++ b/site/src/pages/UsersPage/UsersPage.test.tsx
@@ -9,11 +9,11 @@ import {
MockOwnerRole,
} from "testHelpers/entities";
import { Language as usersXServiceLanguage } from "xServices/users/usersXService";
-import * as API from "../../api/api";
-import { Role } from "../../api/typesGenerated";
+import * as API from "api/api";
+import { Role } from "api/typesGenerated";
import { Language as ResetPasswordDialogLanguage } from "./ResetPasswordDialog";
-import { renderWithAuth } from "../../testHelpers/renderHelpers";
-import { server } from "../../testHelpers/server";
+import { renderWithAuth } from "testHelpers/renderHelpers";
+import { server } from "testHelpers/server";
import { Language as UsersPageLanguage, UsersPage } from "./UsersPage";
const renderPage = () => {
@@ -29,7 +29,7 @@ const suspendUser = async (setupActionSpies: () => void) => {
await user.click(firstMoreButton);
const menu = await screen.findByRole("menu");
- const suspendButton = within(menu).getByText("Suspend");
+ const suspendButton = within(menu).getByText(/Suspend/);
await user.click(suspendButton);
@@ -60,7 +60,7 @@ const deleteUser = async (setupActionSpies: () => void) => {
await user.click(selectedMoreButton);
const menu = await screen.findByRole("menu");
- const deleteButton = within(menu).getByText("Delete");
+ const deleteButton = within(menu).getByText(/Delete/);
await user.click(deleteButton);
@@ -89,7 +89,7 @@ const activateUser = async (setupActionSpies: () => void) => {
fireEvent.click(suspendedMoreButton);
const menu = screen.getByRole("menu");
- const activateButton = within(menu).getByText("Activate");
+ const activateButton = within(menu).getByText(/Activate/);
fireEvent.click(activateButton);
// Check if the confirm message is displayed
@@ -115,7 +115,7 @@ const resetUserPassword = async (setupActionSpies: () => void) => {
fireEvent.click(firstMoreButton);
const menu = screen.getByRole("menu");
- const resetPasswordButton = within(menu).getByText("Reset password");
+ const resetPasswordButton = within(menu).getByText(/Reset password/);
fireEvent.click(resetPasswordButton);
From e0435066c97e3c1828e865c9596b7b704496a758 Mon Sep 17 00:00:00 2001
From: McKayla Washburn
Date: Mon, 25 Sep 2023 20:56:22 +0000
Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=A7=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx
index e1044b37f36f4..7c68d3ba246bf 100644
--- a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx
+++ b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx
@@ -4,7 +4,7 @@ import TableCell from "@mui/material/TableCell";
import TableRow from "@mui/material/TableRow";
import { ChooseOne, Cond } from "components/Conditionals/ChooseOne";
import { Pill } from "components/Pill/Pill";
-import { FC, ReactNode } from "react";
+import { type FC } from "react";
import * as TypesGen from "../../../api/typesGenerated";
import { combineClasses } from "../../../utils/combineClasses";
import { AvatarData } from "../../../components/AvatarData/AvatarData";