import {useState, useEffect, forwardRef} from 'react'
import {useRouter} from 'next/router'
import PropTypes from 'prop-types'
import Container from '@mui/material/Container'
import Grid from '@mui/material/Grid'
import Skeleton from '@mui/material/Skeleton'
import Card from '@mui/material/Card'
import CardActionArea from '@mui/material/CardActionArea'
import CardContent from '@mui/material/CardContent'
import Typography from '@mui/material/Typography'
import MuiAlert from '@mui/material/Alert'
import Snackbar from '@mui/material/Snackbar'
import ExplicitIcon from '@mui/icons-material/Explicit'
import {styled} from '@mui/material/styles'
import {format} from 'date-fns'
import {fr} from 'date-fns/locale'
import Image from 'next/image'
import {useMediaQuery} from '@mui/material'
import {jwennDenyeTeks} from '../../lib/oki-api'
const PREFIX = 'denye-teks'
const TEKS_PREFIX = 'teks-kat'
const KAT_ARRAY = Array.from({length: 6})
const classes = {
container: `${PREFIX}-container`
}
const teksClasses = {
root: `${TEKS_PREFIX}-root`,
media: `${TEKS_PREFIX}-media`
}
const Root = styled('div')(() => ({
[`&.${classes.container}`]: {
marginTop: '1em',
marginBottom: '2em'
}
}))
const StyledGrid = styled(Grid)({
[`& .${teksClasses.root}`]: {
maxWidth: 345
},
[`& .${teksClasses.media}`]: {
height: 240,
objectFit: 'contain'
}
})
const Alert = forwardRef(function Alert(props, ref) {
return
})
export default function DenyeTeks({error, setError}) {
const router = useRouter()
const [teks, setTeks] = useState([])
const [isLoading, setIsLoading] = useState(true)
const isMobile = useMediaQuery('(max-width:527px)')
const [isOpen, setIsOpen] = useState(false)
const handleClick = slug => {
router.push(`/paroles/${slug}#${slug}`).then(() => window.scrollTo(0, 0))
}
const noImageUrl = 'https://place-hold.it/140x140?text=Image%20indisponible'
const formatDate = date => format(new Date(date), 'P', {locale: fr})
useEffect(() => {
const getTeks = async () => {
try {
const denyeTeks = await jwennDenyeTeks()
setTeks(denyeTeks)
} catch (error_) {
setIsOpen(true)
setError(error_)
setIsLoading(false)
}
}
getTeks()
setIsLoading(false)
}, [setError])
const handleClose = (event, reason) => {
if (reason === 'clickaway') {
return
}
setIsOpen(false)
}
return (
{error && (
Les éléments ne peuvent pas s’afficher : {error.message}
)}
{!error && KAT_ARRAY.map((kat, index) => (
{/* eslint-disable-line react/no-array-index-key */}
{isLoading || teks.length === 0 ? (
) : (
handleClick(teks[index].slug)}>
{teks[index].tit}
{teks[index].eksplisit && (
)}
{teks[index].user && (
<>
(texte soumis par {teks[index].user.username})
>
)}
{teks[index].userAdmin && !teks[index].user && (
<>
(texte soumis par {teks[index].userAdmin})
>
)}
{new Intl.ListFormat('fr').format(teks[index].awtis.map(({alias}) => alias))}
{teks[index].lanne}
Publié le : {formatDate(teks[index].published_at)}
)}
))}
)
}
DenyeTeks.defaultProps = {
error: null
}
DenyeTeks.propTypes = {
error: PropTypes.object,
setError: PropTypes.func.isRequired
}