]> cat aescling's git repositories - mastodon.git/commitdiff
[Glitch] fix: support KaiOS arrow navigation on public pages
authorNolan Lawson <nolan@nolanlawson.com>
Mon, 4 Nov 2019 12:03:09 +0000 (04:03 -0800)
committerThibaut Girka <thib@sitedethib.com>
Wed, 6 Nov 2019 13:59:57 +0000 (14:59 +0100)
Port 1e232e455cfa75621264a0b90b783b21ebd5ea87 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
app/javascript/flavours/glitch/packs/public.js
app/javascript/flavours/glitch/packs/settings.js
app/javascript/flavours/glitch/util/load_keyboard_extensions.js [new file with mode: 0644]

index 767fb023c20863140e281850f795fb497dd0f1a4..973d6ee462181a936669642a252b795e144622ea 100644 (file)
@@ -1,5 +1,6 @@
 import loadPolyfills from 'flavours/glitch/util/load_polyfills';
 import ready from 'flavours/glitch/util/ready';
+import loadKeyboardExtensions from 'flavours/glitch/util/load_keyboard_extensions';
 
 function main() {
   const IntlMessageFormat = require('intl-messageformat').default;
@@ -118,6 +119,9 @@ function main() {
   });
 }
 
-loadPolyfills().then(main).catch(error => {
-  console.error(error);
-});
+loadPolyfills()
+  .then(main)
+  .then(loadKeyboardExtensions)
+  .catch(error => {
+    console.error(error);
+  });
index b32f38226c80a9f47ade3e6f7486ac08e94d2d72..edf1b82e09b583773a18593eda0528925fbed518 100644 (file)
@@ -1,5 +1,6 @@
 import loadPolyfills from 'flavours/glitch/util/load_polyfills';
 import ready from 'flavours/glitch/util/ready';
+import loadKeyboardExtensions from 'flavours/glitch/util/load_keyboard_extensions';
 
 function main() {
   const { delegate } = require('rails-ujs');
@@ -15,6 +16,9 @@ function main() {
   });
 }
 
-loadPolyfills().then(main).catch(error => {
-  console.error(error);
-});
+loadPolyfills()
+  .then(main)
+  .then(loadKeyboardExtensions)
+  .catch(error => {
+    console.error(error);
+  });
diff --git a/app/javascript/flavours/glitch/util/load_keyboard_extensions.js b/app/javascript/flavours/glitch/util/load_keyboard_extensions.js
new file mode 100644 (file)
index 0000000..2dd0e45
--- /dev/null
@@ -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();
+}