function updateStatusContainers() { let els = document.getElementsByClassName('status-container'); for (var n = 0; n < els.length; n++) { let pc = els[n]; let post_html = "" let horizontal_fill_count = ((pc.offsetWidth - 32) / 16); let url = pc.getElementsByTagName('url')[0].textContent; let marqueeHref = url == "Unnamed Task" ? window.location : url; if (url.substring(0,1) == '_') { url = url.substring(1); marqueeHref = window.location; } post_html += "\u2554"; for (var i = 0; i < (horizontal_fill_count / 2) - ((240 / 16) / 2); i++) { post_html += "\u2550"; } post_html += "" + url + "..."; for (var i = 0; i < (horizontal_fill_count / 2) - ((240 / 16) / 2) - 2; i++) { post_html += "\u2550"; } post_html += "[X]\u2557
"; let height = Math.ceil(pc.getElementsByClassName('status-content')[0].offsetHeight / 16); let desc = "Term"; for (var y = 0; y < height; y++) { let ch = y < 4 ? desc[y] : "\u2551"; post_html += "" + ch + "
\u2551

"; } post_html += "\u255a"; for (var i = 0; i < (horizontal_fill_count + 1); i++) { post_html += "\u2550"; } post_html += "\u255d
"; pc.innerHTML += post_html; pc.style.display = "inline"; } } function smolDate(a) { return a.split(" ago")[0].replace("a ", "1").replace("an ", "1").replace("days", "d").replace("day", "d").replace("hours", "h").replace("hour", "h").replace("minutes", "m").replace("minute", "m").replace("seconds", "s").replace("second", "s").replace("few", "").replace(" ", "") }; function updateStatuses(user, statuses, shouldSort=true) { let pageContent = document.getElementsByClassName("page-content")[0]; let elements = document.createElement('div'); let container = document.createElement('div'); container.className = "status-container"; // Render user profile if (user != "") { let content = document.createElement('div'); content.className = "status-content"; let content_html = ""; content_html += "
"; content_html += "
" + user["preferredUsername"] + "
@" + user["preferredUsername"] + "@" + location.host + "
" content_html += "
" + user["summary"] + "
"; content_html += "
Joined " + new Date(Date.parse(user["published"])).toString().substr(0, 15) + "
"; content.innerHTML = content_html; let url = document.createElement('url'); url.textContent = window.location; let menuImg = document.createElement('img'); menuImg.className = "text-menu"; content.appendChild(menuImg); container.appendChild(content); container.appendChild(url); elements.appendChild(container); let spacer = document.createElement('div'); spacer.style.height = "16px"; elements.appendChild(spacer); } elements.className = "statuses"; if (shouldSort) { statuses.sort((a, b) => b.id - a.id); } for (var i = 0; i < statuses.length; i++) { let status = statuses[i]; if (statuses[i]["reblog"]) { status = statuses[i]["reblog"]; } let container = document.createElement('div'); container.className = "status-container"; let content = document.createElement('div'); content.className = "status-content"; let content_html = ""; if (statuses[i]["reblog"]) { content_html += "🚀 " + statuses[i]["reblog"]["account"]["username"] + "
@" + statuses[i]["reblog"]["account"]["acct"] + "
"; } else { if (status["visibility"] == "public") { content_html += "🌎 "; } } content_html += "" + smolDate(dayjs(status["created_at"]).fromNow()) + "
"; content_html += "
" + status["content"]; if (!!status["media_attachments"] && status["media_attachments"].length) { for (var x = 0; x < status["media_attachments"].length; x++) { let original = status["media_attachments"][x]["meta"]["original"]; content_html += "
"; } } content_html += ""; if (user != "") { content_html += "💬 " + status["replies_count"] + " 🚀 " + status["reblogs_count"] + " ⭐ " + status["favourites_count"] + ""; } if (status["application"] && status["application"]["website"]) { content_html += ""; } content.innerHTML = content_html; let url = document.createElement('url'); url.textContent = status["url"]; let menuImg = document.createElement('img'); menuImg.className = "text-menu"; content.appendChild(menuImg); container.appendChild(content); container.appendChild(url); elements.appendChild(container); if (i < statuses.length - 1) { let spacer = document.createElement('div'); spacer.style.height = "16px"; elements.appendChild(spacer); } } if (!statuses.length) { let container = document.createElement('div'); container.className = "status-container"; let content = document.createElement('div'); content.className = "status-content"; let content_html = ""; content_html += "
&FileRead &StatusRead &StatusPrint &ExeCmdLine No statuses found.\n " + Math.random().toFixed(6) + "s ans=0x00000000=0
C:/Home>
"; content.innerHTML = content_html; let url = document.createElement('url'); url.textContent = "Unnamed Task"; let menuImg = document.createElement('img'); menuImg.className = "text-menu"; content.appendChild(menuImg); container.appendChild(content); container.appendChild(url); elements.appendChild(container); } pageContent.innerHTML = ""; pageContent.appendChild(elements); updateStatusContainers(); } function getStatuses(user) { fetch("https://error.checksum.fail/api/v1/accounts/" + user["accountId"] + "/statuses", { method: 'GET', headers: { 'Accept': 'application/json' } }) .then(response => response.json()) .then(data => updateStatuses(user, data)); } function updateStatusWithReplies(user, status, replies) { updateStatuses(user, [status].concat(replies), false); } function getRepliesForStatus(user, status) { fetch("https://error.checksum.fail/api/v1/statuses/" + status.id + "/context", { method: 'GET', headers: { 'Accept': 'application/json' } }) .then(response => response.json()) .then(data => updateStatusWithReplies(user, status, data["descendants"])); } function getStatusById(id, user) { fetch("https://error.checksum.fail/api/v1/statuses/" + id, { method: 'GET', headers: { 'Accept': 'application/json' } }) .then(response => response.json()) .then(data => getRepliesForStatus(user, data)) }