rDrama/files/assets/js/comments.js
TLSM 72b46a6888 Implement client-side collapsed comment memory.
Fixes #290. h/t Suspicious Turtle for initial implementation.
2022-09-09 19:47:26 -05:00

59 lines
1.6 KiB
JavaScript

var closedCommentsKey = null;
var closedComments = [];
function collapsedCommentStorageInit(pageKey) {
closedCommentsKey = `closedcomments_${pageKey}`;
}
function collapsedCommentStorageApply() {
if (!closedCommentsKey) {
return;
}
var closedCommentsValue = localStorage.getItem(closedCommentsKey);
if (closedCommentsValue === null) {
closedComments = [];
} else {
closedComments = JSON.parse(closedCommentsValue);
}
closedComments.forEach((commentId) => {
try {
document.getElementById(`comment-${commentId}`).classList.add("collapsed");
} catch (e) {}
})
}
function collapse_comment(id, element) {
const closed = element.classList.toggle("collapsed")
const top = element.getBoundingClientRect().y
if (closed && top < 0) {
element.scrollIntoView()
window.scrollBy(0, - 100)
}
const flags = document.getElementById(`flaggers-${id}`)
if (flags) flags.classList.add('d-none')
if (closed && !closedComments.includes(id)) {
closedComments.push(id);
} else if (!closed && closedComments.includes(id)) {
closedComments.splice(closedComments.indexOf(id), 1);
}
if (closedCommentsKey) {
localStorage.setItem(closedCommentsKey, JSON.stringify(closedComments));
}
};
function expandMarkdown(t,id) {
let ta = document.getElementById('markdown-'+id);
ta.classList.toggle('d-none');
autoExpand(ta);
document.getElementsByClassName('text-expand-icon-'+id)[0].classList.toggle('fa-expand-alt');
document.getElementsByClassName('text-expand-icon-'+id)[0].classList.toggle('fa-compress-alt');
let val = t.getElementsByTagName('span')[0]
if (val.innerHTML == 'View source') val.innerHTML = 'Hide source'
else val.innerHTML = 'View source'
};