From 9329826ce3f872a7c3d8e308470e76f50803534c Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Tue, 9 May 2023 21:36:11 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Improve=20`useLongPress`=20hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{utils => hooks}/useLongPress/index.jsx | 36 +++++++++++-------- packages/app/src/utils/index.js | 1 - 2 files changed, 22 insertions(+), 15 deletions(-) rename packages/app/src/{utils => hooks}/useLongPress/index.jsx (66%) diff --git a/packages/app/src/utils/useLongPress/index.jsx b/packages/app/src/hooks/useLongPress/index.jsx similarity index 66% rename from packages/app/src/utils/useLongPress/index.jsx rename to packages/app/src/hooks/useLongPress/index.jsx index 258719c7..620ba212 100755 --- a/packages/app/src/utils/useLongPress/index.jsx +++ b/packages/app/src/hooks/useLongPress/index.jsx @@ -5,7 +5,7 @@ export default ( onClick, { shouldPreventDefault = true, - delay = 300, + delay = app.cores.settings.get("longPressDelay") ?? 500, onTouchStart, onTouchEnd, } = {} @@ -28,27 +28,35 @@ export default ( } timeout.current = setTimeout(() => { - onLongPress(event) + if (typeof onLongPress === "function") { + onLongPress(event) + } + setLongPressTriggered(true) }, delay) }, [onLongPress, delay, shouldPreventDefault] ) - const clear = useCallback( - (event, shouldTriggerClick = true) => { - timeout.current && clearTimeout(timeout.current) - shouldTriggerClick && !longPressTriggered && onClick() - setLongPressTriggered(false) + const clear = useCallback((event, shouldTriggerClick = true) => { + if (timeout.current) { + clearTimeout(timeout.current) + } - if (typeof onTouchEnd === "function") { - onTouchEnd() - } + if (shouldTriggerClick && !longPressTriggered && typeof onClick === "function") { + onClick() + } - if (shouldPreventDefault && target.current) { - target.current.removeEventListener("touchend", preventDefault) - } - }, + setLongPressTriggered(false) + + if (typeof onTouchEnd === "function") { + onTouchEnd() + } + + if (shouldPreventDefault && target.current) { + target.current.removeEventListener("touchend", preventDefault) + } + }, [shouldPreventDefault, onClick, longPressTriggered] ) diff --git a/packages/app/src/utils/index.js b/packages/app/src/utils/index.js index 8fb59bc7..5bf0b661 100755 --- a/packages/app/src/utils/index.js +++ b/packages/app/src/utils/index.js @@ -1,4 +1,3 @@ -export { default as useLongPress } from "./useLongPress" export { default as findChildById } from "./findChildById" export { default as cursorPosition } from "./cursorPosition" export { default as getBase64 } from "./getBase64"