From 3d5cd3a4ac0998f880073ae484536f86ee82ece9 Mon Sep 17 00:00:00 2001 From: Tatyana Date: Tue, 2 Sep 2025 11:51:08 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B5=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B5=D1=81=D1=81=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B5=20?= =?UTF-8?q?=D0=B2=20=D0=91=D0=94=20/=20=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B8=20user=5Fexercise=5Fcourse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Exercise.tsx | 100 ++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 52 deletions(-) diff --git a/src/pages/Exercise.tsx b/src/pages/Exercise.tsx index f33062e..ca8d852 100644 --- a/src/pages/Exercise.tsx +++ b/src/pages/Exercise.tsx @@ -12,6 +12,7 @@ import BottomNavigation from "../components/BottomNavigation"; // import { getRouteCourseComplete } from "../shared/consts/router"; import { connect } from "../confconnect"; +import axios from "axios" //В TypeScript ключевое слово interface используется для определения интерфейсов — это способ описать структуру объектов, то есть какие свойства и методы у них есть, и какие типы данных они содержат @@ -56,29 +57,8 @@ export const Exercise = () => { // Ограничение — прогресс сохраняется только на устройстве пользователя. // Если нужно синхронизировать между устройствами или сохранять историю, потребуется бэкенд. //сохраняем прогресс - const handlePause = () => { - const currentProgress = { - exerciseId: exercise?.id, - position: currentTime, - set: currentSet, - }; - localStorage.setItem('exerciseProgress', JSON.stringify(currentProgress)); - console.log('прогресс:', currentProgress) - // Отправляем на сервер - connect.post(`pacient/${courseId}/${exerciseId}`, currentProgress) - console.log('Отправляемые данные:', currentProgress); - connect.post('http://localhost:8093/pacient/1/2', currentProgress) - .then((response) => { - console.log('Ответ сервера при отправке прогресса:', response.status); - // Можно добавить обработку успешного ответа - }) - .catch((error) => { - console.error('Ошибка при отправке прогресса:', error); - // Обработка ошибок - }); - }; - // В начале упражнения + // Восстановление прогресса при загрузке useEffect(() => { const savedProgress = localStorage.getItem('exerciseProgress'); if (savedProgress) { @@ -104,8 +84,8 @@ export const Exercise = () => { connect .get(`pacient/${courseId}/${exerciseId}`) .then((response) => { - console.log("Response status:", response.status) - console.log("Response data:", response.data) + // console.log("Response status:", response.status) + // console.log("Response data:", response.data) const exerciseData = response.data @@ -151,6 +131,43 @@ export const Exercise = () => { }) }, [courseId, exerciseId]) + + + +const handlePause = async () => { + // Формируем данные в том формате, который ожидает сервер + const progressData = { + time_users: formatTime(currentTime), // Отправляем как строку в формате MM:SS + status: currentSet, // Отправляем текущий подход как статус + } + + // Сохраняем в localStorage + localStorage.setItem( + "exerciseProgress", + JSON.stringify({ + exerciseId: exercise?.id, + position: currentTime, + set: currentSet, + }), + ) + + try { + console.log("Отправляем данные:", progressData) + + // Используем connect (axios) вместо прямого axios + const response = await connect.post(`pacient/${courseId}/${exerciseId}`, progressData) + + console.log("Ответ сервера при отправке прогресса:", response.status) + console.log("Прогресс успешно сохранен на сервере") + } catch (error) { + console.error("Ошибка при отправке прогресса:", error) + if (error.response) { + console.error("Ответ сервера:", error.response.status, error.response.data) + } + } + } + + useEffect(() => { let interval: NodeJS.Timeout | undefined if (isPlaying) { @@ -363,15 +380,18 @@ export const Exercise = () => {
- {/* */} - - -