Add commafeed-tweaks.js
This commit is contained in:
59
commafeed-tweaks.js
Normal file
59
commafeed-tweaks.js
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* commafeed-tweaks.js
|
||||
*
|
||||
* Client-side behavior tweaks for CommaFeed (Athou/commafeed), applied from
|
||||
* outside the app bundle.
|
||||
*
|
||||
* Install (either):
|
||||
* 1. Paste this file's contents into Settings -> Custom code -> Custom JS.
|
||||
* CommaFeed serves it as `custom_js.js` and loads it after the app starts.
|
||||
* 2. Serve this file alongside the app and add
|
||||
* <script src="commafeed-tweaks.js"></script>
|
||||
* to index.html.
|
||||
*
|
||||
* All listeners attach to `window`, so load timing relative to React doesn't matter.
|
||||
*/
|
||||
(function () {
|
||||
'use strict'
|
||||
|
||||
if (window.__commafeedTweaksInstalled) return
|
||||
window.__commafeedTweaksInstalled = true
|
||||
|
||||
const log = (...args) => console.debug('[commafeed-tweaks]', ...args)
|
||||
|
||||
/**
|
||||
* Disable swipe-right-to-open the mobile sidebar.
|
||||
*
|
||||
* Upstream (pages/app/Layout.tsx) wraps the AppShell in a react-swipeable Box
|
||||
* whose touch listeners live on that element and open the menu on a rightward
|
||||
* swipe. We catch touchmove on window in the capture phase and stop propagation
|
||||
* of rightward-horizontal moves so they never reach that element. No
|
||||
* preventDefault, so native scrolling is untouched; leftward swipes still pass
|
||||
* through, so swipe-left-to-close keeps working.
|
||||
*/
|
||||
function disableSwipeToOpenMenu() {
|
||||
let startX = 0
|
||||
let startY = 0
|
||||
|
||||
window.addEventListener('touchstart', e => {
|
||||
const t = e.touches[0]
|
||||
if (!t) return
|
||||
startX = t.clientX
|
||||
startY = t.clientY
|
||||
}, { capture: true, passive: true })
|
||||
|
||||
window.addEventListener('touchmove', e => {
|
||||
const t = e.touches[0]
|
||||
if (!t) return
|
||||
const dx = t.clientX - startX
|
||||
const dy = t.clientY - startY
|
||||
if (dx > 0 && Math.abs(dx) > Math.abs(dy)) {
|
||||
e.stopPropagation()
|
||||
}
|
||||
}, { capture: true, passive: true })
|
||||
|
||||
log('swipe-to-open menu disabled')
|
||||
}
|
||||
|
||||
disableSwipeToOpenMenu()
|
||||
})()
|
||||
Reference in New Issue
Block a user