mirror of
https://github.com/miniflux/v2.git
synced 2025-06-27 16:36:00 +00:00
Add double tap detection for next/previous page navigation
This commit is contained in:
parent
22b68eefd8
commit
fc473f1d11
3 changed files with 40 additions and 8 deletions
|
@ -1,5 +1,6 @@
|
|||
class TouchHandler {
|
||||
constructor() {
|
||||
constructor(navHandler) {
|
||||
this.navHandler = navHandler;
|
||||
this.reset();
|
||||
}
|
||||
|
||||
|
@ -93,5 +94,36 @@ class TouchHandler {
|
|||
element.addEventListener("touchend", (e) => this.onTouchEnd(e), hasPassiveOption ? { passive: true } : false);
|
||||
element.addEventListener("touchcancel", () => this.reset(), hasPassiveOption ? { passive: true } : false);
|
||||
});
|
||||
|
||||
let entryContentElement = document.querySelector(".entry-content");
|
||||
if (entryContentElement) {
|
||||
let doubleTapTimers = {
|
||||
previous: null,
|
||||
next: null
|
||||
};
|
||||
|
||||
const detectDoubleTap = (doubleTapTimer, event) => {
|
||||
const timer = doubleTapTimers[doubleTapTimer];
|
||||
if (timer === null) {
|
||||
doubleTapTimers[doubleTapTimer] = setTimeout(() => {
|
||||
doubleTapTimers[doubleTapTimer] = null;
|
||||
}, 200);
|
||||
} else {
|
||||
event.preventDefault();
|
||||
this.navHandler.goToPage(doubleTapTimer);
|
||||
}
|
||||
};
|
||||
|
||||
entryContentElement.addEventListener("touchend", (e) => {
|
||||
if (e.changedTouches[0].clientX >= (entryContentElement.offsetWidth / 2)) {
|
||||
detectDoubleTap("next", e);
|
||||
} else {
|
||||
detectDoubleTap("previous", e);
|
||||
}
|
||||
}, hasPassiveOption ? { passive: false } : false);
|
||||
entryContentElement.addEventListener("touchmove", (e) => {
|
||||
Object.keys(doubleTapTimers).forEach(timer => doubleTapTimers[timer] = null);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue