From 665184f3608f3e54f6fb1849d9513a1bb8baa103 Mon Sep 17 00:00:00 2001 From: frederik Date: Wed, 10 Apr 2024 08:30:56 +0200 Subject: [PATCH] fix: ignore y-swipes and scrolls --- homepage/views.php | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/homepage/views.php b/homepage/views.php index fa842d6..25cd21e 100644 --- a/homepage/views.php +++ b/homepage/views.php @@ -406,25 +406,35 @@ function installKeyAndSwipeEventHandler() { getTheDate(+1); break; } - } + }; // https://stackoverflow.com/questions/2264072/detect-a-finger-swipe-through-javascript-on-the-iphone-and-android - let touchstartX = 0 - let touchendX = 0 + let touchstartX = 0; + let diffX = 0; + let touchstartY = 0; + let diffY = 0; + let startTime = 0; + let diffTime = 0; function checkDirection() { - if (touchendX < touchstartX) getTheDate(+1); - if (touchendX > touchstartX) getTheDate(-1); + if (Math.abs(diffX) > Math.abs(diffY) && diffTime < 500) { + if (diffX > 20) getTheDate(+1); + if (diffX < -20) getTheDate(-1); + } } document.addEventListener('touchstart', e => { - touchstartX = e.changedTouches[0].screenX - }) + touchstartX = e.changedTouches[0].screenX; + touchstartY = e.changedTouches[0].screenY; + startTime = Date.now(); + }); document.addEventListener('touchend', e => { - touchendX = e.changedTouches[0].screenX - checkDirection() - }) + diffX = touchstartX - e.changedTouches[0].screenX; + diffY = touchstartY - e.changedTouches[0].screenY; + diffTime = Date.now() - startTime; + checkDirection(); + }); } } }