diff --git a/src/components/project.vue b/src/components/project.vue index 27cd1ae..633c416 100644 --- a/src/components/project.vue +++ b/src/components/project.vue @@ -25,6 +25,7 @@ export default { refreshRate: 60, lastUpdate: { unix_time: 0, relative_time: '', formatted_time: ''}, feedPanelOpen: false, + feedSwipe: {x: null, y: null}, settingsPanelOpen: false, track: null, markers: [], @@ -182,9 +183,6 @@ export default { this.$refs.feedSimpleBar?.scrollElement.removeEventListener('scroll', this.onFeedScroll); this.$refs.feedSimpleBar?.scrollElement.addEventListener('scroll', this.onFeedScroll); - //Mobile Touchscreen Events - //TODO - this.toggleFeedPanel(!this.isMobile(), 'none'); //Get first posts batch @@ -579,6 +577,25 @@ export default { if ((box.scrollTop + box.clientHeight) / (content?.offsetHeight || 1) >= 0.8) this.getNextFeed(); }, + onFeedTouchStart(oEvent) { + if(!this.isMobile() || !this.feedPanelOpen || oEvent.touches.length != 1) return; + + const oTouch = oEvent.touches[0]; + this.feedSwipe = {x: oTouch.clientX, y: oTouch.clientY}; + }, + onFeedTouchEnd(oEvent) { + const oTouch = oEvent.changedTouches[0]; + if(!oTouch || this.feedSwipe.x === null) return; + + const iDeltaX = oTouch.clientX - this.feedSwipe.x; + const iDeltaY = oTouch.clientY - this.feedSwipe.y; + + if(iDeltaX > 80 && Math.abs(iDeltaX) > Math.abs(iDeltaY) * 1.5) { + this.toggleFeedPanel(); + } + + this.feedSwipe = {x: null, y: null}; + }, setFeedUpdateTimer(iSeconds) { if(typeof this.feedTimer != 'undefined') clearTimeout(this.feedTimer); if(iSeconds >= 0) this.feedTimer = setTimeout(this.checkNewFeed, iSeconds * 1000); @@ -767,7 +784,7 @@ export default { {{ currProject.name }} -
+