frontend_adaptive_learning/src/roles/admin/manage_exercises/hooks/useExercises.jsx
2024-10-31 09:32:14 +07:00

63 lines
1.6 KiB
JavaScript

import { useState, useEffect } from 'react';
import exerciseService from '../services/serviceExercises';
const useExercise = () => {
const [levels, setLevels] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [search, setSearch] = useState("");
const [sort, setSort] = useState("");
const [page, setCurrentPage] = useState(1);
const [limit, setLimit] = useState(7);
const [totalPages, setTotalPages] = useState(0);
const [totalData, setTotalData] = useState(null);
const fetchData = async () => {
setLoading(true);
try {
const data = await exerciseService.fetchData(search, sort, page, limit);
setTotalPages(data.payload.totalPages);
setTotalData(data.payload.totalItems);
setLevels(data.payload.levels);
} catch (err) {
setError(err);
} finally {
setLoading(false);
}
};
const handleSerachChange = () => {
fetchData();
setCurrentPage(1);
}
const handlePageChange = (pages) => {
setCurrentPage(pages);
}
const handleLimitsChange = (e) => {
setLimit(e.target.value);
setCurrentPage(1);
}
useEffect(() => {
fetchData();
}, [page, limit]);
return {
levels,
loading,
error,
page,
totalData,
totalPages,
setSearch,
handlePageChange,
handleLimitsChange,
handleSerachChange,
};
};
export default useExercise;