import {Fragment, useState} from 'react'; import {AnimatePresence, m} from 'framer-motion'; import {SharePanel} from './share-panel'; import {ShareableLinkPanel} from './link-panel/shareable-link-panel'; import {LinkSettingsDialog} from './link-panel/link-settings-dialog'; import {Dialog} from '@common/ui/overlays/dialog/dialog'; import {DialogHeader} from '@common/ui/overlays/dialog/dialog-header'; import {DialogBody} from '@common/ui/overlays/dialog/dialog-body'; import {Trans} from '@common/i18n/trans'; import {DriveEntry} from '../files/drive-entry'; import {useQuery} from '@tanstack/react-query'; import {apiClient} from '@common/http/query-client'; import {DriveQueryKeys} from '../drive-query-keys'; export type ShareDialogActivePanel = 'main' | 'linkSettings'; interface ShareDialogProps { entry: DriveEntry; focusLinkInput?: boolean; } export function ShareDialog({ entry: initialEntry, focusLinkInput, }: ShareDialogProps) { const { data: {fileEntry}, } = useQuery({ queryKey: DriveQueryKeys.fetchFileEntry(initialEntry.id), queryFn: () => apiClient .get(`drive/file-entries/${initialEntry.id}/model`) .then(response => response.data as {fileEntry: DriveEntry}), initialData: {fileEntry: initialEntry}, }); const [activePanel, setActivePanel] = useState('main'); return ( {activePanel === 'linkSettings' ? ( ) : ( )} ); } interface MainDialogProps { setActivePanel: (name: ShareDialogActivePanel) => void; entry: DriveEntry; focusLinkInput?: boolean; } function MainDialog({setActivePanel, entry, focusLinkInput}: MainDialogProps) { return ( ); }