From a82149c05de0147693b535670a6e1b2a02686368 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator Date: Mon, 22 Aug 2022 22:09:43 -0700 Subject: [PATCH] fix: :bug: fix scrolling bugs --- package.json | 2 +- packages/client/src/pages/timeline.vue | 8 ++++---- packages/client/src/ui/universal.vue | 21 ++++++++++++++++++++- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 93ba8755c..5295936e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "12.118.1-calc.11.6", + "version": "12.118.1-calc.12", "codename": "aqua", "repository": { "type": "git", diff --git a/packages/client/src/pages/timeline.vue b/packages/client/src/pages/timeline.vue index 5f2898a8a..12268b673 100644 --- a/packages/client/src/pages/timeline.vue +++ b/packages/client/src/pages/timeline.vue @@ -248,9 +248,9 @@ if (isMobile.value) { } function handleTouchMove(evt) { - if (!xDown || !yDown) { - return; - } + if (!xDown || !yDown) return; + + if (['INPUT', 'TEXTAREA', 'IMG', 'VIDEO', 'CANVAS'].includes(evt.target.tagName) || evt.target.attributes['contenteditable']) return; let xUp = evt.touches[0].clientX; let yUp = evt.touches[0].clientY; @@ -274,7 +274,7 @@ if (isMobile.value) { timelines.push('global'); } - if (Math.abs(xDiff) > Math.abs(yDiff)) { + if (Math.abs(xDiff) > Math.abs(yDiff) && Math.abs(xDiff) > 100) { if (xDiff < 0) { if (src === 'home') { next = 'global'; diff --git a/packages/client/src/ui/universal.vue b/packages/client/src/ui/universal.vue index d0cba07fc..f856632e0 100644 --- a/packages/client/src/ui/universal.vue +++ b/packages/client/src/ui/universal.vue @@ -140,9 +140,28 @@ onMounted(() => { window.addEventListener('scroll', () => { let windowY = window.scrollY; - postButton.style.transform = `scale(${windowY < scrollPos ? '1' : '0'})`; + postButton.style.transform = `scale(${windowY < scrollPos ? '1' : '0.3'})`; scrollPos = windowY; }, { passive: true }); + + function createScrollStopListener(element: Window, callback: TimerHandler, timeout: number): () => void { + let handle = 0; + const onScroll = () => { + if (handle) { + clearTimeout(handle); + } + postButton.style.transform = 'scale(0.3)'; + handle = setTimeout(callback, timeout || 200); + }; + element.addEventListener('scroll', onScroll, { passive: true }); + return () => { + element.removeEventListener('scroll', onScroll); + }; + } + + createScrollStopListener(window, () => { + postButton.style.transform = 'scale(1)'; + } , 200); } });