diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx
index 9c8a78a..c2068e8 100644
--- a/src/pages/Home.tsx
+++ b/src/pages/Home.tsx
@@ -21,6 +21,7 @@ import { getRouteCourseExercises } from "../shared/consts/router"
import type { Course, User, CoursesApiResponse } from "../types/course"
+
interface CourseExercises {
id_exercise: number
day: number
@@ -50,12 +51,6 @@ interface ProgressStats {
overallProgress: number
}
-// interface RouteParams {
-// courseId: string
-// exerciseId?: string // Made optional since we might have exerciseIndex instead
-// exerciseIndex?: string // Added exerciseIndex parameter
-// }
-
export default function Home() {
const history = useHistory()
const [currentDate, setCurrentDate] = useState("")
@@ -65,7 +60,6 @@ export default function Home() {
const [currentExercise, setCurrentExercise] = useState
(null)
const [loadingCurrentExercise, setLoadingCurrentExercise] = useState(false)
- // const { courseId, exerciseId, exerciseIndex } = useParams()
const [progressStats, setProgressStats] = useState({
completedExercises: 0,
@@ -91,11 +85,12 @@ export default function Home() {
"Content-Type": "application/json",
},
})
+ console.log("!получили по запросу", response.data)
+ //упражнения курса
const exercises = response.data.course_exercises || []
- totalExercises += exercises.length
- console.log("упражнения для каждого курса", response.data)
+ totalExercises += exercises.length
let courseCompletedExercises = 0
@@ -143,11 +138,61 @@ export default function Home() {
setLoadingCurrentExercise(true)
try {
- // Берем первый доступный курс
- const firstCourse = courses[0]
+ let targetCourse: Course | null = null
- // Загружаем упражнения курса
- const response = await connect.get(`/pacient/${firstCourse.id}`, {
+ // Проходим по всем курсам и ищем незавершенный
+ for (const course of courses) {
+ // Загружаем упражнения для каждого курса
+ const response = await connect.get(`/pacient/${course.id}`, {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ "Content-Type": "application/json",
+ },
+ })
+
+ const exercises = response.data.course_exercises || []
+
+ if (exercises.length === 0) continue // Пропускаем курсы без упражнений
+
+ // Проверяем, есть ли незавершенные упражнения в этом курсе
+ let hasIncompleteExercises = false
+
+ for (const exercise of exercises) {
+ const storageKey = `exerciseProgress_${course.id}_${exercise.id_exercise}_day_${exercise.day}`
+ const savedProgress = localStorage.getItem(storageKey)
+
+ let isCompleted = false
+ if (savedProgress) {
+ const progress = JSON.parse(savedProgress)
+ isCompleted =
+ progress.status === 1 && progress.completedSets && progress.completedSets.length >= exercise.count
+ }
+
+ if (!isCompleted) {
+ hasIncompleteExercises = true
+ break // Нашли незавершенное упражнение, можно остановиться
+ }
+ }
+
+ // Если в курсе есть незавершенные упражнения, выбираем его
+ if (hasIncompleteExercises) {
+ targetCourse = course
+ break // Берем первый найденный незавершенный курс
+ }
+ }
+
+ // Если все курсы завершены, берем последний курс
+ if (!targetCourse && courses.length > 0) {
+ targetCourse = courses[courses.length - 1]
+ }
+
+ if (!targetCourse) {
+ setCurrentExercise(null)
+ return
+ }
+
+ // Загружаем упражнения выбранного курса
+ const response = await connect.get(`/pacient/${targetCourse.id}`, {
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
@@ -182,7 +227,7 @@ export default function Home() {
const exercise = dayExercises[i]
// Проверяем прогресс упражнения в localStorage
- const storageKey = `exerciseProgress_${firstCourse.id}_${exercise.id_exercise}_day_${day}`
+ const storageKey = `exerciseProgress_${targetCourse.id}_${exercise.id_exercise}_day_${day}`
const savedProgress = localStorage.getItem(storageKey)
let isCompleted = false
@@ -194,7 +239,7 @@ export default function Home() {
if (!isCompleted) {
foundExercise = {
- courseId: firstCourse.id.toString(),
+ courseId: targetCourse.id.toString(),
exerciseId: exercise.id_exercise.toString(),
exerciseIndex: i,
day: Number(day),
@@ -213,7 +258,7 @@ export default function Home() {
if (!foundExercise && exercises.length > 0) {
const lastExercise = exercises[exercises.length - 1]
foundExercise = {
- courseId: firstCourse.id.toString(),
+ courseId: targetCourse.id.toString(),
exerciseId: lastExercise.id_exercise.toString(),
exerciseIndex: exercises.length - 1,
day: lastExercise.day,
@@ -321,9 +366,14 @@ export default function Home() {
}
const handleExercisesClick = () => {
- if (courses.length > 0) {
+ if (currentExercise) {
+ // Используем courseId из текущего упражнения (незавершенный курс)
+ history.push(getRouteCourseExercises(Number.parseInt(currentExercise.courseId)))
+ } else if (courses.length > 0) {
+ // Fallback к первому курсу если нет текущего упражнения
history.push(getRouteCourseExercises(courses[0].id))
} else {
+ // Fallback к странице курсов если нет курсов
history.push(getRouteCourses())
}
}