From c632fbff77780412c404d72fbc8c28eddbc731ab Mon Sep 17 00:00:00 2001 From: Punyapal Shah <53343069+MrPunyapal@users.noreply.github.com> Date: Thu, 5 Nov 2026 01:57:58 +0530 Subject: [PATCH] fix: ignore touch taps with out-of-order timestamps --- resources/js/lib/reactions.ts | 1 + tests/Unit/Reactions.test.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/resources/js/lib/reactions.ts b/resources/js/lib/reactions.ts index 3b40222219..34f48fc167 100644 --- a/resources/js/lib/reactions.ts +++ b/resources/js/lib/reactions.ts @@ -122,6 +122,7 @@ const doubleTapDistance = 24; export function isDoubleTap(previous: Tap | null, tap: Tap): boolean { return ( previous !== null && + tap.time >= previous.time && tap.time - previous.time <= doubleTapWithin && Math.hypot(tap.x - previous.x, tap.y - previous.y) <= doubleTapDistance ); diff --git a/tests/Unit/Reactions.test.ts b/tests/Unit/Reactions.test.ts index 5342441979..6bc45fe5a7 100644 --- a/tests/Unit/Reactions.test.ts +++ b/tests/Unit/Reactions.test.ts @@ -101,4 +101,5 @@ await test('takes two quick taps close together as a double tap', () => { assert.equal(isDoubleTap(first, { x: 100, y: 200, time: 1_400 }), false); assert.equal(isDoubleTap(first, { x: 160, y: 200, time: 1_100 }), false); assert.equal(isDoubleTap(null, first), false); + assert.equal(isDoubleTap(first, { x: 100, y: 200, time: 900 }), false); });