Links to Next and Previous Posts

Add links to next and previous posts to each post

// ==UserScript==
// @name         Links to Next and Previous Posts
// @namespace    https://greasyfork.org/en/users/163551-vannius
// @version      1.51
// @license      MIT
// @description  Add links to next and previous posts to each post
// @author       Vannius
// @match        https://www.alternatehistory.com/forum/threads/*
// @match        https://forums.spacebattles.com/threads/*
// @grant        none
// ==/UserScript==

(function () {
    if (window.location.host === "www.alternatehistory.com") {
        // Get hash links from divTags and store in hashLinks
        const divTags = document.getElementsByClassName('messageBarNumber');
        const hashLinks = Array.from(divTags).map((element) => element.children[0].href);
        // Very first post of thread's divTag.children[0].href don't have #.
        if (window.location.href.split('/')[6] === '') hashLinks[0] += '#' + divTags[0].parentNode.parentNode.id;

        for (let i = 0; i < divTags.length; i++) {
            // Add a link to next post
            if (i !== divTags.length - 1) {
                const nextPost = document.createElement('a');
                nextPost.title = "Next post";
                nextPost.href = hashLinks[i + 1];
                nextPost.appendChild(document.createTextNode('▼'));
                divTags[i].appendChild(nextPost);
            }
            // Add a link to prev post
            if (i !== 0) {
                const prevPost = document.createElement('a');
                prevPost.title = "Prev post";
                prevPost.href = hashLinks[i - 1];
                prevPost.appendChild(document.createTextNode('▲'));
                const fragment = document.createDocumentFragment();
                fragment.appendChild(prevPost);
                fragment.appendChild(document.createTextNode('\n'));
                divTags[i].insertBefore(fragment, divTags[i].children[0]);
            }
            // Add a link to current post
            if (i === 0 || i === divTags.length - 1) {
                const currentPost = document.createElement('a');
                currentPost.title = "Current post";
                currentPost.href = hashLinks[i];
                currentPost.appendChild(document.createTextNode('◈'));
                if (i === 0) {
                    const fragment = document.createDocumentFragment();
                    fragment.appendChild(currentPost);
                    fragment.appendChild(document.createTextNode('\n'));
                    divTags[i].insertBefore(fragment, divTags[i].children[0]);
                } else if (i === divTags.length - 1) {
                    divTags[i].appendChild(currentPost);
                }
            }
        }
    } else if (window.location.host === "forums.spacebattles.com") {
        // Get message ids from messageTags and make in hashLinks
        const messageTags = [...document.querySelectorAll('.message-attribution-opposite--list > li')]
            .filter(x => /^#[\d,]+$/.test(x.textContent.trim()));
        const hashLinks = messageTags.map(x => '#' + x.closest('article').id);

        for (let i = 0; i < messageTags.length; i++) {
            // Add a link to next post
            if (i !== messageTags.length - 1) {
                const nextPost = document.createElement('a');
                nextPost.title = "Next post";
                nextPost.href = hashLinks[i + 1];
                nextPost.appendChild(document.createTextNode('▼'));
                const liTag = document.createElement('li');
                liTag.appendChild(nextPost);
                messageTags[i].parentElement.appendChild(liTag);
            }

            // Add a link to prev post
            if (i !== 0) {
                const prevPost = document.createElement('a');
                prevPost.title = "Prev post";
                prevPost.href = hashLinks[i - 1];
                prevPost.appendChild(document.createTextNode('▲'));
                const liTag = document.createElement('li');
                liTag.appendChild(prevPost);
                messageTags[i].parentElement.insertBefore(liTag, messageTags[i]);
            }

            // Add a link to current post
            if (i === 0 || i === messageTags.length - 1) {
                const currentPost = document.createElement('a');
                currentPost.title = "Current post";
                currentPost.href = hashLinks[i];
                currentPost.appendChild(document.createTextNode('◈'));
                const liTag = document.createElement('li');
                liTag.appendChild(currentPost);
                if (i === 0) {
                    messageTags[i].parentElement.insertBefore(liTag, messageTags[i]);
                } else if (i === messageTags.length - 1) {
                    messageTags[i].parentElement.appendChild(liTag);
                }
            }
        }
    }
})();