NOTE: This doesn’t work fully.
- It only works if you go right to a post (or reload one); it doesn’t work if you start elsewhere on the site, and then click to a post.
- Something’s removing the ‘hide’ links from nested (i.e., not-top-level) comments.
// ==UserScript==
// @name LesserWrong Collapse Comments
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match *://www.lesserwrong.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var css = document.createElement("style");
css.type = "text/css";
css.innerHTML = ".comments-node { position: relative; } \n";
css.innerHTML += "input[type=checkbox].comments-collapse-checkbox { position: absolute; top: 4px; right: 30px; z-index: 2; } \n";
css.innerHTML += ".comments-collapse-checkbox, .comments-collapse-checkbox:checked { display: none; } \n";
css.innerHTML += ".comments-collapse-checkbox + label { position: absolute; top: 5px; right: 30px; z-index: 2; } \n";
css.innerHTML += ".comments-collapse-checkbox + label::before { content: 'hide'; } \n";
css.innerHTML += ".comments-collapse-checkbox:checked + label::before { content: 'show'; } \n";
css.innerHTML += ".comments-collapse-checkbox:checked ~ .comments-item > .comments-item-body > div:nth-of-type(n+2), .comments-collapse-checkbox:checked ~ .comments-children { display: none; } \n";
document.body.appendChild(css);
document.querySelectorAll(".comments-node").forEach(function(element) {
var element_id = element.getAttribute("data-reactid");
element.innerHTML = '<input type="checkbox" class="comments-collapse-checkbox" id="comments-collapse-checkbox-' + element_id + '" /> <label for="comments-collapse-checkbox-' + element_id + '"></label>' + element.innerHTML;
});
var commentsCollapseState = JSON.parse(document.cookie.replace(/(?:(?:^|.*;\s*)comments-collapse-state\s*\=\s*([^;]*).*$)|^.*$/, "$1"));
document.querySelectorAll(".comments-collapse-checkbox").forEach(function(checkbox) {
checkbox.checked = (commentsCollapseState[checkbox.getAttribute("id")] == '1');
checkbox.addEventListener( 'change', function() {
commentsCollapseState = JSON.parse(document.cookie.replace(/(?:(?:^|.*;\s*)comments-collapse-state\s*\=\s*([^;]*).*$)|^.*$/, "$1"));
if(this.checked) {
commentsCollapseState[checkbox.getAttribute("id")] = '1';
} else {
commentsCollapseState[checkbox.getAttribute("id")] = '0';
}
document.cookie = 'comments-collapse-state=' + JSON.stringify(commentsCollapseState) + '; expires=Fri, 3 Aug 2031 20:47:11 UTC; path=/';
});
});
})();