import {PageParams} from "@/types/next"; import { Page, PageContent, PageHeader, PageTitle, } from "@/features/layout/components/page"; import {currentUser} from "@/lib/auth/current-user"; import {getActiveMember, getOrganization} from "@/lib/auth/auth"; import {notFound} from "next/navigation"; import {Metadata} from "next"; import {OrganizationTabs} from "@/features/organizations/components/organization-tabs"; import {getOrganizationChannels} from "@/db/services/notification-channel"; import {computeOrganizationPermissions} from "@/lib/acl/organization-acl"; import {getOrganizationStorageChannels} from "@/db/services/storage-channel"; import {DeleteOrganizationButton} from "@/features/organizations/components/organization-delete-button"; import {EditOrganizationDialog} from "@/features/organizations/components/organization-edit-dialog"; import {db} from "@/db"; import {isNull} from "drizzle-orm"; import * as drizzleDb from "@/db"; import {eq} from "drizzle-orm"; import {getOrganizationAgents} from "@/db/services/agent"; import {Tooltip, TooltipContent, TooltipTrigger} from "@/components/ui/tooltip"; export const metadata: Metadata = { title: "Settings", }; export default async function RoutePage(props: PageParams<{ slug: string }>) { const organization = await getOrganization({}); const user = await currentUser(); const activeMember = await getActiveMember(); if (!organization || !activeMember || !user) { notFound(); } const notificationChannels = await getOrganizationChannels(organization.id); const storageChannels = await getOrganizationStorageChannels(organization.id); const agents = await getOrganizationAgents(organization.id); const permissions = computeOrganizationPermissions(activeMember); const users = await db.query.user.findMany({ where: (fields) => isNull(fields.deletedAt), }); const organizationWithMembers = await db.query.organization.findFirst({ where: eq(drizzleDb.schemas.organization.id, organization.id), with: { projects: { where: eq(drizzleDb.schemas.project.isArchived, false), }, members: { with: { user: true, }, }, }, }); if (!organizationWithMembers) notFound(); return (
Organization settings
{permissions.canManageSettings && organization.slug !== "default" && ( )}
{permissions.canManageDangerZone && organization.slug !== "default" && (
0} organizationSlug={organization.slug} />
{organizationWithMembers.projects.length > 0 && (

Your organization has some projects associated with it. Please delete them before deleting the organization.

)}
)}
); }