import { Form, Input, Layout, Modal, Spin } from 'antd' import React, { useEffect, useState } from 'react' import { RouteComponentProps, useHistory } from 'react-router' import useSWR from 'swr' import useSWRImmutable from 'swr/immutable' import { fetcher } from '../../utils/Fetcher' import Error from './components/Error' import TableFiles from './components/TableFiles' import Viewer from './components/Viewer' import { useDebounce } from 'use-debounce/lib' interface PageProps extends RouteComponentProps<{ id: string }> {} const View: React.FC void }> = ({ match, isInDrawer, onCloseDrawer }) => { const [openPassModal, setOpenPassModal] = useState(false) const history = useHistory() const [paramId] = useDebounce(match.params.id, 250) const { data: me } = useSWRImmutable('/users/me', fetcher) const { data, error, mutate } = useSWR(paramId || match.params.id ? `/files/${paramId || match.params.id}?password=${sessionStorage.getItem(`pass-${paramId || match.params.id}`)}` : null, fetcher) const [form] = Form.useForm() useEffect(() => { if (error?.status === 400) { setOpenPassModal(true) } }, [error]) useEffect(() => { if (data?.file.type === 'folder') { if (me?.user) { if (data.file.user_id === me.user.id) { return history.replace(`/dashboard?parent=${data.file.id}`) } else if (data.file.shared_options?.includes(me.user.id)) { return history.replace(`/dashboard/shared?parent=${data.file.id}`) } } else if (data.file.sharing_options?.includes('*')) { // setParent(data.file) // setBreadcrumbs([data.file]) // const searchParams = new URLSearchParams(window.location.search) // searchParams.set('parent', data.file.id) // return history.replace(`${location.pathname}?${searchParams.toString()}`) } } }, [data, me]) const submit = () => { const { password } = form.getFieldsValue() sessionStorage.setItem(`pass-${paramId || match.params.id}`, password) mutate() setOpenPassModal(false) } return <> {!data && !error ? : error || data && data.file.upload_progress !== null ? : data?.file.type === 'folder' && data?.file.sharing_options?.includes('*') ? : } setOpenPassModal(false)} okText="Open" onOk={submit}>
} export default View