import { useParams } from 'common' import { useState } from 'react' import { toast } from 'sonner' import { Button, cn, Dialog, DialogContent, DialogFooter, DialogHeader, DialogSection, DialogSectionSeparator, DialogTitle, DialogTrigger, } from 'ui' import { Admonition } from 'ui-patterns' import { DestinationType } from './DestinationPanel/DestinationPanel.types' import { DocsButton } from '@/components/ui/DocsButton' import { UpgradePlanButton } from '@/components/ui/UpgradePlanButton' import { useCreateTenantSourceMutation } from '@/data/replication/create-tenant-source-mutation' import { DOCS_URL } from '@/lib/constants' const EnableReplicationModal = () => { const { ref: projectRef } = useParams() const [open, setOpen] = useState(false) const { mutate: createTenantSource, isPending: creatingTenantSource } = useCreateTenantSourceMutation({ onSuccess: () => { toast.success('External replication has been successfully enabled!') setOpen(false) }, onError: (error) => { toast.error(`Failed to enable external replication: ${error.message}`) }, }) const onEnableReplication = async () => { if (!projectRef) return console.error('Project ref is required') createTenantSource({ projectRef }) } return ( ) } export const EnableReplicationCallout = ({ type, className, hasAccess, }: { type?: DestinationType | null className?: string hasAccess: boolean }) => { return (
{hasAccess ? 'Enable external replication' : 'Upgrade to the Pro plan'} to start replicating your database changes to {type ?? 'data warehouses and analytics platforms'}