From d66853472f41cc84f1fbe7be4649f80ab5f3a989 Mon Sep 17 00:00:00 2001 From: Professional Date: Sat, 24 May 2025 01:53:47 +0700 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/SwipeView.vue | 55 ++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/src/views/SwipeView.vue b/src/views/SwipeView.vue index e48bd4e..08f1122 100644 --- a/src/views/SwipeView.vue +++ b/src/views/SwipeView.vue @@ -298,9 +298,11 @@ const startTouch = (event) => { touchStartX.value = event.touches[0].clientX; touchStartY.value = event.touches[0].clientY; - // Сбросить конечные точки + // Сбросить конечные точки и время touchEndX.value = 0; touchEndY.value = 0; + dragStartTime.value = 0; // Сбрасываем время для touch событий + hasActuallyMoved.value = false; } }; @@ -515,25 +517,6 @@ const endDrag = () => { const handleCardClick = (event, user) => { console.log('[SwipeView] handleCardClick вызван для пользователя:', user.name, user._id); - // Проверяем, что это был именно клик, а не завершение drag/swipe операции - const dragDuration = Date.now() - dragStartTime.value; - const totalMovement = Math.sqrt( - Math.pow(dragOffset.value.x || 0, 2) + Math.pow(dragOffset.value.y || 0, 2) - ); - - console.log('[SwipeView] Проверка клика:', { - hasActuallyMoved: hasActuallyMoved.value, - totalMovement, - dragDuration, - dragOffset: dragOffset.value - }); - - // Если было реальное перетаскивание или долгое удержание, не обрабатываем как клик - if (hasActuallyMoved.value || totalMovement > 10 || dragDuration > 300) { - console.log('[SwipeView] Клик проигнорирован - было перетаскивание'); - return; - } - // Проверяем, что клик не был на элементах управления каруселью if (event.target.closest('.carousel-nav') || event.target.closest('.carousel-dots') || @@ -542,6 +525,38 @@ const handleCardClick = (event, user) => { return; } + // Проверяем, что в данный момент не происходит перетаскивание + if (isDragging.value || isPanning.value) { + console.log('[SwipeView] Клик проигнорирован - идет перетаскивание'); + return; + } + + // Проверяем, что было реальное движение только если dragStartTime был установлен + if (dragStartTime.value > 0) { + const dragDuration = Date.now() - dragStartTime.value; + const totalMovement = Math.sqrt( + Math.pow(dragOffset.value.x || 0, 2) + Math.pow(dragOffset.value.y || 0, 2) + ); + + console.log('[SwipeView] Проверка клика:', { + hasActuallyMoved: hasActuallyMoved.value, + totalMovement, + dragDuration, + dragOffset: dragOffset.value + }); + + // Если было реальное перетаскивание, не обрабатываем как клик + if (hasActuallyMoved.value || totalMovement > 10 || dragDuration < 300) { + console.log('[SwipeView] Клик проигнорирован - было перетаскивание'); + return; + } + } + + // Сбрасываем все состояния перетаскивания для чистого клика + dragStartTime.value = 0; + hasActuallyMoved.value = false; + dragOffset.value = { x: 0, y: 0 }; + // Открываем полный профиль пользователя console.log('[SwipeView] Переход к профилю пользователя:', user.name, user._id); try {