[Glitch] fix: support KaiOS arrow navigation on public pages

Port 1e232e455c to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
This commit is contained in:
Nolan Lawson 2019-11-04 04:03:09 -08:00 committed by Thibaut Girka
parent 734181c3bf
commit ec567337dc
3 changed files with 30 additions and 6 deletions

View File

@ -1,5 +1,6 @@
import loadPolyfills from 'flavours/glitch/util/load_polyfills'; import loadPolyfills from 'flavours/glitch/util/load_polyfills';
import ready from 'flavours/glitch/util/ready'; import ready from 'flavours/glitch/util/ready';
import loadKeyboardExtensions from 'flavours/glitch/util/load_keyboard_extensions';
function main() { function main() {
const IntlMessageFormat = require('intl-messageformat').default; const IntlMessageFormat = require('intl-messageformat').default;
@ -118,6 +119,9 @@ function main() {
}); });
} }
loadPolyfills().then(main).catch(error => { loadPolyfills()
.then(main)
.then(loadKeyboardExtensions)
.catch(error => {
console.error(error); console.error(error);
}); });

View File

@ -1,5 +1,6 @@
import loadPolyfills from 'flavours/glitch/util/load_polyfills'; import loadPolyfills from 'flavours/glitch/util/load_polyfills';
import ready from 'flavours/glitch/util/ready'; import ready from 'flavours/glitch/util/ready';
import loadKeyboardExtensions from 'flavours/glitch/util/load_keyboard_extensions';
function main() { function main() {
const { delegate } = require('rails-ujs'); const { delegate } = require('rails-ujs');
@ -15,6 +16,9 @@ function main() {
}); });
} }
loadPolyfills().then(main).catch(error => { loadPolyfills()
.then(main)
.then(loadKeyboardExtensions)
.catch(error => {
console.error(error); console.error(error);
}); });

View File

@ -0,0 +1,16 @@
// On KaiOS, we may not be able to use a mouse cursor or navigate using Tab-based focus, so we install
// special left/right focus navigation keyboard listeners, at least on public pages (i.e. so folks
// can at least log in using KaiOS devices).
function importArrowKeyNavigation() {
return import(/* webpackChunkName: "arrow-key-navigation" */ 'arrow-key-navigation');
}
export default function loadKeyboardExtensions() {
if (/KAIOS/.test(navigator.userAgent)) {
return importArrowKeyNavigation().then(arrowKeyNav => {
arrowKeyNav.register();
});
}
return Promise.resolve();
}