From a29bd9fffa81e54fe00d3f39d8d5d5211389bb04 Mon Sep 17 00:00:00 2001 From: N-Pex Date: Thu, 3 Dec 2020 22:12:50 +0100 Subject: [PATCH] Touch events --- package-lock.json | 11 --- package.json | 1 - src/components/Chat.vue | 73 +++++++++++++++---- src/components/messages/MessageOperations.vue | 5 +- src/main.js | 2 - 5 files changed, 61 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d60e55..749797d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,6 @@ "roboto-fontface": "*", "v-emoji-picker": "^2.3.1", "vue": "^2.6.11", - "vue-mobile-event": "^1.2.6", "vue-router": "^3.2.0", "vuetify": "^2.2.11", "vuex": "^3.5.1" @@ -13491,11 +13490,6 @@ "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", "dev": true }, - "node_modules/vue-mobile-event": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/vue-mobile-event/-/vue-mobile-event-1.2.6.tgz", - "integrity": "sha512-PRy/KAokz2xvfKREcg0l+biWVMWlb/7c2J0qq71JRG58TuU2MQQTiLvOyqaaf1kMuKqoKUfqfqj2BYC7rDPHcA==" - }, "node_modules/vue-property-decorator": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz", @@ -25652,11 +25646,6 @@ } } }, - "vue-mobile-event": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/vue-mobile-event/-/vue-mobile-event-1.2.6.tgz", - "integrity": "sha512-PRy/KAokz2xvfKREcg0l+biWVMWlb/7c2J0qq71JRG58TuU2MQQTiLvOyqaaf1kMuKqoKUfqfqj2BYC7rDPHcA==" - }, "vue-property-decorator": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz", diff --git a/package.json b/package.json index 9d07fcc..1a23876 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "roboto-fontface": "*", "v-emoji-picker": "^2.3.1", "vue": "^2.6.11", - "vue-mobile-event": "^1.2.6", "vue-router": "^3.2.0", "vuetify": "^2.2.11", "vuex": "^3.5.1" diff --git a/src/components/Chat.vue b/src/components/Chat.vue index 913cc42..c508f9f 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -4,15 +4,20 @@ class="chat-content flex-grow-1 flex-shrink-1" ref="chatContainer" style="overflow-x: hidden; overflow-y: auto" - v-on:scroll="onScroll" + v-on:sscroll="onScroll" >
-
-
+
+
-
+
@@ -251,16 +257,48 @@ export default { }, methods: { - touchTap(ignoredEvent) { - if (this.selectedEvent && this.showContextMenu) { - // If anything is selected, unselect - this.selectedEvent = null; + touchX(event) { + if(event.type.indexOf('mouse') !== -1){ + return event.clientX; + } + return event.touches[0].clientX; + }, + touchY(event) { + if(event.type.indexOf('mouse') !== -1){ + return event.clientY; + } + return event.touches[0].clientY; + }, + touchStart(e, event) { + console.log("TouchStart"); + if (this.selectedEvent != event) { this.showContextMenu = false; } - }, - - touchLongTap(event) { this.selectedEvent = event; + this.touchStartX = this.touchX(e); + this.touchStartY = this.touchY(e); + this.touchTimer = setTimeout(this.touchTimerElapsed, 500); + }, + touchEnd() { + console.log("TouchEnd"); + this.touchTimer && clearTimeout(this.touchTimer); + }, + touchCancel() { + console.log("TouchCancel"); + this.touchTimer && clearTimeout(this.touchTimer); + }, + touchMove(e) { + this.touchCurrentX = this.touchX(e); + this.touchCurrentY = this.touchY(e); + var tapTolerance = 4; + var touchMoved = Math.abs(this.touchStartX - this.touchCurrentX) > tapTolerance || + Math.abs(this.touchStartY - this.touchCurrentY) > tapTolerance; + if(touchMoved){ + this.touchTimer && clearTimeout(this.touchTimer); + } + }, + touchTimerElapsed() { + console.log('timer'); this.showContextMenu = true; }, @@ -319,13 +357,14 @@ export default { // Scrolled to top this.handleScrolledToTop(); } else if ( - container.scrollHeight - container.scrollTop == + container.scrollHeight - container.scrollTop.toFixed(0) == container.clientHeight ) { this.handleScrolledToBottom(false); } }, onEvent(event) { + console.log("OnEvent", event); if (event.getRoomId() !== this.roomId) { return; // Not for this room } @@ -333,11 +372,15 @@ export default { // If we are at bottom, scroll to see new events... const container = this.$refs.chatContainer; + var scrollToSeeNew = (event.getSender() == this.$matrix.currentUserId); // When we sent, scroll if ( - container.scrollHeight - container.scrollTop == + container.scrollHeight - container.scrollTop.toFixed(0) == container.clientHeight ) { - this.handleScrolledToBottom(true); + scrollToSeeNew = true; + } + if (event.forwardLooking) { + this.handleScrolledToBottom(scrollToSeeNew); } }, diff --git a/src/components/messages/MessageOperations.vue b/src/components/messages/MessageOperations.vue index 14c9cc6..91c2258 100644 --- a/src/components/messages/MessageOperations.vue +++ b/src/components/messages/MessageOperations.vue @@ -1,6 +1,6 @@