import { Link, Table, Thead, Tr, Th, TableContainer, Text, Tbody, Td } from '@chakra-ui/react'; import { FC } from 'react'; import { OpenPGPSignaturesData, ReleaseData } from '../../types'; import { getParsedDate } from '../../utils'; interface Props { columnHeaders: string[]; data: any; } export const DataTable: FC = ({ columnHeaders, data }) => { // {} is a backup object for initial render where data is still undefined, to avoid errors const dataType = Object.keys(data[0] || {})?.includes('release') ? 'Releases' : 'OpenPGP Signatures'; return ( {columnHeaders.map((columnHeader, idx) => { return ( ); })} {dataType === 'Releases' && data.map((r: ReleaseData, idx: number) => { return ( {Object.entries(r).map((item, idx) => { const objectItems = ['release', 'commit', 'signature']; if (objectItems.includes(item[0])) { const label = item[1].label; const url = item[1].url; return ( ); } if (item[0] === 'published') { return ( ); } return ( ); })} ); })} {dataType === 'OpenPGP Signatures' && data.map((o: OpenPGPSignaturesData, idx: number) => { return ( {Object.entries(o).map((item, idx) => { if (item[0] === 'openpgp key') { const label = item[1].label; const url = item[1].url; return ( ); } return ( ); })} ); })}
{columnHeader}
{item[0] === 'commit' ? `${label}...` : label} {getParsedDate(item[1])} {item[1]}
{label} {item[1]}
); };