diff options
author | Claire <claire.github-309c@sitedethib.com> | 2022-10-11 19:22:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-11 19:22:48 +0200 |
commit | b01faa7375493ee91f7e9dfa32b0af3058c8d16f (patch) | |
tree | 42ef2359b2f85e5210172240b73ce735f1e92293 /app/javascript/flavours/glitch/is_mobile.js | |
parent | 94713940c7f28e9aff50071cf63d897c8e355ee6 (diff) | |
parent | e1db6cf320d5a1b3f7c87f4bd9e6f2f1a0c0585f (diff) |
Merge pull request #1862 from ClearlyClaire/glitch-soc/refactor/upstream-discrepancies
Refactor glitch-soc front-end to limit discrepancies with upstream
Diffstat (limited to 'app/javascript/flavours/glitch/is_mobile.js')
-rw-r--r-- | app/javascript/flavours/glitch/is_mobile.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/app/javascript/flavours/glitch/is_mobile.js b/app/javascript/flavours/glitch/is_mobile.js new file mode 100644 index 000000000..0d5663098 --- /dev/null +++ b/app/javascript/flavours/glitch/is_mobile.js @@ -0,0 +1,43 @@ +import { supportsPassiveEvents } from 'detect-passive-events'; +import { forceSingleColumn } from 'flavours/glitch/initial_state'; + +const LAYOUT_BREAKPOINT = 630; + +export const isMobile = width => width <= LAYOUT_BREAKPOINT; + +export const layoutFromWindow = (layout_local_setting) => { + switch (layout_local_setting) { + case 'multiple': + return 'multi-column'; + case 'single': + if (isMobile(window.innerWidth)) { + return 'mobile'; + } else { + return 'single-column'; + } + default: + if (isMobile(window.innerWidth)) { + return 'mobile'; + } else if (forceSingleColumn) { + return 'single-column'; + } else { + return 'multi-column'; + } + } +}; + +const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; + +let userTouching = false; +let listenerOptions = supportsPassiveEvents ? { passive: true } : false; + +const touchListener = () => { + userTouching = true; + window.removeEventListener('touchstart', touchListener, listenerOptions); +}; + +window.addEventListener('touchstart', touchListener, listenerOptions); + +export const isUserTouching = () => userTouching; + +export const isIOS = () => iOS; |