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 = () => { - - - + } @@ -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";