import { useQuery } from '@apollo/react-hooks'; import ErrorMessage from '../Error'; import { GET_RESOURCES_QUERY } from '../../graphql/queries'; const columns = [ { name: 'Name', key: 'name', render: ({ name, id }) => { name || id; }, }, { name: 'Title', key: 'title', }, { name: 'Description', key: 'description', }, { name: 'Format', key: 'format', }, { name: 'Size', key: 'size', }, { name: 'Created', key: 'created', }, { name: 'Updated', key: 'last_modified', }, { name: 'Download', key: 'download', render: ({ url, format }) => ( {format} ), }, ]; export default function About({ variables }) { const { loading, error, data } = useQuery(GET_RESOURCES_QUERY, { variables, // Setting this value to true will make the component rerender when // the "networkStatus" changes, so we are able to know if it is fetching // more data notifyOnNetworkStatusChange: true, }); if (error) return ; if (loading) return
Loading
; const { result } = data.dataset; const resource = result.resources.find( (item) => item.name === variables.resource ); return ( <> {columns.map(({ key, name }) => ( ))} {columns.map(({ key, render }) => ( ))}
{name}
{(render && typeof render === 'function' && render(resource)) || resource[key]}
); }