let offset; let timelineElement = document.getElementById("messages"); function escapeHTML(content) { return content.replaceAll("&", "&").replaceAll("<", ">").replaceAll(">", "<"); } function getMessageHTML(messageJSON, canRespond) { return `
`; } function _updateURL_replaceElement(element, to) { let newElement = document.createElement(to); newElement.dataset.url = element.dataset.url; newElement.dataset.id = element.dataset.id; newElement.innerHTML = element.innerHTML; newElement.setAttribute("href", element.getAttribute("href")); if (to == "a") { newElement.classList.add("not-bold"); } element.replaceWith(newElement); } function updateURL(switchID) { let switchElement = document.getElementById("switch").querySelector(`[data-id="${switchID}"]`); for (const el of document.getElementById("switch").querySelectorAll("b")) { _updateURL_replaceElement(el, "a"); } _updateURL_replaceElement(switchElement, "b"); url = switchElement.dataset.url; fetchMessages(true); } function fetchMessages(fetchFromStart=false) { document.getElementById("refresh").setAttribute("disabled", ""); timelineElement.innerHTML = "Loading..." fetch(url + (fetchFromStart === true ? "" : `${url.includes("?") ? "&" : "?"}offset=${offset}`)) .then((response) => (response.json())) .then((json) => { if (json.success) { out = ""; if (json.messages.length == 0) { out = "No messages"; } else { for (const message of json.messages) { out += getMessageHTML(message, json.canRespond); offset = message.id; } } timelineElement.innerHTML = out; } else { timelineElement.innerText = "Something went wrong!"; } }) .catch((err) => { timelineElement.innerText = `Couldn't fetch timeline: ${err}`; document.getElementById("refresh").removeAttribute("disabled"); }); } fetchMessages(true); document.getElementById("refresh").addEventListener("click", (() => { fetchMessages(true); }));