Fix image links on Old Reddit

Fix opening redd.it image links on Old Reddit

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==UserScript==
// @name        Fix image links on Old Reddit
// @namespace   https://github.com/abdurazaaqmohammed
// @version     1.1.2
// @description Fix opening redd.it image links on Old Reddit
// @author      Abdurazaaq Mohammed
// @homepage    https://github.com/abdurazaaqmohammed/userscripts
// @license     The Unlicense
// @supportURL  https://github.com/abdurazaaqmohammed/userscripts/issues
// @match       https://*.reddit.com/*
// @exclude     https://www.reddit.com/*
// @exclude     https://new.reddit.com/*
// @run-at      document-start
// @grant       none
// ==/UserScript==

(function () {
  'use strict';

  function openImageViewer(imgLink) {
    // Uncomment below and comment/delete the other line if you want to redirect to the image directly instead of opening in a new tab.
    //window.location.href = 'https://abdurazaaqmohammed.github.io/imgviewer?viewimg=' + imgLink;
    window.open('https://abdurazaaqmohammed.github.io/imgviewer?viewimg=' + imgLink);
  }

  function fixImageLinks(mutationsList, observer) {
    document.querySelectorAll(".media-preview").forEach((gallery) => gallery.addEventListener("click", function() { openImageViewer(Array.from(gallery.querySelectorAll('img')).map(id => `${id.src.split('?')[0]}`).join(',')) }) );

    document.querySelectorAll('a[href^="https://preview.redd.it"], a[href^="https://i.redd.it"]').forEach(link => {
      const imgLink = link.href;
      // Overwriting the href would break copying the image link, so remove the old href and set onClick to open the viewer instead.
      link.removeAttribute("href");
      link.addEventListener("click", function() { openImageViewer(imgLink); });
    });
  }

  const url = window.location.href;
  const brokenImg = 'https://old.reddit.com/r/funny/comments/media/nice_hat/?url=';
  url.startsWith(brokenImg) ? window.location.href = 'https://abdurazaaqmohammed.github.io/imgviewer?viewimg=' + url.split(brokenImg)[1] : new MutationObserver(fixImageLinks).observe(document, { subtree: true, childList: true });

})();