diff --git a/VERSION b/VERSION index d2158cf..b6c5265 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.24.6 +4.24.7 diff --git a/play-life-web/package.json b/play-life-web/package.json index 61bd776..81064dd 100644 --- a/play-life-web/package.json +++ b/play-life-web/package.json @@ -1,6 +1,6 @@ { "name": "play-life-web", - "version": "4.24.6", + "version": "4.24.7", "type": "module", "scripts": { "dev": "vite", diff --git a/play-life-web/src/App.jsx b/play-life-web/src/App.jsx index bb22a79..3e7d4f4 100644 --- a/play-life-web/src/App.jsx +++ b/play-life-web/src/App.jsx @@ -640,6 +640,10 @@ function AppContent() { // Если это модальное окно, не обрабатываем здесь - компоненты сами закроют его if (event.state && event.state.modalOpen) { + // Если модальных окон нет в DOM, это устаревшая запись — пропускаем её + if (!taskDetailModal && !wishlistDetailModal) { + window.history.back() + } return } diff --git a/play-life-web/src/components/WishlistDetail.jsx b/play-life-web/src/components/WishlistDetail.jsx index c1d028f..2ca8f9e 100644 --- a/play-life-web/src/components/WishlistDetail.jsx +++ b/play-life-web/src/components/WishlistDetail.jsx @@ -197,8 +197,25 @@ function WishlistDetail({ wishlistId, onNavigate, onRefresh, boardId, onClose, p const handleCloseDetail = (skipHistoryBack = false) => { // Если skipHistoryBack = true (например, при навигации на форму редактирования), - // просто закрываем модальное окно без history.back() - if (!skipHistoryBack && historyPushedForTaskRef.current) { + // закрываем модальные окна без удаления записей из истории + // App.jsx сам обработает навигацию и заменит запись task-detail на task-form через replaceState + // Запись wishlist-detail останется в истории, но экран будет закрыт + if (skipHistoryBack) { + // Сохраняем флаг перед сбросом + const hadWishlistHistory = historyPushedForWishlistRef.current + + // Закрываем модальные окна + historyPushedForTaskRef.current = false + setSelectedTaskForDetail(null) + historyPushedForWishlistRef.current = false + + // Закрываем экран желания через onClose + // Навигация на task-form уже происходит в TaskDetail, поэтому не вызываем onNavigate здесь + // App.jsx обработает навигацию и заменит запись task-detail на task-form через replaceState + if (hadWishlistHistory && onClose) { + onClose() + } + } else if (historyPushedForTaskRef.current) { window.history.back() } else { historyPushedForTaskRef.current = false