Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/dashboard/src/org-admin/MaintenanceModeCard.tsx
2499 views
1
/**
2
* Copyright (c) 2025 Gitpod GmbH. All rights reserved.
3
* Licensed under the GNU Affero General Public License (AGPL).
4
* See License.AGPL.txt in the project root for license information.
5
*/
6
7
import { FC } from "react";
8
import { useToast } from "../components/toasts/Toasts";
9
import { Button } from "@podkit/buttons/Button";
10
import { useMaintenanceMode } from "../data/maintenance-mode/maintenance-mode-query";
11
import { useSetMaintenanceModeMutation } from "../data/maintenance-mode/maintenance-mode-mutation";
12
import { ConfigurationSettingsField } from "../repositories/detail/ConfigurationSettingsField";
13
import { Heading3 } from "@podkit/typography/Headings";
14
15
export const MaintenanceModeCard: FC = () => {
16
const { isMaintenanceMode, isLoading } = useMaintenanceMode();
17
const setMaintenanceModeMutation = useSetMaintenanceModeMutation();
18
const toast = useToast();
19
20
const toggleMaintenanceMode = async () => {
21
try {
22
const newState = !isMaintenanceMode;
23
const result = await setMaintenanceModeMutation.mutateAsync({ enabled: newState });
24
25
toast.toast({
26
message: `Maintenance mode ${result ? "enabled" : "disabled"}`,
27
type: "success",
28
});
29
} catch (error) {
30
console.error("Failed to toggle maintenance mode", error);
31
toast.toast({ message: "Failed to toggle maintenance mode", type: "error" });
32
}
33
};
34
35
return (
36
<ConfigurationSettingsField>
37
<div className="flex justify-between items-center">
38
<div>
39
<Heading3>Maintenance Mode</Heading3>
40
<p className="text-pk-content-tertiary">
41
When enabled, users cannot start new workspaces and a notification is displayed.
42
</p>
43
</div>
44
<Button
45
variant={isMaintenanceMode ? "secondary" : "default"}
46
onClick={toggleMaintenanceMode}
47
disabled={isLoading}
48
>
49
{isLoading ? "Loading..." : isMaintenanceMode ? "Disable" : "Enable"}
50
</Button>
51
</div>
52
</ConfigurationSettingsField>
53
);
54
};
55
56