import { useRef } from 'react' import { Dialog, DialogContent, DialogHeader, DialogSectionSeparator, DialogTitle } from 'ui' import { ReadReplicaForm } from './ReadReplicaForm' import type { RecommendedComputeForReadReplicas } from './recommendCompute' interface AddReadReplicaDialogProps { open: boolean onOpenChange: (open: boolean) => void onSuccess?: () => void onRecommendCompute: (size: RecommendedComputeForReadReplicas) => void } export const AddReadReplicaDialog = ({ open, onOpenChange, onSuccess, onRecommendCompute, }: AddReadReplicaDialogProps) => { const pendingRecommendationRef = useRef(null) const onClose = () => { onOpenChange(false) } const closeWithRecommendation = (size: RecommendedComputeForReadReplicas) => { pendingRecommendationRef.current = size onClose() } return ( { const recommendation = pendingRecommendationRef.current if (!recommendation) return // The recommendation replaces the trigger as the close destination. // Radix calls this after the close animation has completed. event.preventDefault() pendingRecommendationRef.current = null onRecommendCompute(recommendation) }} >
Add read replica onSuccess?.()} onRecommendCompute={closeWithRecommendation} />
) }