import {forwardRef, useRef, useState} from 'react'
import PropTypes from 'prop-types'
import Table from '@mui/material/Table'
import TableBody from '@mui/material/TableBody'
import TableCell from '@mui/material/TableCell'
import TableContainer from '@mui/material/TableContainer'
import TableHead from '@mui/material/TableHead'
import TableRow from '@mui/material/TableRow'
import Paper from '@mui/material/Paper'
import Button from '@mui/material/Button'
import {TableVirtuoso} from 'react-virtuoso'
import {Box, Typography} from '@mui/material'
import LogoutCountdown from '../session/logout-countdown.js'
import VersionDialog from './version-dialog.js'
import {formatDate} from '@/lib/format.js'
import {compareVersion} from '@/lib/directus.js'
const columns = [
{
width: 200,
label: 'Version',
dataKey: 'name',
},
{
width: 120,
label: 'Créée le',
dataKey: 'date_created',
numeric: true,
}
]
const VirtuosoTableComponents = {
Scroller: forwardRef((props, ref) => (
)),
Table: props => (
),
TableHead: forwardRef((props, ref) => ),
TableRow,
TableBody: forwardRef((props, ref) => ),
}
function fixedHeaderContent() {
return (
{columns.map(column => (
{column.label}
))}
)
}
function rowContent({
row,
accessToken,
userId,
countdownRef,
setError,
setIsErrorAlertOpen,
setIsOpenComparison,
setVersionCompare
}) {
const handleButtonClick = async versionId => {
const version = await compareVersion({
accessToken,
userId,
versionId,
countdownRef,
setError,
setIsErrorAlertOpen
})
if (version) {
setVersionCompare({...version, versionId})
setIsOpenComparison(true)
}
}
return (
<>
{columns.map(column => (
{column.dataKey === 'date_created'
? formatDate(row[column.dataKey], 'Pp')
: }
))}
>
)
}
export default function ListVersions({
collection,
data,
accessToken,
userId,
setError,
setIsErrorAlertOpen
}) {
const countdownRef = useRef()
const [isOpenComparison, setIsOpenComparison] = useState(false)
const [versionCompare, setVersionCompare] = useState(null)
const versionData = data.find(({id}) => id === versionCompare?.versionId)
return (
<>
{collection}
rowContent({
index, row, accessToken, userId, countdownRef, setError, setIsErrorAlertOpen, setIsOpenComparison, setVersionCompare
})}
/>
{isOpenComparison && (
)}
>
)
}
ListVersions.propTypes = {
collection: PropTypes.oneOf(['titres', 'articles']).isRequired,
data: PropTypes.array.isRequired,
accessToken: PropTypes.string.isRequired,
userId: PropTypes.string.isRequired,
setError: PropTypes.func.isRequired,
setIsErrorAlertOpen: PropTypes.func.isRequired
}