import { useEffect, useState } from "react"; import { Modal, ModalContent } from "@app/components/v2"; import { SecretSync, TSecretSync } from "@app/hooks/api/secretSyncs"; import { CreateSecretSyncForm } from "./forms"; import { SecretSyncModalHeader } from "./SecretSyncModalHeader"; import { SecretSyncSelect } from "./SecretSyncSelect"; type Props = { isOpen: boolean; onOpenChange: (isOpen: boolean) => void; selectSync?: SecretSync | null; }; type ContentProps = { onComplete: (secretSync: TSecretSync) => void; selectedSync: SecretSync | null; setSelectedSync: (selectedSync: SecretSync | null) => void; }; const Content = ({ onComplete, setSelectedSync, selectedSync }: ContentProps) => { if (selectedSync) { return ( setSelectedSync(null)} destination={selectedSync} /> ); } return ; }; export const CreateSecretSyncModal = ({ onOpenChange, selectSync = null, ...props }: Props) => { const [selectedSync, setSelectedSync] = useState(selectSync); useEffect(() => { setSelectedSync(selectSync); }, [selectSync]); return ( { if (!isOpen) setSelectedSync(null); onOpenChange(isOpen); }} > ) : ( "Add Sync" ) } onPointerDownOutside={(e) => e.preventDefault()} className="max-w-2xl" bodyClassName="overflow-visible" subTitle={selectedSync ? undefined : "Select a third-party service to sync secrets to."} > { setSelectedSync(null); onOpenChange(false); }} selectedSync={selectedSync} setSelectedSync={setSelectedSync} /> ); };