"use client" import {ReactNode, useState} from "react"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import {Button} from "@/components/ui/button"; import {DatabaseWith} from "@/db/schema/07_database"; import {NotificationChannel} from "@/db/schema/09_notification-channel"; import {Separator} from "@/components/ui/separator"; import {Badge} from "@/components/ui/badge"; import {StorageChannel} from "@/db/schema/12_storage-channel"; import {ChannelKind, getChannelTextBasedOnKind} from "@/components/wrappers/dashboard/admin/channels/helpers/common"; import {ChannelPoliciesForm} from "@/components/wrappers/dashboard/database/channels-policy/policy-form"; type ChannelPoliciesModalProps = { database: DatabaseWith; channels: NotificationChannel[] | StorageChannel[]; organizationId: string; kind: ChannelKind; icon: ReactNode; } export const ChannelPoliciesModal = ({icon, kind, database, channels, organizationId}: ChannelPoliciesModalProps) => { const [open, setOpen] = useState(false); const channelText = getChannelTextBasedOnKind(kind) const channelsFiltered = channels .filter((channel) => channel.enabled) const channelsIds = channelsFiltered .map(channel => channel.id); const activeAlertPolicies = database.alertPolicies?.filter((policy) => channelsIds.includes(policy.notificationChannelId)); const activeStoragePolicies = database.storagePolicies?.filter((policy) => channelsIds.includes(policy.storageChannelId)); const activePolicies = kind === "notification" ? activeAlertPolicies : activeStoragePolicies; return ( {channelText} policies Add and manage your database {channelText.toLowerCase()} policies setOpen(false)} kind={kind} /> ) }