"use client"; import { useState } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; import useSWR from "swr"; import { Loader as LoaderIcon } from "lucide-react"; // types import { TInstanceConfigurationKeys } from "@plane/types"; import { Button, getButtonStyling, Loader, setPromiseToast, ToggleSwitch } from "@plane/ui"; import { cn } from "@plane/utils"; // components import { WorkspaceListItem } from "@/components/workspace"; // hooks import { useInstance, useWorkspace } from "@/hooks/store"; const WorkspaceManagementPage = observer(() => { // states const [isSubmitting, setIsSubmitting] = useState(false); // store const { formattedConfig, fetchInstanceConfigurations, updateInstanceConfigurations } = useInstance(); const { workspaceIds, loader: workspaceLoader, paginationInfo, fetchWorkspaces, fetchNextWorkspaces, } = useWorkspace(); // derived values const disableWorkspaceCreation = formattedConfig?.DISABLE_WORKSPACE_CREATION ?? ""; const hasNextPage = paginationInfo?.next_page_results && paginationInfo?.next_cursor !== undefined; // fetch data useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations()); useSWR("INSTANCE_WORKSPACES", () => fetchWorkspaces()); const updateConfig = async (key: TInstanceConfigurationKeys, value: string) => { setIsSubmitting(true); const payload = { [key]: value, }; const updateConfigPromise = updateInstanceConfigurations(payload); setPromiseToast(updateConfigPromise, { loading: "Saving configuration", success: { title: "Success", message: () => "Configuration saved successfully", }, error: { title: "Error", message: () => "Failed to save configuration", }, }); await updateConfigPromise .then(() => { setIsSubmitting(false); }) .catch((err) => { console.error(err); setIsSubmitting(false); }); }; return (
Workspaces on this instance
See all workspaces and control who can create them.
{formattedConfig ? (
Prevent anyone else from creating a workspace.
Toggling this on will let only you create workspaces. You will have to invite users to new workspaces.
{ if (Boolean(parseInt(disableWorkspaceCreation)) === true) { updateConfig("DISABLE_WORKSPACE_CREATION", "0"); } else { updateConfig("DISABLE_WORKSPACE_CREATION", "1"); } }} size="sm" disabled={isSubmitting} />
) : ( )} {workspaceLoader !== "init-loader" ? ( <>
All workspaces on this instance{" "} • {workspaceIds.length} {workspaceLoader && ["mutation", "pagination"].includes(workspaceLoader) && ( )}
You can't yet delete workspaces and you can only go to the workspace if you are an Admin or a Member.
Create workspace
{workspaceIds.map((workspaceId) => ( ))}
{hasNextPage && (
)} ) : ( )}
); }); export default WorkspaceManagementPage;