import React, { useState, useEffect } from 'react'; import axios from 'axios'; import Container from '@mui/material/Container'; import Grid from '@mui/material/Grid'; import Card from '@mui/material/Card'; import CardMedia from '@mui/material/CardMedia'; import CardContent from '@mui/material/CardContent'; import Typography from '@mui/material/Typography'; import Pagination from '@mui/material/Pagination'; import { Link } from 'react-router-dom'; import CircularProgress from '@mui/material/CircularProgress'; const config = { Host: 'http://192.168.31.121:4444', }; const Main = () => { const [pagination, setPagination] = useState({ movies: [], page: 1, total: 1, length: 1, }); const [loading, setLoading] = useState(false); const limit = 8; const fetchMovies = async (page) => { setLoading(true); try { const response = await axios.get( `${config.Host}/movie/?page=${page}&limit=${limit}` ); if (response.status === 200) { const data = response.data.data; setPagination({ movies: data.items, page: page, total: data.total, length: Math.ceil(data.total / limit), }); localStorage.setItem('lastPage', page); } } catch (error) { console.error('Error fetching movies:', error); } finally { setLoading(false); } }; useEffect(() => { const lastPage = localStorage.getItem('lastPage') || 1; fetchMovies(lastPage); }, []); const handlePageChange = (event, value) => { fetchMovies(value); }; const truncateFilename = (filename, maxLength) => { return filename.length > maxLength ? filename.substring(0, maxLength - 3) + '...' : filename; }; return (
{loading ? (
) : ( {pagination.movies.map((item) => ( {truncateFilename(item.filename, 20)} ))} )}
); }; export default Main;