{
+ const updatedOrganization =
+ await updateOrganizationMutation.mutateAsync({
+ organizationId: organization.id,
+ req: values,
+ });
+ navigate(`/organizations/${updatedOrganization.name}/settings`);
+ displaySuccess("Organization settings updated.");
+ }}
+ onDeleteOrganization={async () => {
+ try {
+ await deleteOrganizationMutation.mutateAsync(organization.id);
+ displaySuccess("Organization deleted");
+ navigate("/organizations");
+ } catch (error) {
+ displayError(
+ getErrorMessage(error, "Failed to delete organization"),
+ );
+ }
+ }}
+ />
+ >
);
};
diff --git a/site/src/pages/OrganizationSettingsPage/ProvisionersPage/ProvisionersPage.tsx b/site/src/pages/OrganizationSettingsPage/ProvisionersPage/ProvisionersPage.tsx
index 051f916c3a..ced95a95e0 100644
--- a/site/src/pages/OrganizationSettingsPage/ProvisionersPage/ProvisionersPage.tsx
+++ b/site/src/pages/OrganizationSettingsPage/ProvisionersPage/ProvisionersPage.tsx
@@ -2,6 +2,7 @@ import { EmptyState } from "components/EmptyState/EmptyState";
import { TabLink, Tabs, TabsList } from "components/Tabs/Tabs";
import { useSearchParamsKey } from "hooks/useSearchParamsKey";
import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout";
+import { RequirePermission } from "modules/permissions/RequirePermission";
import type { FC } from "react";
import { Helmet } from "react-helmet-async";
import { pageTitle } from "utils/page";
@@ -16,26 +17,32 @@ const ProvisionersPage: FC = () => {
});
if (!organization || !organizationPermissions?.viewProvisionerJobs) {
+ return ;
+ }
+
+ const helmet = (
+
+
+ {pageTitle(
+ "Provisioners",
+ organization.display_name || organization.name,
+ )}
+
+
+ );
+
+ if (!organizationPermissions?.viewProvisioners) {
return (
<>
-
- {pageTitle("Provisioners")}
-
-
+ {helmet}
+
>
);
}
return (
<>
-
-
- {pageTitle(
- "Provisioners",
- organization.display_name || organization.name,
- )}
-
-
+ {helmet}
diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.tsx
index b04a2c6d10..7bb1d9e54a 100644
--- a/site/src/pages/TemplatePage/TemplatePageHeader.tsx
+++ b/site/src/pages/TemplatePage/TemplatePageHeader.tsx
@@ -168,7 +168,6 @@ export const TemplatePageHeader: FC = ({
onDeleteTemplate,
}) => {
const getLink = useLinks();
- const hasIcon = template.icon && template.icon !== "";
const templateLink = getLink(
linkToTemplate(template.organization_name, template.name),
);
diff --git a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx
index 5cb1e4fdde..845918a7b7 100644
--- a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx
+++ b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx
@@ -110,25 +110,6 @@ interface ExternalAuthRowProps {
onValidateExternalAuth: () => void;
}
-const StyledBadge = styled(Badge)(({ theme }) => ({
- "& .MuiBadge-badge": {
- // Make a circular background for the icon. Background provides contrast, with a thin
- // border to separate it from the avatar image.
- backgroundColor: `${theme.palette.background.paper}`,
- borderStyle: "solid",
- borderColor: `${theme.palette.secondary.main}`,
- borderWidth: "thin",
-
- // Override the default minimum sizes, as they are larger than what we want.
- minHeight: "0px",
- minWidth: "0px",
- // Override the default "height", which is usually set to some constant value.
- height: "auto",
- // Padding adds some room for the icon to live in.
- padding: "0.1em",
- },
-}));
-
const ExternalAuthRow: FC = ({
app,
unlinked,
diff --git a/site/src/pages/UserSettingsPage/Sidebar.tsx b/site/src/pages/UserSettingsPage/Sidebar.tsx
index 5cc8c54dcb..69d51ae3bb 100644
--- a/site/src/pages/UserSettingsPage/Sidebar.tsx
+++ b/site/src/pages/UserSettingsPage/Sidebar.tsx
@@ -22,7 +22,7 @@ interface SidebarProps {
}
export const Sidebar: FC = ({ user }) => {
- const { entitlements, experiments } = useDashboard();
+ const { entitlements } = useDashboard();
const showSchedulePage =
entitlements.features.advanced_template_scheduling.enabled;
diff --git a/site/src/pages/UsersPage/UsersPage.tsx b/site/src/pages/UsersPage/UsersPage.tsx
index 9d2aaadefc..c8677e3a44 100644
--- a/site/src/pages/UsersPage/UsersPage.tsx
+++ b/site/src/pages/UsersPage/UsersPage.tsx
@@ -23,7 +23,7 @@ import { useDashboard } from "modules/dashboard/useDashboard";
import { type FC, useState } from "react";
import { Helmet } from "react-helmet-async";
import { useMutation, useQuery, useQueryClient } from "react-query";
-import { useLocation, useNavigate, useSearchParams } from "react-router-dom";
+import { useNavigate, useSearchParams } from "react-router-dom";
import { pageTitle } from "utils/page";
import { generateRandomString } from "utils/random";
import { ResetPasswordDialog } from "./ResetPasswordDialog";
@@ -39,7 +39,6 @@ type UserPageProps = {
const UsersPage: FC = ({ defaultNewPassword }) => {
const queryClient = useQueryClient();
const navigate = useNavigate();
- const location = useLocation();
const searchParamsResult = useSearchParams();
const { entitlements } = useDashboard();
const [searchParams] = searchParamsResult;