Reddit Sort Comments by old

Append ?sort=old to all /comments/ links, waiting for feed to load

// ==UserScript==
// @name         Reddit Sort Comments by old
// @version      1.3
// @description  Append ?sort=old to all /comments/ links, waiting for feed to load
// @author       Rayman30
// @license      MIT
// @match        https://www.reddit.com/*
// @grant        none
// @run-at       document-end
// @namespace https://github.com/rayman1972
// ==/UserScript==
(function() {
  'use strict';

  /**
   * Rewrites all comment links so that, if they don't have a "sort" param,
   * we add "?sort=old".
   */
  function rewriteCommentLinks() {
    // Grab all anchor tags whose href includes "/comments/"
    const anchors = document.querySelectorAll('a[href*="/comments/"]');

    anchors.forEach(a => {
      try {
        const url = new URL(a.href);
        // If no sort param, set it to "old"
        if (!url.searchParams.has('sort')) {
          url.searchParams.set('sort', 'old');
          a.href = url.toString();
        }
      } catch (err) {
        // Ignore any invalid URLs
      }
    });

    console.log('[Reddit Sort=old] Rewrote comment links.');
  }

  /**
   * Initialize:
   * 1) Wait for window load to ensure initial feed is done.
   * 2) Rewrites links once.
   * 3) Sets a MutationObserver to catch newly inserted links (infinite scroll).
   */
  function init() {
    // First, rewrite links once on the "window.load" event
    window.addEventListener('load', () => {
      console.log('[Reddit Sort=old] Window load event fired. Rewriting links...');
      rewriteCommentLinks();
    });

    // Then keep an eye out for new content (infinite scrolling)
    const observer = new MutationObserver(() => {
      rewriteCommentLinks();
    });
    observer.observe(document.body, { childList: true, subtree: true });
  }

  // Start
  init();
})();