diff --git a/components/konstitisyon/index.js b/components/konstitisyon/index.js index 5f4fadf..5c7a822 100644 --- a/components/konstitisyon/index.js +++ b/components/konstitisyon/index.js @@ -116,6 +116,6 @@ export default function Konstitisyon({session, titres, articles}) { Konstitisyon.propTypes = { session: PropTypes.object, - titres: PropTypes.object.isRequired, - articles: PropTypes.object.isRequired + titres: PropTypes.array.isRequired, + articles: PropTypes.array.isRequired } diff --git a/components/konstitisyon/list-comments.js b/components/konstitisyon/list-comments.js index b1daabd..8e7eec8 100644 --- a/components/konstitisyon/list-comments.js +++ b/components/konstitisyon/list-comments.js @@ -10,6 +10,7 @@ import Typography from '@mui/material/Typography' import Pagination from '@mui/material/Pagination' import Divider from '@mui/material/Divider' import Box from '@mui/material/Box' +import CircularProgress from '@mui/material/CircularProgress' import {readItems, withToken} from '@directus/sdk' import SessionExpired from '../session/session-expired.js' import {directusClient, handleUserStatus} from '@/lib/directus.js' @@ -20,6 +21,7 @@ const commentsPerPage = process.env.NEXT_PUBLIC_COMMENTS_PER_PAGE || 2 export default function ListComments({session, selectedTitre, isOpen, setIsOpen, setError, setIsErrorAlertOpen}) { const countdownRef = useRef() const [comments, setComments] = useState([]) + const [isLoading, setIsLoading] = useState(false) const [page, setPage] = useState(1) const pageCount = Math.ceil(comments.length / commentsPerPage) @@ -27,8 +29,15 @@ export default function ListComments({session, selectedTitre, isOpen, setIsOpen, const startIndex = (page - 1) * commentsPerPage const selectedComments = comments.slice(startIndex, startIndex + commentsPerPage) + useEffect(() => { + setComments([]) + setPage(1) + }, [selectedTitre?.id]) + useEffect(() => { async function fetchComments() { + setIsLoading(true) + try { await handleUserStatus(session.user.accessToken, session.user.userId) @@ -54,6 +63,8 @@ export default function ListComments({session, selectedTitre, isOpen, setIsOpen, setError(error?.errors[0]?.message) setIsErrorAlertOpen(true) } + } finally { + setIsLoading(false) } } @@ -74,42 +85,52 @@ export default function ListComments({session, selectedTitre, isOpen, setIsOpen, <> Commentaires - - {selectedComments && selectedComments.length > 0 ? selectedComments.map(({id, date_created, contenu, user_created}) => ( - - - - @{user_created.split('-')[0]} - - } - secondary={ - <> - - {contenu} - -
- {formatDate(date_created, 'PPPPpp')} - - } - /> -
+ {isLoading ? ( + + + + ) : ( + <> + + {selectedComments && selectedComments.length > 0 ? selectedComments.map(({id, date_created, contenu, user_created}) => ( + + + + @{user_created.split('-')[0]} + + } + secondary={ + <> + + {contenu} + +
+ {formatDate(date_created, 'PPPPpp')} + + } + /> +
- -
- )) : ( - Aucun commentaire - )} -
- - - + +
+ )) : ( + Aucun commentaire + )} +
+ {pageCount > 1 && ( + + + + )} + + )}
diff --git a/lib/directus.js b/lib/directus.js index a8d0157..3f4f2f2 100644 --- a/lib/directus.js +++ b/lib/directus.js @@ -141,9 +141,8 @@ export async function listVersions({ return versions } catch (error) { - console.log('error', error) - - if (error?.errors[0]?.message === 'Token expired.') { + + if (error) { countdownRef.current.startCountdown() } else { console.log(error?.errors[0]?.message)