logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://hacktivis.me/git/pleroma-fe.git
commit: 7dd1a0dd30773fd51508feaf93be53bdb744ec79
parent 90b066a7443ecb37b1a72d3b306471d0ad75c68c
Author: Tusooa Zhu <tusooa@kazv.moe>
Date:   Sun, 20 Feb 2022 22:45:58 -0500

Prevent hiding media viewer if swiped over SwipeClick

Diffstat:

Msrc/components/media_modal/media_modal.js9+++++++++
Msrc/components/media_modal/media_modal.vue3++-
Msrc/services/gesture_service/gesture_service.js8+++++---
3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/components/media_modal/media_modal.js b/src/components/media_modal/media_modal.js @@ -76,6 +76,15 @@ const MediaModal = { this.$store.dispatch('closeMediaViewer') }, transitionTime) }, + hideIfNotSwiped (event) { + // If we have swiped over SwipeClick, do not trigger hide + const comp = this.$refs.swipeClick + if (!comp) { + this.hide() + } else { + comp.$gesture.click(event) + } + }, goPrev () { if (this.canNavigate) { const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1) diff --git a/src/components/media_modal/media_modal.vue b/src/components/media_modal/media_modal.vue @@ -2,10 +2,11 @@ <Modal v-if="showing" class="media-modal-view" - @backdropClicked="hide" + @backdropClicked="hideIfNotSwiped" > <SwipeClick v-if="type === 'image'" + ref="swipeClick" class="modal-image-container" :direction="swipeDirection" :threshold="swipeThreshold" diff --git a/src/services/gesture_service/gesture_service.js b/src/services/gesture_service/gesture_service.js @@ -81,7 +81,9 @@ class SwipeAndClickGesture { swipeEndCallback, swipeCancelCallback, swipelessClickCallback, - threshold = 30, perpendicularTolerance = 1.0 + threshold = 30, + perpendicularTolerance = 1.0, + disableClickThreshold = 1 }) { const nop = () => {} this.direction = direction @@ -90,6 +92,7 @@ class SwipeAndClickGesture { this.swipeCancelCallback = swipeCancelCallback || nop this.swipelessClickCallback = swipelessClickCallback || nop this.threshold = typeof threshold === 'function' ? threshold : () => threshold + this.disableClickThreshold = typeof disableClickThreshold === 'function' ? disableClickThreshold : () => disableClickThreshold this.perpendicularTolerance = perpendicularTolerance this._reset() } @@ -169,7 +172,6 @@ class SwipeAndClickGesture { return isPositive ? 1 : -1 })() - const swiped = this._swiped if (this._swiped) { this.swipeEndCallback(sign) } @@ -178,7 +180,7 @@ class SwipeAndClickGesture { // the end point is far from the starting point // so for other kinds of pointers do not check // whether we have swiped - if (swiped && event.pointerType === 'mouse') { + if (vectorLength(delta) >= this.disableClickThreshold() && event.pointerType === 'mouse') { this._preventNextClick = true } }