Squidi Comics Keyboard

Adds Left and Right shortcuts for navigating view pages

// ==UserScript==
// @name        Squidi Comics Keyboard
// @namespace   me.kroltan.squidi-kb
// @description Adds Left and Right shortcuts for navigating view pages
// @include     http://www.squidi.net/comic/*
// @version     1
// @grant       none
// ==/UserScript==

const PREVIOUS_KEYCODE = 37;
const NEXT_KEYCODE = 39;

const textEquals = cmp => (l => l.innerText.toLowerCase() === cmp);

const links = [...document.querySelectorAll(`a[href*="${location.pathname}"]`)];
const previousEl = links.filter(textEquals("prev"))[0];
const nextEl = links.filter(textEquals("next"))[0];

const header = document.querySelector('font[size="2"]');
header.innerHTML += `
  <label title="Use arrow keys for navigation, previous/next comics">
    <input type="checkbox" />
    Enable shortcuts
  </label>
`;
const enableBox = header.querySelector("input");
enableBox.checked = JSON.parse(localStorage.getItem("shortcuts_enabled"));
enableBox.addEventListener("change", event => {
  localStorage.setItem("shortcuts_enabled", JSON.stringify(enableBox.checked));
})

if (previousEl && nextEl) {
  document.body.addEventListener("keyup", event => {
    let link = null;
    switch (event.which) {
      case PREVIOUS_KEYCODE:
        link = previousEl;
        break;
      case NEXT_KEYCODE:
        link = nextEl;
        break;
      default: break;
    }
    if (link && enableBox.checked) {
      link.click();
    }
  });
}